再上一篇:6.5.2 Linux 的开发模式
上一篇:6.5.3 嵌入式 Linux 的体系结构
主页
下一篇:6.5.5 基于 Intel XScale 处理器的开发环境
再下一篇:6.5.6 嵌入式 Linux 驱动程序开发
文章列表

6.5.4 嵌入式 Linux 的发展方向

嵌入式系统(修订本)——Intel XScale 结构与开发 陈章龙 著

一、系统裁剪
因为嵌入式Linux是从PC桌面系统发展起来的,所以它的存储空间和运行空间都是比较 大的。比如redhat 7.2系统按照桌面系统安装需要1G左右的磁盘空间,运行命令行界面需要 至少4M内存。这样大的空间需求是很难适应嵌入式系统的要求的。嵌入式Linux从以下几个 方面对系统进行裁剪。
首先是减小内核。普通的Linux内核占用1M多的内存。在嵌入式系统中,内核的很多功 能是不需要的。比如虚拟内存的磁盘交换(swap),很多高级的网络功能(路由、防火墙) 等。还有内核中的一些预分配的空间,因为嵌入设备功能相对简单,可以减小这些空间。比 如网络代码中TCP散列表的大小。通过配置或修改内核,把不必要的功能去掉,可以大大节 省运行时占用的内存。
其次是减小动态连接库。一个较复杂的系统可能有多个进程同时在运行,这时最好采用 动态连接的发式生成应用程序。一个通用的C语言动态连接库占用1-2M的空间,用一个简 化的C库代替通用的库,可以减少动态连接库占用的存储空间和运行空间。
还有就是减小应用程序。使用精简的代码实现需要的功能是嵌入式系统的要求。目前有 一些专门为嵌入式Linux定制的基本命令,比如busybox,比普通桌面系统上的版本空间占用 减少很多。
除了减小各种代码占用的空间,嵌入式Linux更积极发展压缩的文件系统来进一步减小 系统占用的空间。压缩文件系统采用压缩算法存储数据,可以减少30-40%的空间。
二、实时扩展

Linux本身不是一个实时操作系统。但是很多嵌入系统要求实时性。就需要对Linux进行 改造以满足实时系统的要求。一般实时系统分为硬实时和软实时两种,这两种的区别在对外 界的事件做出反应的时间。硬实时系统严格要求在规定的时间内对事件做出反应,绝对不能 错过事件处理的规定时间。硬实时系统应用的场合对时间要求严格,如果出现在规定时间错 过事件的情况就意味着严重的失败。软实时系统是指在系统负荷较重的时候,允许发生错过 事件的情况。

Linux的实时扩展有两种实现。一种是修改进程调度算法。改变Linux使用的基于优先级 的调度算法为实时调度算法。这种实现一般认为仅实现了软实时。因为Linux的内核代码非 常庞大,内核中的很多部分是不可重入或者不可中断的,造成进程调度有不可预期的延时时 间(latency)。要减小Linux内核的等延时时间,需要对大量代码进行低延时的改造,并且很 难保证新的代码一定具有低延时的特性。

另一种实时扩展是使用双内核系统。使用双内核方案的实时系统在很早就提出来了。嵌 入式Linux的发展过程中也借鉴了这种思路,发展出了双内核实时Linux。这样的系统保留 Linux内核的全部功能,同时增加一个实时内核,两个内核共同工作,分别处理非实时任务 和实时任务。Linux内核作为实时内核的一个任务来运行。这样的系统具有很多优势。它的 扩展较容易,对原来Linux内核的改动小。它保持了Linux的全部功能,程序员依旧可以利用 Linux提供的所有服务。另外它可以实现硬实时,