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 驱动的软件架构的主要内容,如果未能解决你的问题,请参考以下文章

Linux 驱动的软件架构

Linux 驱动的软件架构

[架构之路-36]:目标系统 - 系统软件 - Linux OS硬件驱动程序架构中隐藏的六大“分离”的思想与主要的驱动程序框架案例分析

[架构之路-45]:目标系统 - 系统软件 - Linux OS硬件设备驱动-网络驱动程序模型网络数据包的收发流程

Linux Framebuffer驱动框架之二软件架构(未完待续)

[架构之路-35]:目标系统 - 系统软件 - Linux OS内核模块与内核设备驱动程序,一切皆文件,Linux虚拟文件系统与统一设备模型