设备驱动程序栈

时间:2012-06-24 07:39:23

标签: linux linux-kernel linux-device-driver

我是初学者,我正在尝试理解设备驱动程序堆栈背后的概念?我知道设备驱动程序堆栈有三层,分别是低级驱动程序,总线管理器和高级驱动程序。 我的问题是,低级驱动程序和总线管理器是否存在单独的代码?如果它们存在,我在哪里可以找到Linux文件系统中硬件控制器的低级驱动程序? 感谢。

2 个答案:

答案 0 :(得分:2)

Linux内核有三个设备驱动程序层,它们适用于内核的大多数设备驱动程序系统。 总线驱动程序,协议驱动程序和设备驱动程序。 我们以您想要为其编写驱动程序的SPI设备为例(例如某种传感器)。 通常,您将使用设备的数据表编写驱动程序,以查看其工作原理以及哪些寄存器包含哪些信息。这是在设备驱动程序中完成的。

设备驱动程序将命令发送到协议驱动程序,该驱动程序基本上定义了SPI命令的外观(如何填充数据结构以读取/写入设备的寄存器)。

通常,SOC和传感器之间的SPI连接是通过SOC内部的一些特殊硬件完成的,以发送接收SPI命令。 这是公交车司机。所以你在软件中有这样的东西: device_driver< - > protocol_driver< - > bus_driver

在硬件中看起来像这样: SOC_SPI_module< - >传感器

我们的想法是,从设备驱动程序封装SOC SPI模块,因此在编写设备驱动程序时,您不必关心用于访问设备的SOC。

希望我能帮到你。

答案 1 :(得分:-1)

在Linux设备驱动程序中通常是C语言中的面向对象编程。在此,我们将更广泛的视图“module_init”作为构造函数& “module_exit”作为析构函数

根据我的观点,“init&amp; exit”进程与设备控制器硬件交互,因此可以称为“低层驱动程序”。在控制通过“文件操作和驱动程序的工作过程”作为“总线管理器或流程管理器”通过“ioctl process”< / strong> as “高级别驱动程序”

如果用户必须与设备互动,则“ioctl process”&lt; - &gt; “文件操作”&lt; - &gt; “module_init&amp; module_exit&amp; some file operations。”