Embedded 版 (精华区)
发信人: he (无情的雨), 信区: Embeded_system
标 题: 嵌入式系统以及如何构造一个嵌入式系统概览-7(转载)
发信站: 哈工大紫丁香 (2001年05月16日13:34:21 星期三), 转信
健壮性---比政客的承诺还可靠
这是显而易见的,作为一种选择,Linux已被普遍地认为能够在PC平台上可靠地,稳定地
运行。嵌入式内核自身有多稳定?对于大多数微处理器来说,Linux是很好用的。将Lin
ux移植到新的微处理器体系也是非常迅捷的。一般是将其移植到一种新型的目标板,这
种新型的目标板包含有独特的外设,当然还有CPU.
幸运的是,大部分的内核代码都是相同的,因为它们与微处理器无关,所以,移植的工
作都集中在那些不同的部分,通常是一些存储器管理及中断处理程序。一旦完成,它们
往往是非常稳定。如同前面谈到的,引导的过程非常依赖于硬件的变化而变化,所以,
一定要周密地计划一番。
设备驱动程序虽然变化多端,但其中一些已相当稳定。同时,你的选择也不算太多,一
旦离开PC平台,那就只有自己去写了。所幸的是,在我们周围已有许多既有的设备驱动
程序,你总能找到一个近似的,而去修改它。驱动程序的接口是明确定义的。大多数驱
动程序之间都是相似的,所以,移植一个磁盘,网络,串行口驱动程序,从一个设备到
另一种,经常不是太难。我发现大多数的驱动程序都写的很好,并很好理解,而难题反
而是在我手上的那本讲解内核结构的书。
就我个人的经验而言,Linux与我曾经使用过的那些顶顶大名的商业操作系统一样稳定。
总的来说,关于这些操作系统(包括Linux)的问题都源于对系统工作策略的误解,而不是
纯代码bug或基本设计错误。大量的操作系统的bug故事,在这里没有必要再重提。而Li
nux的优点,就在于其源码是公开的,并有很好的注释和完整的文档说明,从而,你也就
拥有了控制与解决一切问题的能力基础。
即内核与驱动程序之后,还有一点:如果一个系统中有一只硬盘,那么,系统的可靠性
可能会成为问题。我们拥有两年的经验和时间,都沉浸在有盘嵌入式系统中。这些系统
从不关机,电源有几次被意外地断掉,可是,EXT2文件系统表现得很好。标准的Linux初
始化脚本运行了fsck程序。这个程序做了一个漂亮的检查与清理不正常节点的工作。还
有一处英明之举,也是一处较大的变动,我们将update程序由30秒执行一次,调整为5或
10秒执行一次。这使得磁盘高速缓存中的数据能较频繁地写回到磁盘里,从而,降低了
丢失数据的可能性。
没有万能钥匙
嵌入式Linux当然有它的不足。比如,它很占内存,尽管不比一些商业竞争者的情况更坏
。但可以通过消减一些不必要的功能来改善,也有可能得不偿失,因为很可能会产生比
较严重的bug。
大多数Linux应用程序都会使用虚拟内存交换,这在很多嵌入式系统中是一种非确定因素
,所以,不要假定任何一个无盘嵌入式系统能够运行什么Linux应用程序。
低等级的,内核级的调试工具仍然不是很好使。kgdb会使人感到很不适应,你常要rebo
ot 。很不幸,调试仍然是以打印语句为主。
对于我来说最严重的问题是心理作用。Linux是一种极具适用性的操作系统。可是,嵌入
式系统在通常情况下是不具备这种性质的;它们是对于特定的用途,进行过仔细优化了
。但Linux的这种适用性倾向,保持了系统的通用性和多变性,同时也是一个奢侈的目标
,付出的代价很高,需要增添许多额外的工作,会有许多附加的程序产生,从而增加了
软件包的体积,有时还会以降低性能为代价。举一个常提到的例子--配置程序:在一个
网络接口上配置IP地址,一般是由启动脚本中的ifconfig完成的。这是一个大小约28K左
右程序,其实只用几行代码就可以完成它的工作:它负责根据配置文件中的内容初始化
一些相应的数据结构。事情就是这样:当一切成为一件合理的事情去做时,你不这样做
,又能怎样呢?不然"软件"意义又何在呢。
结束语
在嵌入式系统中使用Linux是可能的,并且已经成功了。它可以可靠地工作。从此,我们
就在开发的成本上有了第二种选择。
--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.235.250]
--
※ 修改:·he 於 05月16日13:43:17 修改本文·[FROM: 202.118.235.250]
※ 转载:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: 202.118.235.250]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:10.060毫秒