Linux设备驱动的软件架构思想与设备驱动的基础内容总结
Linux是一个兼容性特别强的一个系统,而兼容性的实现与驱动强大的适应性密不可分。而这个具体的实现是离不开 总线bus和类class的管理方式。
Linux使用bus统一的管理一系列相似的驱动和设备,而又将具有同一类设备特色的设备利用同一个类class进行管理。 设备驱动模型中,每一种总线的注册函数中都将关于使用此总线进行管理的设备的公共部分进行了封装,而留给了驱动开发者进行一些设备独有的信息的填充接口。
通过总线的管理,驱动只用管驱动,设备只管设备,总线则负责匹配驱动和设备,而驱动则以标准的途径拿取设备的板载信息,这样驱动就可以匹配多个不同的设备了。
关于设备和驱动的匹配,以paltform平台总线为例简单的分析如下:
在驱动的注册函数 platform_driver_register(struct platform_driver *drv)的实现中,驱动框架为我完成了一部分通用的程序操作。 将与驱动相关的一些信息进行了填充,对回调函数进行了赋值,最后注册了驱动:
Ret=platform_driver_register(&sunxi_keyboard_driver)
#