news 2026/9/12 10:56:07

27、设备驱动接口与系统初始化程序详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
27、设备驱动接口与系统初始化程序详解

设备驱动接口与系统初始化程序详解

1. 设备驱动接口

1.1 发现硬件配置

设备驱动通常用于与硬件交互,但虚拟驱动仅操作内存结构,缺乏与真实硬件的交互。在发现硬件配置时,部分硬件可自行提供信息,如PCI或USB总线上的设备有查询模式,能返回资源需求和唯一标识符,内核会将其与驱动匹配。然而,嵌入式板上的多数硬件块没有此类标识符,需要通过设备树或平台数据(C结构)来提供信息。

在Linux标准驱动模型中,设备驱动会向相应子系统注册,注册内容包括标识符和探测函数(probe function)。对于PCI和USB设备,ID基于供应商和产品ID;对于设备树和平台设备,ID是一个名称(文本字符串)。

1.2 设备树

设备树在硬件配置中起着重要作用。以ARM Versatile板为例,以太网适配器在设备树中的定义如下:

net@10010000 { compatible = "smsc,lan91c111"; reg = <0x10010000 0x10000>; interrupts = <25>; };

1.3 平台数据

在缺乏设备树支持时,可使用平台数据(C结构)描述硬件。每个硬件由struct platform_device描述,资源类型由标志位决定,常见标志位如下:
-IORESOURCE_MEM:内存区域的物理地址
-IORESOURCE_IO:IO寄存器的物理地址

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 11:34:14

29、Linux系统启动与电源管理全解析

Linux系统启动与电源管理全解析 1. 系统启动:init程序 在Linux系统中,服务添加依赖关系时,无需不断编辑目标单元文件。目标可以有一个名为 <target_name>.target.wants 的目录,其中可以包含指向服务的链接。这与将依赖单元添加到目标的 [Wants] 列表中完全相同…

作者头像 李华
网站建设 2026/9/12 8:03:15

32、深入理解进程与线程

深入理解进程与线程 1. 共享内存通信 当程序首次运行时,会创建内存段。初始状态下,消息区域为空,但经过一次循环后,它会包含该进程的 PID。例如,首次运行程序后,消息区域包含 PID 为 271 的进程信息。之后,在另一个终端运行同一程序的第二个实例: # ./shared-mem-d…

作者头像 李华
网站建设 2026/9/10 21:52:44

45、基于IP地址十六进制表示创建软件密钥及任意进制转换脚本

基于IP地址十六进制表示创建软件密钥及任意进制转换脚本 在这个技术分享中,我们将探讨两个实用的shell脚本:一个用于基于机器的IP地址创建软件许可证密钥,另一个用于在任意支持的数字进制之间进行转换。 基于IP地址创建软件许可证密钥 脚本概述 我们要创建一个shell脚本…

作者头像 李华
网站建设 2026/9/11 18:06:38

43、Samba与不同操作系统的连接及OS/2系统的使用配置

Samba与不同操作系统的连接及OS/2系统的使用配置 在网络环境中,Samba服务器可以为多种操作系统提供服务。下面将详细介绍Samba与Windows 3.11以及OS/2系统的连接和使用情况。 Samba与Windows 3.11 Windows 3.11及更早版本严格来说并非操作系统,而是运行在DOS之上的图形化环…

作者头像 李华