单片机驱动与Linux驱动的区别
1. MCU与MPU的区别
首先我们先聊一下MCU与MPU之间的区别然后在去关心两者的驱动的不同。MCU(微控制器)就是我们经常所见到的单片机,包括51,32,430等。MPU(微处理器)就是比较高端的ARM,比如ARM9, ARM11, ARM Cortex A系列等等。MCU与MPU的最重要的区别是:MPU和MCU的区别是前者多了两个部件:Cache(缓存)和MMU(内存管理单元)。加入缓存是因为处理器速度比内存速度大得多,所以引入了缓存。
在ARM领域, Linux编程的时候,就会看到虚拟地址。单片机中所用的地址都是物理地址,但是ARM里面启动MMU之后,我们看到的地址都是虚拟地址,经过MMU以后才是具体的物理地址。
2. 单片机驱动与Linux驱动的区别
① 单片机驱动很简单,直接操作物理地址的寄存器就可以了,代码量少;Linux驱动因为引入了虚拟地址与MMU,所以需要操作虚拟地址,经过MMU转化为实际物理地址才可以对寄存器进行操作,而且Linux代码量非常大(现对于单片机来讲);
② Linux驱动中,设备和驱动是分离的,而且驱动中也是分层的;
③ Linux内核中提供了大量的驱动接口,这对Linux驱动的开发带来的巨大的便利,这是单片机驱动中所没有的。