Linux 驱动的软件架构

Posted Wu_Being

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 驱动的软件架构相关的知识,希望对你有一定的参考价值。

Linux 驱动的软件架构

Linux 设备驱动非常重视软件的可用性和跨平台能力。

1. Linux 设备和驱动的分离

把设备端的信息从驱动里剥离出来,让驱动以某种标准化的方法拿到这些信息。即Linux的总线、设备和驱动模型,总线负责匹配设备和驱动,驱动以标准的途径拿到板级信息。

2. Linux 驱动的分层

如输入子系统,提炼一个Input的核心层,把Linux 接口和整个input事件的汇报机制都实现在这里。

3. Linux 设备驱动的主机、外设驱动分离

主机控制器驱动不关心外设,外设驱动也不关心主机,只是通过核心层的通用API进行数据传输。如果有m个主机控制器、n个外设,分离的结果就是m+n 个驱动,不分离就是m*n个驱动。

platform 设备驱动

Soc 集成了一些独立外设的控制器和挂在SoC内存空间的外设等不依赖与PCI/USB/I2C/SPI等设备总线,Linux 发明了一种虚拟总线,称为platform 总线

对应的设备叫做platform_device,对应的驱动叫做platform_driver。

platform_device 并不是字符设备、块设备和网络设备等并列概念,而是linux 提供的附加手段,比如Soc 内部集成的I2C、RTC、LCD、看门狗等控制器都归纳为platform_device,他们本身就是字符设备。

附PPT: https://www.renrendoc.com/paper/175198950.html
相关代码Softwave-Architecture

以上是关于Linux 驱动的软件架构的主要内容,如果未能解决你的问题,请参考以下文章