news 2026/9/5 22:15:05

26、Linux设备驱动与init程序详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
26、Linux设备驱动与init程序详解

Linux设备驱动与init程序详解

1. 发现硬件配置

设备驱动通常用于与硬件进行交互,但虚拟驱动仅操作内存结构,缺乏与真实硬件的交互。要与硬件交互,首先要能够发现硬件,因为在不同的配置下,硬件可能位于不同的地址。

1.1 硬件自动提供信息

某些情况下,硬件自身会提供相关信息。例如,PCI或USB等可发现总线上的设备具有查询模式,该模式会返回资源需求和唯一标识符。内核会将标识符以及可能的其他特性与设备驱动进行匹配。

1.2 手动提供信息

大多数嵌入式板上的硬件模块没有这样的标识符,需要通过设备树或平台数据(以C结构形式)手动提供信息。

在Linux的标准驱动模型中,设备驱动会向相应的子系统(如PCI、USB、开放固件(设备树)、平台设备等)进行注册。注册内容包括标识符和一个名为探测函数的回调函数。对于PCI和USB设备,标识符基于设备的供应商和产品ID;对于设备树和平台设备,标识符是一个名称(文本字符串)。

2. 设备树

设备树在前面已经有过介绍,这里主要展示Linux设备驱动如何与设备树信息进行关联。以ARM Versatile板(arch/arm/boot/dts/versatile - ab.dts)为例,其以太网适配器的定义如下:

net@10010000 { compatible = "smsc,lan91c111"; reg = <0x10010000 0x10000>; interrupts = <25>; };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 4:31:17

27、Linux系统初始化:从System V init到systemd的深入解析

Linux系统初始化:从System V init到systemd的深入解析 1. System V init与inittab文件 1.1 inittab文件概述 init程序启动时会读取 /etc/inittab 文件,该文件定义了每个运行级别下的操作。其格式是BusyBox inittab的扩展版本,因为BusyBox最初是从System V借鉴而来。 i…

作者头像 李华
网站建设 2026/9/4 21:39:11

30、深入理解进程管理与进程间通信

深入理解进程管理与进程间通信 1. 进程概述 进程是线程运行的环境,它包含内存映射、文件描述符、用户和组 ID 等信息。系统启动时,内核会创建第一个进程——init 进程,其 PID 为 1。此后,新进程通过“fork”操作创建。 2. 创建新进程 创建进程的 POSIX 函数是 fork(2)…

作者头像 李华
网站建设 2026/9/6 6:38:22

40、嵌入式Linux实时性能优化与测量

嵌入式Linux实时性能优化与测量 1. 可抢占内核锁 在实时系统中,内核锁的可抢占性是一个关键问题。PREEMPT_RT对内核锁进行了重大修改,使大多数内核锁可被抢占,但这部分代码尚未合并到主线内核中。 自旋锁是内核中常用的锁机制,它是一种忙等待互斥锁,在竞争情况下无需上…

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

开源多模态新突破:Kimi-VL模型以28亿激活参数实现旗舰级性能

开源多模态新突破&#xff1a;Kimi-VL模型以28亿激活参数实现旗舰级性能 【免费下载链接】Kimi-VL-A3B-Instruct 我们推出Kimi-VL——一个高效的开源混合专家&#xff08;MoE&#xff09;视觉语言模型&#xff08;VLM&#xff09;&#xff0c;具备先进的多模态推理能力、长上下…

作者头像 李华