首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设备驱动程序栈

设备驱动程序栈
EN

Stack Overflow用户
提问于 2012-06-24 15:39:23
回答 2查看 1.1K关注 0票数 2

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

EN

回答 2

Stack Overflow用户

发布于 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。

希望我能帮到你。

票数 3
EN

Stack Overflow用户

发布于 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 &部分文件操作。”

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11175804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档