基于嵌入式Linux的设备驱动程序设计
# i d fM 0DULE f e n # d f eM 0DULE ei n 『
口, 它为应用程序屏蔽 了硬件 的 细节 。在应 用程 序看来 ,
硬 件设 备 只是 一个 设 备 文 件 , 用程 序 可 以 像 操作 普 通 文 应 件 一 样 对 硬 件 设 备 进 行 操 作 。设 备 驱 动 程 序 是 内核 的 一
_
s a i o f t es l e k ) t tc lf t t l e ( s
_
—
s a i sz t tc s ie
_ —
tt est
_
r a ( ed )
s a i sz tt s ie ) t tc s ie e t wrt (
性 , 使用 J 不 TAG 即 实 现 了多 片 D P软件 调 试 ; 个 调试 S 整
参 考 文 献
Ei丁 刚 . 述 软 件 开 发 中 模 拟 器 与仿 真 器 的 区别 [ B O ] l 详 E / L.
ht:/ tp / www1 t c r. n, 0 4—0 .i o c 2 0 . n 1—0 . 1
[]曹 长 江 , 双 宝 , 飚 . 于 US 2 0总线 的 TMS 2 V 5 0 5 马 詹 基 B. 30 C 42 HP 自举 的实 现 . E / ] t :/ e sew r .o c , I [ B OL .ht / n w .e o l cm.n p d
[ ]陈 朝 阳 , 峥 , 胜 江 . 用 Fah实 现 D P对 多 个 程 序 有 选 4 薛 郭 利 l s S
择 的 加 载 。 t : / w.s d w . o 2 0 0 0 . h t / ww i o n c m, 0 4— 4— 1 p p
过程简单 、 捷 , 快 不失 为 一 种 好 方 法 。l 匿
MOD E LC NS ” P ” / 义 该 驱 动 程 序 的 G L许 可 UL _ I E E(G L )/ 定 P
i e t ii v i) nt t s nt od (
_
/ 声 明驱 动 程 序 中 的所 有 函数 /
v i e t c e n p v i ) odts la u ( od
部 分 , 以 实现 以下 功 能 : 可
#e df ni
/定 义要 编译 为模 块 形 式 , 以在 要 调 用 时 加 载 / 可
/ 定 义 一 系 列 的头 文 件 以 及 用户 自己定 义 的宏 /
#icu e l u / d l. > n ld < i x mo u e h n
所 以 L n x操 作 系 统 在 嵌 入 式 领 域 获 得 了 广 泛 的 应 用 。 iu 嵌 入式 L n x一 直 是 嵌 入 式 领 域 的研 究 热 点 , P iu 与 C架 构
ra 、 r el ek ic 等 ) 在 用 户 自 己 的 驱 动 程 序 中 , ed w i 、 se 、 t t l ol 。 首 先 要 根 据 驱 动 程 序 的 功 能 , 现 fe o eai s 构 中 实 i— prt n 结 l o
调 用 驱 动 程 序 注 册 的 fl o e ain 结 构 中 的 函数 指 针 。 i_ prt s e o
不 同 , 入 式 系统 的硬 件 具 有 多 样 性 和 差 异 性 , 入 式 系 嵌 嵌
统 的开 发 需 要 对 特 定 系 统 进 行 硬 件 设 计 , 时还 要 针 对 这 同
# i d fKE f e_ RNEL n _
#df eKE E _ / 定 义 要 编 译 为 在 内 核 空 间 中运 行 e n_ RN L i /
#e df n i
1 设 备驱 动 程 序 设 计 的 基 本概 念 与模 型
设 备 驱 动 程 序 是 操 作 系 统 内 核 与 机 器 硬 件 之 间 的接
#icu e l u / c e . > n ld < i x sh d h n #icu e l u / e n 1h n ld < i x k r e. > n # icu e l u /nth n ld < i x ii. > n
◇ 对设备初始化和释放 ; ◇ 把 数 据从 内核 传 送 到 硬 件 , 及 从 硬 件 读 取 数 据 ; 以 ◇ 读 取 应 用 程 序 传 送 给 设 备 文 件 的 数 据 , 及 回 送 以 应 用程 序 请求 的 数 据 ; ◇ 检 测 和处 理 设 备 出 现 的错 误 。 前 面 已经 提 到 驱 动 程 序 的作 用 , 编 写 驱 动 程 序 就 是 而 构造 一 系列 可 供 应 用 程 序 调 用 的 函数 ( 括 o e 、e ae 包 pn rl s 、 e
维普资讯
基于嵌入式 Ln x的设备驱动程序设计 iu
● 广 东工 业 大学 何 世 烈 陈 健
Ln x 一 个 成 熟 而 稳 定 的 操 作 系 统 。将 Ln x植 入 iu 是 iu 嵌 入式 设 备 具 有 众 多 的 优 点 , 括可 裁 剪 和 容 易 移 植 等 , 包
些 硬件 来 编 写 驱 动 程 序 。 Ln x内 核 就 是 通 过 驱 动 程 序 iu 来 同外 围设 备 打 交 道 的 , 统 设 计 人 员 必 须 为 每 个 设 备 编 系 写驱动程序 , 则设备无法在操作系统下正常工作 。 否
以 下 是 嵌 入 式 Ln x . 设 备 驱 动 程 序 的 最 简 模 型 。 iu2 4
的 函 数 。不 需 要 的 函数 接 口可 以直 接 在 f e o eain 结 i— prt s l o
构 中初 始 化 为 NUL fe o eai s 量 会 在 驱 动 程 序 L; l prt n 变 i— o 初 始 化 时 注 册 到 系 统 内部 。 当操 作 系 统 对 设 备 操 作 时 , 会
合集下载
设备驱动程序在嵌入式Linux系统中的实现分析
1 引言
设备驱 动程 序是操 作系 统 内核 和机器硬 件之 间 的接 口 , 为应用 和设备 间 的软件层 , 作 为应用 程序屏 蔽 了硬 件 的细 节 。在 Lnx系统 中 , 件 设 备 只是 iu 硬
一
备 的操作 和控 制 , 须 分析 驱 动程 序 的结构 和 实 现 必
原理。
4 N G n Yi g
【bt c】 T ippr e r e t pr ne f egi i ri t bde L u s m a w l sh s A s at r h ae d c b em o ac o ds n g re e m e d i x yt , s e e ac s s i s h i t i n d v sn h e d n s e l t bi a
・
48 ・
第 1 ・ 2期 0卷 第
王莹 : 设备驱动程序 在嵌入式 Ln x系统 中的实现分析 iu
21 0 0年 4月
可 以分 为 5个部 分 :
件 f. s h里定 义 的 fe oeai s 构 , i — Drt n 结 l o 它包 含 一 系 列 函数指 针 , 这些 函数 指针指 向对设备 的各 种操 作 。
设备 。
2 设备驱动程序实现原理
设备 驱动程 序设计 是嵌 入式 Ln x开发 中重要 iu
பைடு நூலகம்
的部分 , 驱动程序是应用程序与硬件之间的一个中
间软件层 , 应该 为应用 程序展 现硬件 的所有 功能 , 不
2. 驱动程 序 的基 本结构 2
嵌 入式 Ln x 备 驱 动 程 序 都有 一 些 共 性 , iu 设 编 写所有类 型 的驱动 程序 都 是 通用 的 , 作 系统 提 供 操
基于嵌入式Linux的网络设备驱动程序的开发
L n x 的设 备 驱动 程序 为 内核 提供 了一 个 I iu / O
接 口, 用户 使 用这 个接 口实现对 设备 的操 作 。 iu Lnx
设备驱动程序 包含 中断处理程序和设备服务子程 序两部分 。设备服务子程序包含 了所有与设备操作
相 关的处 理代 码 ,它 从面 向 用户进程 的设 备文 件系 统 中接 受 用户命 令 并对设 备 控制执 行 操作 。由此 用
维普资讯
电子科 技 20 0 6年 第 入式 L n x的 网络设备驱 动程 序的开发 u i
郭 锴 ,任 娜 ,汪贵平
( 长安大学 信 息工程 学院 ,陕西 西安 7 o6 ) 1o 4 摘 要 设备驱动是 L n x系统的重要组 成部 分,它在硬件和终端之 间建 立了标准 的接 口,大大 简化 了驱动 iu 的开发难度 。文中在介绍 了 Ln x iu 下设计设备驱动 的基本方法 的基础上 ,分析 了自主开发 的基于 AM D I R TM 为内核
作 者 简 介 :郭
嵌 入 式应 用 。任
锴 ( 8一 ) 男 ,硕 士 研 究 生 。研 究 方 向: 1 , 93
娜 ( 9 3 ) 女 ,硕 士 研 究 生 。 研 究 方 18 一 ,
联 ,在 这 个结 构 里存 放 了设 备 各种 操 作 的 入 口函
数 。设备 驱动 程序 可 以使 用 L n x 系统 的标准 内核 iu
s se An r e e i n d f r eS C B0 b s do M 7 y t m d ad v r sg e 3 44 X a e nAR i d o t h DM I s n l z d ay e ia Ke wo d L n x n t r ; e ie d v r R L8 AS y rs i u ; e wo k d v c r e ; T O i 1 9
接 口, 用户 使 用这 个接 口实现对 设备 的操 作 。 iu Lnx
设备驱动程序 包含 中断处理程序和设备服务子程 序两部分 。设备服务子程序包含 了所有与设备操作
相 关的处 理代 码 ,它 从面 向 用户进程 的设 备文 件系 统 中接 受 用户命 令 并对设 备 控制执 行 操作 。由此 用
维普资讯
电子科 技 20 0 6年 第 入式 L n x的 网络设备驱 动程 序的开发 u i
郭 锴 ,任 娜 ,汪贵平
( 长安大学 信 息工程 学院 ,陕西 西安 7 o6 ) 1o 4 摘 要 设备驱动是 L n x系统的重要组 成部 分,它在硬件和终端之 间建 立了标准 的接 口,大大 简化 了驱动 iu 的开发难度 。文中在介绍 了 Ln x iu 下设计设备驱动 的基本方法 的基础上 ,分析 了自主开发 的基于 AM D I R TM 为内核
作 者 简 介 :郭
嵌 入 式应 用 。任
锴 ( 8一 ) 男 ,硕 士 研 究 生 。研 究 方 向: 1 , 93
娜 ( 9 3 ) 女 ,硕 士 研 究 生 。 研 究 方 18 一 ,
联 ,在 这 个结 构 里存 放 了设 备 各种 操 作 的 入 口函
数 。设备 驱动 程序 可 以使 用 L n x 系统 的标准 内核 iu
s se An r e e i n d f r eS C B0 b s do M 7 y t m d ad v r sg e 3 44 X a e nAR i d o t h DM I s n l z d ay e ia Ke wo d L n x n t r ; e ie d v r R L8 AS y rs i u ; e wo k d v c r e ; T O i 1 9
Linux嵌入式技术下指纹采集系统设备驱动程序设计
【 yWo d 】 iu m edd te n e r t a eigss m;h q im n ata s Ke rs Ln xe b d e;h gri t r yt teeup e t c t i f p ngh n e ue
1 系统概念
早期 的嵌入式系统软件功能 比较简单 ,应用程序直接运行 在处理器上。现在的很多低端嵌入式系统仍然如此。这样 的系 统没有嵌入式操作系统 ,也没有明显 的 B P S ,它与设备驱动程 序混合在一起 。然而 ,随着嵌入式系统功能不断复杂 ,应用程 序的编写越来越困难。象桌面计算机一样 ,引入操作系统势在
p s , n i ae n l e s se p r t n i g o , h a h r gf g r r t p e u c , h ma e i c e r o a i d c td f al t y t mso e ai s o d t e g t e n n e i e d i q ik t e i g s l a . l i yh o i i p n s s
2 任务 管理
任务管理是操作 系统最基 本 的功 能。所谓 任务管理 ,就 是对多个任 务进行调度 ,以合理满足 各个任务 的需 求 。往往
每个任务都 根据其重要程 度赋予 了特定 的优先 级 ,不 同的任 务其优先级可能相 同也可能不相 同。任 务的调度有三种方式 :
可抢 占式调度 、不可抢 占式调 度和时 间片轮转调度 。不可抢 占式调度是指一个任务一旦获得 C U就独占 C U运行 ,除非 P P
Z HAO Haf  ̄ i e
(e igF rs yU iesy B in 10 9 ) B in oet nvrt, e ig 0 0 2 j r i j
嵌入式Linux系统下闪存设备驱动程序设计
维普资讯
电子 科 技 20 0 7年 第 2期 ( 第 29期 ) 总 0
嵌 入 式 Ln x系统 下 闪存 设 备 驱 动 程 序 设 计 iu
赵巧宁 ,傅丰林
( 西安电子科技大学 通信工程学 院 ,陕西
摘 要
西安
707 ) 10 1
嵌 入 式 系统 通 常使 用 闪存 作 为 存 储 设 备 ,通 过 MT D技 术 可 以 方 便 地 访 问 f s 样 的 MT l h这 a D设 备 。
关键词 嵌 入 式 Ln x i ;MT N r ah 闪存 u D; o s ; l f
中图分类号
T362 P 1、
De i n f r Fl s M e o y De i e D r v r i he Em be e Li x sg o a h m r v c i e n t d d nu
Th sp p rito u e h rme r ft eL n x d v ra d gv sad tie n lsso ea c ie t r n aa i a e rd c st efa wok o h i u r e n ie eald a ay i f h rh tcu ea d d t n i t sr cu e fte MTD e ie d v r By tkn h lt r o tu tr so h d vc r e . i a ig te p af m fEBD9 5 fre a l te p p rs se t al o 31 o x mpe, h a e y tmai l c y d s rb sh w o d v lp M T d v rfrNo a h. e c e o t e eo D r e rf s i i o l Ke wo d e e e i u ; MTD ;No a h; f s mo y rs mb d d L n x rf s l l h me r a y
电子 科 技 20 0 7年 第 2期 ( 第 29期 ) 总 0
嵌 入 式 Ln x系统 下 闪存 设 备 驱 动 程 序 设 计 iu
赵巧宁 ,傅丰林
( 西安电子科技大学 通信工程学 院 ,陕西
摘 要
西安
707 ) 10 1
嵌 入 式 系统 通 常使 用 闪存 作 为 存 储 设 备 ,通 过 MT D技 术 可 以 方 便 地 访 问 f s 样 的 MT l h这 a D设 备 。
关键词 嵌 入 式 Ln x i ;MT N r ah 闪存 u D; o s ; l f
中图分类号
T362 P 1、
De i n f r Fl s M e o y De i e D r v r i he Em be e Li x sg o a h m r v c i e n t d d nu
Th sp p rito u e h rme r ft eL n x d v ra d gv sad tie n lsso ea c ie t r n aa i a e rd c st efa wok o h i u r e n ie eald a ay i f h rh tcu ea d d t n i t sr cu e fte MTD e ie d v r By tkn h lt r o tu tr so h d vc r e . i a ig te p af m fEBD9 5 fre a l te p p rs se t al o 31 o x mpe, h a e y tmai l c y d s rb sh w o d v lp M T d v rfrNo a h. e c e o t e eo D r e rf s i i o l Ke wo d e e e i u ; MTD ;No a h; f s mo y rs mb d d L n x rf s l l h me r a y
第8章 嵌入式设备驱动程序设计(新)1
4、设备驱动程序加载与卸载的 工作过程
8.1.4 设备驱动程序的功能接口 函数模块
一个设备驱动程序模块包含有 5个部分的功能接口函数:
• • • • • (1)驱动程序的注册与释放; (2)设备的打开与关闭; (3)设备的读写操作; (4)设备的控件操作; (5)设备的中断或轮询处理。
1、设备驱动程序的注册与释放
4、加载驱动程序
• 使用insmod命令加载驱动程序。 # insmod demo_drv.o
5、卸载驱动程序
• 使用rmmod命令卸载驱动程序。 # rmmod demo_drv
6、编写用户测试程序
【例8-3】编写一个调用设备驱动程 序功能接口的用户程序。
• 源程序见教材, • 将其保存文件为:test_driver.c 。 • 用arm-linux-gcc对在宿主机上测试, 则用gcc编译)。 # arm-linux-gcc –o test_demo_drv test_driver.c
第8章 嵌入式设备驱动程序设计
本章要点
• 1、设备驱动程序基础知识 • 2、设备驱动程序设计
8.1嵌入式设备驱动程序基础
8.1.1
设备驱动程序概述
1、设备文件
• 设备文件分为三类:字符设备文件、 块设备文件和网络接口设备文件。
2、内核空间和用户空间
• 内核主要负责操作系统最基本的内存管理、 进程调度和文件管理以及虚拟内存、需求 加载、TCP/IP网络功能等。 • 内核空间和用户空间分别引用不同的内存 映射,也就是程序代码使用不同的地址空 间。
3、设备驱动程序和用户应用程序
• 设备驱动程序可以理解为操作系统的一部 分,它的作用就是让操作系统能正确识别 和使用设备。
基于嵌入式Linux的SD卡驱动程序的设计与实现 文字版
通过向卡发送不同的命令,可以将卡从一个状态转移到另 外一个状态,同时获取我们需要的数据。图 3 描述了卡初始化 的状态转移关系图。其中 C M D 0( G O _ID L E _ST A T E)没有返回 数据,A C M D 41( SD _SE N D _O P_C O N D) 会通过 R 3 回应返回 O C R 信息,C M D(2 A L L _SE N D _C ID )通过 R 2 回应来返回 C ID 信息,C M D(3 SE N D _R E L A T IV E _A D D R)则通过 R 6 回应卡的 R C(A C ard A ddress)信息。
re turn -1; // 注册块设备驱动程序 blk_init_que ue (BLK_DEFAULT_QUEUE(ma jor),s d_re que s t); blk_de v[ma jor].re que s t_que ue .re que s t_fn = s d_re que s t; // 设置块设备的请求传输函数 re a d_a he a d[ma jor] = 10; s d_s ize s = kma lloc(3*s ize of(int),GFP _KERNEL); mmc_blk_s ize s = mmc_s ize s + 1; mmc_ha rd_s e cts = mmc_s ize s + 2; *mmc_s ize s = s d_info.s ize /1024; *s d_blk_s ize s = 1024; *s d_ha rd_s e cts = s d_info.ha rd_s e ct; blk_s ize [ma jor] = s d_s ize s ; blks ize _s ize [ma jor] = s d_blk_s ize s ; ha rds e ct_s ize [ma jor] = s d_ha rd_s e cts ; // 设置设备管理的设备大小、扇区大小信息 re turn 0; } 注册的主要工作是初始化 SD 卡,向内核注册块设备以 及设置块设备的信息。注册之后,L inux 在有数据要进行读 写的时候,会调用驱动程序的 request函数。下面是该函数的 伪代码: s ta tic void mmc_re que s t(re que s t_que ue _t *q) { uns igne d long nr; int blk; while (1) { INIT_REQUES T; // 检查缓冲队列是否为空 s witch(CURRENT->cmd) { ca s e READ:
re turn -1; // 注册块设备驱动程序 blk_init_que ue (BLK_DEFAULT_QUEUE(ma jor),s d_re que s t); blk_de v[ma jor].re que s t_que ue .re que s t_fn = s d_re que s t; // 设置块设备的请求传输函数 re a d_a he a d[ma jor] = 10; s d_s ize s = kma lloc(3*s ize of(int),GFP _KERNEL); mmc_blk_s ize s = mmc_s ize s + 1; mmc_ha rd_s e cts = mmc_s ize s + 2; *mmc_s ize s = s d_info.s ize /1024; *s d_blk_s ize s = 1024; *s d_ha rd_s e cts = s d_info.ha rd_s e ct; blk_s ize [ma jor] = s d_s ize s ; blks ize _s ize [ma jor] = s d_blk_s ize s ; ha rds e ct_s ize [ma jor] = s d_ha rd_s e cts ; // 设置设备管理的设备大小、扇区大小信息 re turn 0; } 注册的主要工作是初始化 SD 卡,向内核注册块设备以 及设置块设备的信息。注册之后,L inux 在有数据要进行读 写的时候,会调用驱动程序的 request函数。下面是该函数的 伪代码: s ta tic void mmc_re que s t(re que s t_que ue _t *q) { uns igne d long nr; int blk; while (1) { INIT_REQUES T; // 检查缓冲队列是否为空 s witch(CURRENT->cmd) { ca s e READ:
基于linux2.6内核的字符设备驱动程序设计
, sr t t uc
o ne = TH I M ODULE; w r S
… … … … …
//获 取 字 符 设 备 号
2ce d v结构体
存 ln x2. 核 中 , 用 c e 结 构 体 描 iu 6内 使 dv 述 一 个 字 符 设 备 , d v结 构 体 定 义 如 下 : ce
.
_
的 结构 体 , 中 包 含设 备所 涉 及 到 的c e 其 d v、 私有数据及信号量等信息 。 下所 示: 如 / 设 备 结 构 体 /
sr t t uc XXX—d v t —e
— —
{, i e t l f t ) sz , of ;
_ —
f
s r t de c v; t uc c v de
s ie sz
— —
ቤተ መጻሕፍቲ ባይዱ
/ /从 设 备 中 同 步 读 取 数 据 t* ie(tutf e} h r u r (wrt) rc i .c a s s l e
—
}, i e t, l f t { ; sz of )
//该 设 备 其 他 的 私 有 数 据 和 信 号 量 的 信 息 的 定 义
… …
/ /向 设 备 发 送 数 据 u sg e n * o1 sr c i ,src n in d it(p l(tutfl ) e十 tu t
p l t bl sr c ) o l a e tu t :
—
}X —e X X d v; 模 块 加 载 和 卸 载 函数 的 形 式 如 下 : /+ 备 驱 动 模 块 加 载 函 数 / 设
・
计 算机技 术 ・
基 于 l u 26 i x . 内核 的字 符 设 备驱 动程 序设 计 n
嵌入式Linux下AD7707的驱动程序设计
6 ^_ 4 d B Fls ah
AI 1 N
以太 网 口
^
l4MB 6 l
S C2 O 3 4l S I OS 0 PM 1
1 垦 I
旦
DI N HI COM AI N3 DOUT
AI N2 LoC0M
AI N3 VBI AS
S I I oO PM S
了广 泛 的 应用 , 功 能 框 图如 图 2所示 。 其
DV W n E 一) E + n R FI N( R FI ) N(
1 系统 架构
系 统 的原 理 框 图 如 图 1所 示 。处 理 器 选 用 S ms n a ug
公 司 的 ¥ C2 1 3 4 0。该 处 理 器 是 基 于 ARM 9 0 内 核 的 1 / 2T 6
在 以前设计 的测试设 备中 由于受当时技术条件 的限 制, 使得 A D转换 器 的精度仅 为 1 / 2位 , 已不 能满 足更 现
高 精 度 的要 求 ; D A C和 D AC与 MC 的接 口较 复 杂 ; 模 U 在 拟 前 端 要 加 调 零 和 放 大 电 路 ; 备 只 能 通 过 R 2 2串 口 设 S3 与P C通 信 , 号 传 送 距 离 受 到 了 限 制 ; 作 台 面 也 较 庞 信 操 大 , 出 故 障 。针 对 这 些 情 况 , 们 对 设 备 的 控 制 部 分 进 易 我
入信号实现 2( 一0 7 倍 的 放 大 ; 运 用 ∑一△ 技 术 实 ~ ) 它 现1 6位 无 误 码 、 . 0 非 线 性 性 能 ; 的 输 出 速 度 可 由 00 3 它 指 令 设 定 , 围为 2 ~ 5 0 Hz 它 能 够 通 过 指 令 设 定 对 零 范 0 0 ; 点 和 满 程 进 行 校 正 , 有 自校 准 和 系 统 校 准 功 能 ; 与 具 它
AI 1 N
以太 网 口
^
l4MB 6 l
S C2 O 3 4l S I OS 0 PM 1
1 垦 I
旦
DI N HI COM AI N3 DOUT
AI N2 LoC0M
AI N3 VBI AS
S I I oO PM S
了广 泛 的 应用 , 功 能 框 图如 图 2所示 。 其
DV W n E 一) E + n R FI N( R FI ) N(
1 系统 架构
系 统 的原 理 框 图 如 图 1所 示 。处 理 器 选 用 S ms n a ug
公 司 的 ¥ C2 1 3 4 0。该 处 理 器 是 基 于 ARM 9 0 内 核 的 1 / 2T 6
在 以前设计 的测试设 备中 由于受当时技术条件 的限 制, 使得 A D转换 器 的精度仅 为 1 / 2位 , 已不 能满 足更 现
高 精 度 的要 求 ; D A C和 D AC与 MC 的接 口较 复 杂 ; 模 U 在 拟 前 端 要 加 调 零 和 放 大 电 路 ; 备 只 能 通 过 R 2 2串 口 设 S3 与P C通 信 , 号 传 送 距 离 受 到 了 限 制 ; 作 台 面 也 较 庞 信 操 大 , 出 故 障 。针 对 这 些 情 况 , 们 对 设 备 的 控 制 部 分 进 易 我
入信号实现 2( 一0 7 倍 的 放 大 ; 运 用 ∑一△ 技 术 实 ~ ) 它 现1 6位 无 误 码 、 . 0 非 线 性 性 能 ; 的 输 出 速 度 可 由 00 3 它 指 令 设 定 , 围为 2 ~ 5 0 Hz 它 能 够 通 过 指 令 设 定 对 零 范 0 0 ; 点 和 满 程 进 行 校 正 , 有 自校 准 和 系 统 校 准 功 能 ; 与 具 它
基于嵌入式Linux的键盘驱动设计
山西 电子技 术 21 0 0年第 5期
文章 编 号 :644 7 (0 0 0 - 6 -2 17 -5 8 2 1 )50 50 0
软 件 技 术
基 于嵌 入 式 Ln x的 键 盘 驱 动 设 计 iu
吴振英
( 州工业 职业技 术 学 院 , 苏 苏州 250 ) 苏 江 104
究, 针对嵌入式 系统的键盘驱动 的特 点, 设计基 于行列扫描的键盘驱动程序 。
关键词 : 矩阵键盘 ;嵌入式 l u ;键盘驱动程序 ix n 中 图分 类 号 :P 1 . 文 献 标 识 码 : T 3 11 A
1 键 盘驱 动程序 的设 计
随着 电子信息技术 飞速 发展 , 嵌入式系统构成 的各 种设 备得 到了广泛 的应用 , 入式 Ln x是 一种 开放 源码 、 实 嵌 iu 软 时、 多任务的操 作系统 , 是开发嵌 入式产 品 的优秀操 作 系统 平台, 其中键盘 是人机界 面中人类 监控计算机重要数据输 入 设备 … 。实现键盘有两种方法 : 一种是 采用现有的一些芯片 实现键盘 扫描 ; 二是用软 件实现键盘扫描。 目前许多 芯片可 用来实现键盘扫描 , 但是 键盘扫描的软件实现方法有助 于缩 减系统 的重复 开发成 本 , 而只需 很少 的 C U开 销。嵌入 式 P 控制器 的功能很强 , 可以充分利用这一资源。本课题提 出的 键盘方案是 以嵌人式 Lnx和 P A 5 iu X 2 5为 软硬件 平 台 , 过 通 测试 , 明其具有 良好 的稳定 性和实时性。 表
( )利用 rqeti 2 eus r _ q函数将 外设 的 中断服务 例程 挂载 到外部 中断处 理程序 中。本 系统 中利用 r us i e et r q — q函数 分 别为 4个列 G I PO口申请 中断资 源 , 分别 占用 了中断 号 1 2 、、 34 、。其 中 i 中断号 ;d er i 是 k _t—r l q是 U B 40的中断处理程 C1 0 序 ,d e l k_ t 代表键盘设备名 , G C D V D是 申请 时告诉系 r MA I— E I 统设备标 志, 用于共享 中断线。返 回值为 0表示 申请成功 。 ( )通过 函数 ms—ei e 注册 一个键 盘设备 , 分配 3 i r sr e gt 并 主设备号和从设备号 , 初始化一个环形队列 以及定义一个键 盘控制 的数据结构 。其 中包 括键值 、 的状态 和长按 标志 。 键 应用程序对设备驱动 的调用 实际是对 相应设 备文件进 行操 作, 利用 m n 命令将 此节点与对应设备建立联系。 ko d
文章 编 号 :644 7 (0 0 0 - 6 -2 17 -5 8 2 1 )50 50 0
软 件 技 术
基 于嵌 入 式 Ln x的 键 盘 驱 动 设 计 iu
吴振英
( 州工业 职业技 术 学 院 , 苏 苏州 250 ) 苏 江 104
究, 针对嵌入式 系统的键盘驱动 的特 点, 设计基 于行列扫描的键盘驱动程序 。
关键词 : 矩阵键盘 ;嵌入式 l u ;键盘驱动程序 ix n 中 图分 类 号 :P 1 . 文 献 标 识 码 : T 3 11 A
1 键 盘驱 动程序 的设 计
随着 电子信息技术 飞速 发展 , 嵌入式系统构成 的各 种设 备得 到了广泛 的应用 , 入式 Ln x是 一种 开放 源码 、 实 嵌 iu 软 时、 多任务的操 作系统 , 是开发嵌 入式产 品 的优秀操 作 系统 平台, 其中键盘 是人机界 面中人类 监控计算机重要数据输 入 设备 … 。实现键盘有两种方法 : 一种是 采用现有的一些芯片 实现键盘 扫描 ; 二是用软 件实现键盘扫描。 目前许多 芯片可 用来实现键盘扫描 , 但是 键盘扫描的软件实现方法有助 于缩 减系统 的重复 开发成 本 , 而只需 很少 的 C U开 销。嵌入 式 P 控制器 的功能很强 , 可以充分利用这一资源。本课题提 出的 键盘方案是 以嵌人式 Lnx和 P A 5 iu X 2 5为 软硬件 平 台 , 过 通 测试 , 明其具有 良好 的稳定 性和实时性。 表
( )利用 rqeti 2 eus r _ q函数将 外设 的 中断服务 例程 挂载 到外部 中断处 理程序 中。本 系统 中利用 r us i e et r q — q函数 分 别为 4个列 G I PO口申请 中断资 源 , 分别 占用 了中断 号 1 2 、、 34 、。其 中 i 中断号 ;d er i 是 k _t—r l q是 U B 40的中断处理程 C1 0 序 ,d e l k_ t 代表键盘设备名 , G C D V D是 申请 时告诉系 r MA I— E I 统设备标 志, 用于共享 中断线。返 回值为 0表示 申请成功 。 ( )通过 函数 ms—ei e 注册 一个键 盘设备 , 分配 3 i r sr e gt 并 主设备号和从设备号 , 初始化一个环形队列 以及定义一个键 盘控制 的数据结构 。其 中包 括键值 、 的状态 和长按 标志 。 键 应用程序对设备驱动 的调用 实际是对 相应设 备文件进 行操 作, 利用 m n 命令将 此节点与对应设备建立联系。 ko d
基于嵌入式Linux设备驱动程序的开发
微型 Lnx腕表 、 持设备 、 iu 手 因特 网装 置 、 客户 机 、 瘦
作系 统, Lnx. / . 内核 派 生 而 来。现 在 由 i 2 02 4 u u l u 越来越受到业界的青睐 , Ci x n 被移植到更多的无
MMU芯 片上 ¨ 。
2 设 备驱 动程 序
设备驱动程序是内核的一部分 , 是操作系统内核
编译 内核 的时候 可 以选 择 支 持 或 不 支持 模 块 功 能 ,
动程序仪在初始化时被调用一次。 () 2 服务 I0请求 的子程序 /
关键词 嵌入式系统 驱动程序 嵌入式 Lnx iu u l u Ci x n
随着 I e t n me 的普及与发 展 , 入 了后 P t 进 C时 代, 嵌入式系统的应用进入了一个全新 的时期。多 年以来嵌入式设备 中没有操作 系统 , 随着硬件 的 但
发展 , 嵌入 式 系统 变得 越 来 越 复 杂 , 些 功 能 必 须 有
防火墙等。虽然大多数 L u i x系统运行 于 P n c平 台 上 , Lnx 但 i 的这些特点决定它 同样适合 于嵌入式 u
系统应 用 。
嵌入式系统所具 有的特殊要求包括: 嵌入式系 统有不 同程度 实时性 要求 , 嵌入式在体积 、 功耗等 方面受具体工作环境 和开发生 产成 本的限制。嵌 入式系统的操作系统应根据 这些 环境有很好 的可
维普资讯
第 6卷
第 3期
20 0 6年 2月
科
学
技
术
与 工
程
⑥
V 1 6 No 3 F b 0 6 o. . e .2 0
17 —8 5 2 0 ) 30 2 —4 6 11 1 ( 06 0 -3 3 0
作系 统, Lnx. / . 内核 派 生 而 来。现 在 由 i 2 02 4 u u l u 越来越受到业界的青睐 , Ci x n 被移植到更多的无
MMU芯 片上 ¨ 。
2 设 备驱 动程 序
设备驱动程序是内核的一部分 , 是操作系统内核
编译 内核 的时候 可 以选 择 支 持 或 不 支持 模 块 功 能 ,
动程序仪在初始化时被调用一次。 () 2 服务 I0请求 的子程序 /
关键词 嵌入式系统 驱动程序 嵌入式 Lnx iu u l u Ci x n
随着 I e t n me 的普及与发 展 , 入 了后 P t 进 C时 代, 嵌入式系统的应用进入了一个全新 的时期。多 年以来嵌入式设备 中没有操作 系统 , 随着硬件 的 但
发展 , 嵌入 式 系统 变得 越 来 越 复 杂 , 些 功 能 必 须 有
防火墙等。虽然大多数 L u i x系统运行 于 P n c平 台 上 , Lnx 但 i 的这些特点决定它 同样适合 于嵌入式 u
系统应 用 。
嵌入式系统所具 有的特殊要求包括: 嵌入式系 统有不 同程度 实时性 要求 , 嵌入式在体积 、 功耗等 方面受具体工作环境 和开发生 产成 本的限制。嵌 入式系统的操作系统应根据 这些 环境有很好 的可
维普资讯
第 6卷
第 3期
20 0 6年 2月
科
学
技
术
与 工
程
⑥
V 1 6 No 3 F b 0 6 o. . e .2 0
17 —8 5 2 0 ) 30 2 —4 6 11 1 ( 06 0 -3 3 0
