字符设备驱动程序

应用程序

内核

驱动程序

 

一些概念:

 

计算机生成了可选文字:
库 ( 比 如 glibc) 给 应 用 程 牛 提 供 的 open 、 read 、 write 、 ioctl* mmap 等 接 口 数 被 称 为 
系 统 调 用 , 它 们 都 是 设 置 好 相 关 寄 存 器 后 , 执 行 某 条 指 令 引 发 异 常 进 入 内 核 。 对 TARMk! 
构 的 CPU, 这 条 指 令 为 swio 除 系 统 调 用 接 口 外 , 痄 还 提 供 萁 他 函 数 , 比 如 字 符 串 处 理 函 
数 (strcpy 、 strcmp3)* 输 入 / 输 出 函 数 (scanf 、 printf 等 ) 、 数 学 库 , 还 有 应 用 程 序 的 启 动 
代 码 等 。 
在 异 常 处 理 函 数 中 , 内 核 会 根 据 传 入 的 参 數 执 行 各 种 操 作 , 比 如 根 据 设 备 文 件 名 找 到 对 
应 的 驱 动 程 , 调 用 驱 动 程 序 的 相 关 函 数 等 。 
一 般 来 说 , 当 应 用 程 牛 调 用 open 、 read 、 write 、 ioctl 、 mmap 等 函 敵 后 · 将 会 使 用 驱 动 
程 序 中 的 open 、 read 、 write 、 ioctl 、 mm 叩 函 敵 来 进 行 相 关 操 作 , 比 
实 际 上 , 
静 态 链 接 或 动 态 加 载 。 
终 是 要 编 进 内 核 去 的 : 过

 

计算机生成了可选文字:
从 上 面 操 作 LED 的 过 程 可 以 知 道 , 与 应 用 程 序 不 同 , 驱 动 程 序 从 不 主 动 运 行 , 它 是 被 动 
的 ; 根 据 卜 刃 : 刂 程 序 的 要 求 讲 行 初 始 化 , 根 据 应 用 程 序 的 要 求 进 行 读 写 。 驱 动 程 序 加 载 进 内 核 
时 , 只 是 告 诉 内 核 ' ' 我 在 这 里 , 我 能 做 这 些 丁 作 , , 至 丁 这 些 “ 工 作 ” 何 时 开 始 , 取 决 于 应 用 
程 序 。 当 然 , 这 不 是 绝 对 的 , 比 女 1 用 户 完 个 可 以 写 一 个 山 系 统 时 钟 触 发 的 驱 动 程 序 , 让 它 自 
动 点 亮 LED. 
在 Linux 系 统 屮 , 应 用 程 运 行 于 “ 用 户 空 间 " , 拥 有 MMU 的 系 统 能 够 限 制 应 用 程 序 的 
权 限 〔 比 如 将 它 限 制 于 某 个 内 存 块 中 ) , 这 可 以 避 免 用 程 序 的 错 误 使 得 整 个 系 统 崩 溃 。 而 驱 
动 字 运 行 于 “ 内 核 空 间 " , 它 是 系 统 “ 信 任 " 的 一 部 分 , 驱 动 釋 序 的 错 误 有 可 能 导 致 整 个 糸 
统 崩 溃 。

 

posted @ 2015-06-28 20:41  cuiz_book  阅读(106)  评论(0编辑  收藏  举报