Board logo

标题: 嵌入式Linux操作系统的广泛应用分析 02 [打印本页]

作者: samwalton    时间: 2013-8-22 09:04     标题: 嵌入式Linux操作系统的广泛应用分析 02

实时嵌入式 Linux 应用
有关嵌入式系统最重要的事务之一就是要求有一个实时操作系统。这里实时有好几种定义。对有些人来说,实时意味着在 1 微秒的时间内对事件作出反应,但对另外一些人来说,那就可能是 50 毫秒了。实时的硬度也各不相同。一些系统需要硬实时响应,在很短的时间内对事件作出确定性响应。但是,当我们对许多系统进行仔细分析时,我们发现事实上对响应时间的要求只是接近实时。实时的要求常常是时间和缓冲空间的折衷。随着内存越来越便宜,CPU 速度越来越快,现在接近实时比硬实时更加常见,许多商用的所谓实时操作系统远非硬实时。通常情况下,当您进入这些系统的详细设计部分时,就需提高警惕必须非常仔细地设计驱动器的中断和应用以满足实时要求。
RT-Linux(实时扩展的 Linux 系统)里含有时间紧要的函数可以用中断管理器来精确控制中断处理,从而很好地确保了关键性中断可以在需要时得到执行。这种方法的硬度主要取决于 CPU 中断结构和环境转换的硬件支持。这种方法可以满足广泛范围内的实时要求。即使没有实时扩展,Linux 也能很好地处理多个事件流。例如,运行于低端 Pentium 上的 Linux PC 系统能让多个 10BaseT 接口有效地执行,同时又以全速的 56KBPS 运行字符级串口,而不会丢失任何数据。
值得考虑的实时硬件和软件 Linux API 有 RTLinux、RTAI、EL 和 Linux-SRT.RTLinux 是一个最初在新墨西哥理工学院开发的硬实时 Linux API.RTAI(DIAPM)是由 Polytechnic Politecnico di Milano(DIAPM)航天工程部的程序员们开发的 RTLinux 实时 API 的副产品。EL/IX 是一个计划中的基于 POSIX 硬实时 Linux API,由 Red Hat 发起。Linux-SRT 是个实时 API 的软实时替代品,它可以使所有的 Linux 程序无需修改或者重新编译即可增强性能。
请参阅本文后面的参考资料部分,查找有关前面内容的资料和一些 Web 站点,那里提供了用于不同类型的标准 Linux 操作系统的软件扩展、开发工具、支持以及培训课程。
短暂的确定性响应时间
某些实时嵌入式系统需要迅速对外部事件作出响应,以完成一项特定任务。比如,嵌入一枚导弹的一个定制的微控制器在指引导弹瞄准它周围环境的一个特定目标之前,需要迅速对诸如移动目标、天气和人等的外部事件作出迅速响应。短暂的确定性响应时间是指嵌入式系统可以确定它对外部事件作出响应的时间。

