日期:2014-05-16 浏览次数:20703 次
linux简单字符驱动很简单,只需要在初始化时对物理地址进行映射,再注册一个fileopenration操作集,然后就和写裸机程序一样实现操作集就可以了。
问题一:为什么要进行物理地址到虚拟地址的映射? 因为引入了MMU内存管理,只允许用户操作虚拟地址。
问题二:为什么要引入MMU,而不让用户直接操作物理地址?
因为内存管理非常复杂,主要是为了安全考虑。假如:驱动甲用到了一块物理地址0x20000000进行操作,驱动乙也刚好用到了这块物理地址。这种情况怎么办?注意,这时候并不会报错,可能发生的事情不可预料。而用虚拟地址为种情况就可以避免发生了,该物理地址要是已有人用,内核会提醒映射失败用户则可以考虑另选一块物理地址映射。百度的结果:第一,是安全。第二,便捷。第三,统一通用。第四,方便管理。第五,便于应用…
可是这么简单的驱动你几乎是在linux内核里看不到了,几乎所有内核带的驱动都是平台驱动.(你自己写的除外)