linux驱动架构

一、linux驱动演化过程:

从04年到现在,linux驱动进行了两次大的演变,从基于linux-v2.4的原始架构---到基于linux-v2.6的平台总线---再到现在的基于linux-v3.x的设备树。这个演变过程中linux平台做到了很好的继承与封装。

老板的架构现今任有使用,但不同版本的架构侧重点不同,如下图:

原始架构把应用软件开发与驱动程序开发分开。

平台总线阶段进一步将驱动程序分拆为平台驱动与平台设备。实际工作时平台驱动一般不用修改,只需要修改设备资源。

设备树阶段平台设备从c源码中独立出来。

 

二、linux原始架构(linux-v2.4)

linux原始架构侧重点在'设备节点',且现今原始架构并没有被淘汰,只是被封装和继承了,这部分内容同样重量。

如下图:

内核层编写open(),read()等函数即为驱动开发,将写好的设备驱动打包进结构体file_operations,再用函数register_chdev()将打包好的结构体注册到linux系统内核中与设备节点关联起来。这样上层应用程序就可以通过设备节点间接控制设备,以编写逻辑代码。

 

三、linux平台总线架构(linux-v2.6)

 

四、设备树架构(linux-v3.x)目前最新的架构

把内核的平台设备从c源码中独立出来了,变为了DTS设备树脚本文件,每次换板子的时候,不需要编译linux系统,只需要更换设备树文件。

 

posted @ 2023-02-12 17:38  newloser  阅读(546)  评论(0)    收藏  举报