嵌入式Linux设备驱动的设计方法研究

  • 格式:pdf
  • 大小:141.86 KB
  • 文档页数:3
的开发效 率 .
1 可加载 的设备驱动程序 内部结构和功能
Lnx 作 系统下有 2 主要 的设 备文 件类 型 : 符设 备和 块设 备 . 符设 备和 块设 备 的 主要 区别 是 : iu 操 类 字 字 在
对字符设备发出读/ 写请求时 , 实际的硬件 IO一般就紧接着发生了 , / 例如字符终端和串 口; 块设备是利用一 块系统 内存作缓冲区, 当用户进程对设备请求能满足用户的要求 , 就返回请求 的数据 . 块设备是主要针对磁 盘等慢 速设 备设 计 的 , 以免 耗 费过多 的 C U时间来 等待 . P 字符 设备 是能 够像 字 节 流一 样 被访 问的设 备 , 由字
V0 . 1No 4 13 .
J1 07 u .2 O
文 章 编 号 :005 6 (07 0-3 1 3 10 —8220 )409 — 0
嵌 入 式 Ln x设 备 驱 动 的 设 计 方 法 研 究 iu
张 威 黄 冲2 ,
300 ; . 昌 大学 网络 中 心 , 西 南 昌 306 2 南 江 300 ) 30 6
个 问题 . 本文 主要介 绍 在 u lu Ci x操作 系统 下如 何实 现可 动态加 载 的设备 驱 动程序 的 配置 、 计 和调试 步骤 . n 设
传统的嵌入式 L u 设备管理对于驱动程序 的加载采用的是静态加载的方式 , ix n 即所有的设备驱动程序
都 在系统 初始 化 的时候装 入 内核 , 即使 在 运 行期 间不 会 被使 用 到 的 设备 , 驱 动程 序 也 要 一 直驻 留在 内核 其 中 , 到系统 关闭 . 样 就造成 了系统资 源 的浪费 . 直 这 针对 上 述 问题 , 文 对嵌 入 式 Lnx驱动 程 序 的动 态可 加 本 i u 载 机制进 行研 究 , 机 制将设 备驱 动编 译为 独立 的模 块 , 该 在需 要 的时 候 插入 到 内核 中 , 在不 需 要 时从 内核 中 删除, 因此可 以使核 心保 持很 小尺 寸 的同时非 常灵 活 , 于进 行驱 动 程 序 的测 试 , 大 大提 高 了嵌入 式 产 品 便 并
维普资讯
第 3 卷第 4 1 期
20 07年 7月
江西 师范大学学报( 自然科学版 )
JU N LO A G IN R A NV R n N O R A FJ N X O M LU IE S  ̄( R LS IN E I A CE C )
( . 昌大 学 信 息工 程 学 院计 算 中心 , 西 南 昌 1南 江
摘要 : 该文在对 ulu 设备管理机制进行深入研究的基础上, Cn ix 详细阐述了嵌入式 L u 设备驱动程序的 ix n
分类及特点 , 重点分析了动态可加载设备驱动程序 的原理 和设计步骤 , 并实现 了基于 uH u C nx的字符型设 备 的动态 可加载驱动程序 . 实验结果表明 , 动态 可加 载方 式为嵌 入式 Lnx i 驱动程序的调试提供 了便捷的 u
符设备 驱动 程序来 实 现这种 特性 . 嵌 入式 Lnx 动程 序 的基 本组 成部 分包 括 :() 块初 始化 函数 it oue)该 函数是 每个 内核 模块 i 驱 u 1模 n . dl( . im 加 载 的时候 首先调 用 的一个 默认 函数 . 一般 在该 函数 中完成 设 备 的注 册 , 当模 块 加 载完 毕 之后 , 内核 即 知 晓 设 备 的存 在 .() 块 卸载 函数 c au. ou ( , 函数 与 iim dl(做 相反 的工 作 , 内核 中取 消设 备 的 2模 l npm l )该 e d e n.ou ) t e 在 登 记 . 函数 在模块 卸 载 的时候 自动调 用 .() 备 驱动程 序接 口 feoeaos通 常所说 的设 备 驱动 接 口是 该 3设 i . ri . l p tn 指结 构 feoeaos}它定 义 在 <lu/sh i . ri {, l p tn i xf. >中 . 作 系统 内核使 用 feoeaos 构 访 问驱 动 程 序 的 函 n 操 i .pri 结 l tn 数, 从而 对硬 件进行 控 制 .l oeaos 构 主要包 括 oe , a ,rei trl s 等 成员 函数 . i . tn fe pri 结 pn r dwi ,c , e e e t ol ea
收 稿 日期 :070 .6 20 .51
作者简介 : 张威 (9 0)男 , 17一 , 江苏太仓人 , 主要从事计算机应用研究 .
维普资讯
江 西 师 范 大 学 学报 ( 自然 科 学 版 )
20 07薤
根据上述分析 , 可加载设备驱动程序的工作流程为首先通过模块加载命令 i m 把设备驱动程序插入 n o sd 到 内核 中 . 后 i m 将调用 it oue ) 然 n o sd n .d l(方法 首先 对设 备 的 ii函数 指针 初始 化 , im nt 再通 过调用 r ie_e( esr v) gt d
途径 , 同时亦有 效地提高了嵌 入式产品的开发效率 .
关键词 : 嵌入式;Ci x设备驱动; 1. 1 31 2 1 5
文 献标识 码 : A
随着计算机控制技术的不断发展 , 嵌入式系统已广泛渗透到仪器仪表 、 工业控制等各个领域 , 成为备受 关注 的热点 . u lu 而 Ci x是专 门用 于控 制 系统 的微型化 的嵌 入式 Lnx它 具有 内核 小 、 n iu, 效率 高 、 代码 开放 等 源 优点 , 应用前景十分广泛. 在嵌入式 u L u 上实现设备驱动程序的添加 的方法 , Ci x n 一直是开发人员关注 的一