我是一个初学者,我正在尝试理解设备驱动程序栈背后的概念?我知道设备驱动程序栈有三层,分别是低级驱动程序、总线管理器和高级驱动程序。我的问题是,是否存在针对低级驱动程序和总线管理器的单独代码?如果它们存在,我可以在哪里找到Linux文件系统中硬件控制器的低级驱动程序?谢谢。
发布于 2012-06-26 16:03:10
Linux内核有三个设备驱动器层,它们占据了内核设备驱动程序系统的大部分。总线驱动程序、协议驱动程序和设备驱动程序。让我们以您想要为其编写驱动程序的SPI设备为例(例如,某种传感器)。通常,您将使用设备的数据表编写驱动程序,以了解它是如何工作的,以及哪些寄存器保存哪些信息。这是在设备驱动程序中完成的。
设备驱动程序将命令发送到协议驱动程序,协议驱动程序基本上定义了SPI命令的外观(如何填充数据结构才能读/写设备的寄存器)。
通常,SOC和传感器之间的SPI连接是通过SOC内部的一些特殊硬件发送接收SPI命令来完成的。我是公交车司机。所以你在软件中有类似这样的东西: device_driver <-> protocol_driver <-> bus_driver
在硬件中,它看起来像这样: SOC_SPI_module <->传感器
其思想是,封装设备驱动程序中的SOC SPI模块,以便在编写设备驱动程序时,不必关心用于访问设备的SOC。
希望我能帮到你。
发布于 2012-11-09 15:02:50
Linux下的设备驱动程序一般是用C语言编写的面向对象的程序。在这里,我们从更广泛的角度看,"module_init"作为构造函数& "module_exit"作为析构函数。
根据我的观点,作为“初始化和退出”的进程与设备控制器硬件交互,因此可以被称为“低层驱动”。经过“文件操作和驱动程序的工作过程” as “总线管理器或进程管理器” to user control通过"ioctl process" as "High level driver"。
如果用户必须与设备交互,则"ioctl进程“”文件操作“"module_init & module_exit &部分文件操作。”。
https://stackoverflow.com/questions/11175804
复制相似问题