配置步骤
现在让我们来看一下如何 make LEM,它是一个小型的可嵌入 Linux 分发版,既提供网络又提供 X 服务器。您可以下载该分发版,尽管它并非必需。您需要一个完全的 Linux 分发版来建立自己的嵌入式 Linux 操作系统,其中将包括您所需要的一切(实用程序、源代码、编译器、调试器和文档)。下面是能用来 make LEM 的软件列表:
TinyLogin: TinyLogin 是一套 tiny UNIX 实用程序,它用于登录嵌入式系统、接受其验证身份、为其修改密码,并能维护其用户和用户组。为了增强系统安全性它还支持影子口令。正如它的名字所暗示的, TinyLogin 非常小,对嵌入式系统上的 BusyBox 是极好的补充。
BusyBox:BusyBox 是一个多调用的二进制文件,它提供了 POSIX 式的命令和专用函数的最小子集。它适合于非常小的嵌入式系统,比如引导磁盘等等。特别用于 Debian 拯救/安装系统(它激发了对最初的 BusyBox 的开发)、Linux Routeur 方案、LEM、lineo 及其它地方。Busybox 是由 Erik Andersen 维护的。
Ash:Ash 是个非常小的 Bourne shell.
Sysvinit:Sysvinit 是 Linux 最常用的 init 包。我们将会用到 init 和 C 语言版 start-stop-daemon.
总结
在嵌入式应用的领域里,从因特网设备到专用的控制系统,Linux 操作系统的前景都很光明。所有新造的微型计算机芯片中大约有 95% 都是用于嵌入式应用的。由于 Linux 功能强大、可靠、灵活而且具有伸缩性,再加上它支持大量的微处理器体系结构、硬件设备、图形支持和通信协议,这些都使它作为许多方案和产品的软件平台越来越流行。
由于可以公开免费得到 Linux 源代码,因此对 Linux 和它支持的软件组件的许多修改和配置也得到了不断改进,以满足采用 Linux 的市场和应用的多种需求。另外还有小型版本和实时增强版本。尽管 Linux 开始是作为 PC 体系结构的操作系统,但是现在已经有了非 X86 CPU 的版本(带或不带内存控制单元),包括 PowerPC、arm、MIPS、68K 甚至是微控制器。但是,请注意,在不久的将来,在许多其它的信息技术(IT)领域会出现更多!现在 Linux 广泛用于各类计算应用,不仅包括 微型 Linux 腕表、手持设备(PDA 和蜂窝电话)、因特网装置、瘦客户机、防火墙、工业机器人和电话基础设施设备,甚至还包括了基于集群的超级计算机。让我们看一下 Linux 用作嵌入式系统需要提供哪些功能,以及它在目前可用的选择中最具吸引力的原因所在。
嵌入式系统的出现
用于控制设备的计算机,也叫做嵌入式系统,它的历史几乎和计算机自身的历史一样长。它们最初于六十年代晚期在通讯中被用于控制机电电话交换机。由于在过去的十多年里,计算机产业不断朝着更小的系统方向发展,嵌入式系统也与之一起为这些小型机器提供了更多的功能。渐渐地,就需要把这些嵌入式系统连接到某种网络上,因而也就产生了对网络栈的要求,这提高了系统的复杂程度并要求更多的存储器和接口,还有,您猜对了,操作系统的服务。
七十年代晚期出现了用作嵌入式系统的现成的操作系统,现在有许多可行的选择方案。其中,一些主要的竞争者开始崭露头角,比如,VxWorks、pSOS、Neculeus 和 Windows CE.
在嵌入式系统中使用 Linux 的优点和缺点
虽然大多数 Linux 系统运行在 PC 平台上,但 Linux 也可以作为嵌入式系统的可靠主力。Linux 流行的“back-to- basics”方法使得它的安装和管理比 UNIX 更加简单灵活,这对于那些 UNIX 专家们来说又是一个优点,他们已经因为 Linux 中有许多命令和编程接口同传统的 UNIX 一样而赏识了。
典型的压缩包装 Linux 系统经过打包,在拥有硬盘和大容量内存的 PC 机上运行,嵌入式系统可不要这么高的配置。一个功能完备的 Linux 内核要求大约 1 MB 内存。而 Linux 微内核只占用其中很小一部分内存,包括虚拟内存和所有核心的操作系统功能在内,只需占用 Pentium CPU 系统的 100 K 内存。只要有 500 K 的内存,一个有网络栈和基本实用程序的完全的 Linux 系统就可以在一台 8 位总线(SX)的 Intel 386 微处理器上运行的很好了。由于内存要求常常是需要的应用所决定的,比如 Web 服务器或者 SNMP 代理,Linux 系统甚至可以仅使用 256 KB ROM 和 512 KB RAM 进行工作。因此它是一个瞄准嵌入式市场的轻量级操作系统。
与传统的实时操作系统相比(RTOS),采用象嵌入式 Linux 这样的开放源码的操作系统的另外一个好处是 Linux 开发团体看来会比 RTOS 的供应商更快地支持新的 IP 协议和其它协议。例如,用于 Linux 的设备驱动程序要比用于商业操作系统的设备驱动程序多,如网络接口卡(NIC)驱动程序以及并口和串口驱动程序。

闪存
快闪 RAM 内存是大多数 Palm 设备用来存储操作系统的专用的存储器。它具有允许操作系统升级的优点,还可以用于数字式蜂窝电话、数字式照相机、LAN 交换机、PC 卡、数字式机顶盒、嵌入式控制器和其它小型设备。嵌入式系统,如嵌入式 Linux,不要求有磁盘驱动器,尽管可能使用其它的内存组织方式。因此如果,打个比方,Linux 用完了闪存,它就可以将其中一部分作为只读的文件系统来存储额外的程序和静态数据。
核心 Linux 操作系统本身的微内核体系结构相当简单。网络和文件系统以模块形式置于微内核的上层。驱动程序和其它部件可在运行时作为可加载模块编译到或者是添加到内核。这为构造定制的可嵌入系统提供了高度模块化的构件方法。而在典型情况下该系统需结合定制的驱动程序和应用程序以提供附加功能。
嵌入式系统也常常要求通用的功能,为了避免重复劳动,这些功能的实现运用了许多现成的程序和驱动程序,它们可以用于公共外设和应用。Linux 可以在外设范围广泛的多数微处理器上运行,并早已经有了现成的应用库。
Linux 用于嵌入式的因特网设备也是很合适的,原因是它支持多处理器系统,该特性使 Linux 具有了伸缩性。因而设计人员可以选择在双处理器系统上运行实时应用,提高整体的处理能力。例如,您可以在一个处理器运行 GUI,同时在另一个处理器上运行 Linux 系统。
在嵌入式系统上运行 Linux 的一个缺点是 Linux 体系提供实时性能需要添加实时软件模块。而这些模块运行的内核空间正是操作系统实现调度策略、硬件中断异常和执行程序的部分。由于这些实时软件模块是在内核空间运行的,因此代码错误可能会破坏操作系统从而影响整个系统的可靠性,这对于实时应用将是一个非常严重的弱点。
另一方面,现成的 RTOS 完全是为实时性能而设计的,它通过在由用户而非系统级进程启动时分配给某个进程以高于其它进程的优先级的方式来实现可靠性。进程在操作系统看来就是在内存里或硬盘驱动器上执行的程序。给他们指定进程 ID 或者数字标识符为的是让操作系统跟踪正在执行的程序和这些程序的相关联的优先等级。这样的方式保证了 RTOS 时间能比 Linux 提供更高的可靠性(可预见性)。但最重要的,这还是一种更加经济的选择。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0