平时一般都使用字符设备框架来编写简单的IO读写驱动,如果遇到复杂的总线设备时, 仅有字符设备框架是应付不过来的,复用性也很难保证,不符合linux的设计思想。比如,SPI总线挂载了多个设备时,这些设备的驱动实现就需要用到驱动分离的思想,为此linux内核提供了platform机制
一,驱动分离思想:linux内核分离思想
1,描述
我们点亮LED实验中的驱动,到底是IO驱动还是LED的驱动呢?暂时结合起来看作是IO_LED驱动,这时候又用到按键设备,又有了IO_KEY驱动, 要使用蜂鸣器,就会出现IO_BUZZER驱动,每多一个设备,就会多一个IO_XXX驱动。这些IO_XXX驱动中,IO的部分几乎是一样的,为了保证代码的简洁,把IO的部分单独拎出来,写成一个IO驱动,然后设备的驱动就只剩下设备自身的内容,只需要调用IO驱动中的接口即可。
linux的一大卖点是方便移植,现在需要在其他的硬件平台上运行使用返些设备驱动又会发成什么情况呢。不同厂家SOC上的GPIO底层的实现都有所差别,那每出现一个新的SOC,就需要重写一个 GPIO驱动。显然这是无法避免的,但是这些GPIO驱动中,还是有共同的部分,即IO和设备间的接口,把这些 GPIO 中的接口部分再拎出来,单独写成一个驱动。
本文详细介绍了Linux内核中的platform机制,包括驱动分离思想、设备树下的platform、platform模型,以及如何在设备树中描述设备信息。重点讨论了platform_device和platform_driver数据结构,以及如何注册和注销。此外,还提到了在驱动程序和应用程序中的实现方法。
订阅专栏 解锁全文
1530

被折叠的 条评论
为什么被折叠?



