📄 linux
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0048)http://www.pocketix.com/application/linuxuse.htm -->
<HTML><HEAD>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.2920.0" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff>
<P align=left><B><FONT color=#ff3333 size=4>Linux在嵌入式系统中的应用</FONT></B></P>
<P align=left>日期: 2000年5月18日 20:36 译者:陈德勇 e_mail: chendyg@sohu.com 原作:Joel
R.Williams (emlinux的主要设计师,专为网络和通讯设计嵌入式系统,http://www.emlinux.linux) </P>
<DIV align=left>
<TABLE align=center border=1 width="96%">
<TBODY>
<TR>
<TD>
<P
align=left>摘要:Linux系统不仅能够运行于PC平台;然而在嵌入式系统中Linux仍然可以大放光芒。本文描述了嵌入式系统的特色,和如何在嵌入式系统中应用Linux。</P>
<P
align=left>计算机用于嵌入式控制设备领域的历史和计算机本身的历史一样久远。最初的用于控制机电式电话交换器的通讯设备中“固态控制程序”就是嵌入式程序。“计算机系统”在当时并不普遍;所以固态程序存放在内存中控制相应的设备。在那种时代,运行控制程序是很先进的思想,而且当时也只能如此而已。</P>
<P
align=left>那时的计算机是专为特定的用户设计,特殊的应用程序指令、I/O设备和主要的计算设备集成在一起。微处理器的产生改变了这种局面,价格低廉、结构小巧的CPU和外设连接在总线上形成了比较大的系统。这种硬件架构很稳定,于是在这个基础上,这建立起了通用的软件开发环境和编程模式,且简化了编程,。
</P>
<P
align=left>软件也在随着硬件的发展而发展;开始只有简单的工具用于编程和调试,而且每一个软件都必须从头编写。程序大都采用宏汇编语言,汇编程序还不很完善,调试是一件很麻烦的事。因此一直到70年代的中期,模块化编写程序和标准化的运行库才逐渐流行起来。
在70年代的后期,出现了嵌入式系统的操作系统。它们采用汇编语言编写,而且只能运行在相应的特殊处理器上;处理器过时,则这个操作系统就没有用处了,对新的处理器必须重新编写操作系统的所有代码。C语言出现以来,采用C语言操作系统更有效率了,操作系统的编写有了很大的改观。C语言有很好的稳定性和可移植性,所以今天的许多操作系统都使用C来编写。
于是在80年代末,出现了好几个商业的嵌入式操作系统。而且它们已经演化成为今天的主流嵌入式操作系统。比如很有名的、使用者众多的操作系统:Vxwork、pSOS、Neculeus和Windowss
CE。 </P>
<P
align=center>不过很多的嵌入式系统还没有使用操作系统,它们仅仅包含一些控制流程而已。在嵌入式系统相对简单的情况下,这些控制流足以应付。但是,当嵌入式系统的功能复杂后,简单控制逻辑就不够用了,这时你必须使用操作系统。如果不使用操作系统将会使得控制系统逻辑结构复杂混乱,很容易出错。再者,有些嵌入式系统需要接入网络系统,比如宾馆的门锁控制已经需要接入网络,因此就更需要嵌入式的操作系统来支持应用软件。</P>
<P
align=left>除了商业化的操作系统外,还有其他的有版权要求的非商业化嵌入式操作系统可以使用。然而今天的Linux系统有着嵌入式操作系统需要的很多特色、突出的优势:适应于多种CPU和多种硬件平台,性能稳定,裁剪性很好,开发和使用都很容易。因此,我们决定在嵌入式系统中使用Linux操作系统。
</P>
<P align=left>1.它具有很好的工具,可以跨越ICE等屏障 </P>
<P
align=left>原来开发嵌入式系统的关键是需要一套好用的开发和调试工具;而且在开发所不同阶段还需要不同的工具。就比如工匠,只有好的工具才能够使工作完成得又好又快。</P>
<P
align=left>传统的开发调试工具就是ICE-在线仿真器;它取代目标板的微处理器,给目标程序提供仿真环境,同时可以连接监视器;允许开发者调试和监视程序的运行。尽管这种运行方式会引起一些奇怪的问题,但是它总能够让你明了程序在目标板的工作状态,免除了对底层的软硬件接口的猜测。但是,这种设备价格非常贵。过去,甚至在整个开发期内,开发嵌入式系统主要依靠这些调试工具。
可是,我们发现,一旦软硬件能够正常支持串口的运行时,我们可以使用其他的调试办法。现代的嵌入式系统采用相当成熟的微处理器。因此很容易使得串口工作。串口连接成功,可以进行很多的开发调试。所以我们不用ICE也可以很好地开始开发和调试工作了,同时还降低开发费用。</P>
<P
align=left>Linux利用GNU项目的C编译器来编译程序,使用gdb源程序级调试器来调试程序。它们提供了合适的手段来使你能够开发嵌入式的Linux系统。为了开发基于Linux的嵌入式系统,可以按以下方法进行:
</P>
<P align=center>向串口输出提示字符串,例如“hello word ”或“Waston, come here I need
you!”等,
然后通过串口,指挥gdb开始工作。以这种方式和另外一台运行gdb程序的Linux主机系统“交谈”,通过串口,你可以很方便地让gdb调试目标程序。通过串口和gdb通讯,可以进行C源程序级的调试。甚至你还可以以串口把其他的程序下装到RAM或flash存储器。通过串口,使用gdb可以使得软硬件的初始化代码继续运行到核心全部启动。</P>
<P
align=left>一旦核心在运行了,你就可以使用其他的更好的调试工具,象Kgdb等,如果连接了网络,你也可以让网络工作起来。同时你就可以用GUI的xgdb来调试应用程序。</P>
<P align=left>2.满足实时性时要求 </P>
<P
align=left>细细分析起来,大多数系统并不需要严格的实时性。而嵌入式系统也经常被误解为就是实时性系统。其实,多数嵌入式系统并不需要实时性,而且实时性本身是个相对的概念绝对的实时性是指对需要的服务以限定的方式和在限定时间内提供,比如在微秒级内响应。
这种硬实时性功能只是 针 对 特 殊 的 设 备而 言 ,例 如 数 字 信 号 处 理 等。 而这 些 要 求 使 用 特 殊 的 硬 件
如FIFO、DMA 和 其 他 特 殊 设 计 的 硬 件 也 可 以 满 足 。</P>
<P align=left>有 些 设 计 者 不 能 够 准 确 地 分 析 出 系 统 真 正 实 时 需 求 , 很 多 情 况 下 对 实
时 的 需 求 在1-5 毫 秒 内 响 应 就 可 以; 大 部 分 情 况 下, 软 实 时 响 应 足 以 满 足 要 求 :WINDOWSS
的98Crashed_Yet 在98% 的 时 间 内 可 以 在4 每 秒 内 响 应 , 如 果 时 间 是20 秒, 则 总 会 响 应 。
那 些 软 实 时 性 容 易 满 足 。 需 要 考 虑 的 因 素 包 括 : 上 下 文 转 换 时 间 、 中 断 延 迟 、 任 务 的
优 先 级 和 任 务 调 度 方 式。上 下 文 转 换 时 间 曾 经 是 实 时 性 分 析 的 重 点, 但 是 因 为CPU 速 度 大
幅 度 提 高, 它 不 再 是 关 键 问 题。</P>
<P align=left>现 在,严 格 要 求 的 实 时 性 任 务 的 决 定 因 素 是 中 断 例 程 本 身 和 内 核 中 的 其
他 驱 动 程 序 有 关; 而 响 应 延 迟 时 间 主 要 受 中 断 的 优 先 级 和 其 他 进 程 会 暂 时 地 关 闭 中 断 响
应 的 影 响。 因 此 管 理 和 驱 动 中 断 的 机 制 必 须 保 证 实 时 要 求。</P>
<P align=left>对 于Intel x86 处 理 器, 实 时 扩 充 可 以 在Linux 系 统 中 很 容 易 进
行,RT-Linux 就 是 很 好 的 例 子 (见http://www.rtlinux.org/)。 它 主 要 是 把Linux 的 任 务
作 为 自 己 的 一 个 任 务, 因 此 实 时 性 要 求 很 高 的 任 务 不 受 非 实 时 的Linux 的 干 扰,可 以 得 到
满 足。 另 外 还 提 供 了 实 时 任 务 和Linux 的 基 本 核 心 和 其 他 任 务 间 的 接 口 , 这 些 接 口 是 不
需 要 很 强 的 实 时 性。 这 种 架 构 为 其 他 的 嵌 入 式 系 统 提 供 了 一 个 参 考。 关 键 因 素 就 是 实 时
性 的 代 码 和 非 实 时 代 码 分 开 设 计, 而 且 实 时 应 用 程 序 的 处 理 方 式 和 其 他 程 序 的 处 理 方 式
差 不 多。 </P>
<P align=left>3. 适 合 嵌 入 式 系 统 的Linux 有一 种 观 点 认 为 :</P>
<P align=left>用 户 不 必 直 接 干 预 机 器 的 运 行, 即没 有 用 户 接 口 的 应 用 系 统 是 嵌 入 式 系
统。 其 他 的 比 如 电 梯 控 制 系 统 应 该 是 嵌 入 式 系 统, 但 是 它 需 要 人 为 控 制 。 连 接 网 络 需 要
监 视 和 控 制 网 络 系 统 运 行 的 系 统 ,仍 然 是 嵌 入 式 系 统; 因 此应 该 根 据 系 统 的 主 要目 的 和 功
能 来 判 定 是 否 是 嵌 入 式 系 统。 </P>
<P align=left>最 小 的 嵌 入 式Linux 系 统 必 须 包 括 以 下 主 要 的 要 素: </P>
<P align=left>1. 启 动 程 序 ;</P>
<P align=left>2.融 合 了 内 存 管 理 、 进 程 管 理 和 时 间 分 批 服 务 的 核 心; </P>
<P align=left>3.初 始 化 程 序。 为 了 达 到 要 求, 而 且 为 了 保 持 最 小 系 统, 需 要 添 加 以 下 要
素: </P>
<P align=left>1. 硬 件 的 驱 动 程 序; </P>
<P align=left>2. 必 须 的 应 用 程 序。 根 据 其 他 需 要, 你 可 能 增 加 以 下 功 能: </P>
<P align=left>1. 文 件 管 理 系 统( 在ROM 或RAM中); </P>
<P align=left>2. TCP/IP 通 讯 协 议;</P>
<P align=left>3. 磁 盘。 </P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -