1. platform总线驱动框架
1.1 为什么用platform总线
Linux设备驱动框架模式是“驱动总线+设备驱动”,因此,一个设备驱动通常是挂接对应的设备总线上,如常用的总线USB、I2C、SPI、UART。对于嵌入式系统,存在很多外设并不存在实际的“总线”,只是依附在MPU内存空间中,如LED、按键、ADC等。当然,这一类驱动也可以不遵循“总线+驱动”的模式,弊端是不便于系统管理和增加代码繁琐。
因此,Linux内核从2.6版本开始,提供一种虚拟总线,即“platform”总线,使得不存在实际总线的外设驱动遵循标准驱动框架,可以使用标准接口,便于内核管理,同时外设驱动程序也提供标准的访问接口,提高驱动和资源的独立性,降低驱动耦合度,使得驱动具备较高的可移植性和安全性。platform总线抽象出总线、设备、驱动即paltform_bus、platform_device和platform_driver,paltform_bus Linux内核已经提供,而驱动工程师要做的工作是实现platform_device和platform_driver,大多数情况下下我们写驱动其实就是适配platform总线驱动。