尽管Linux不是为嵌入式系统设计的,特别不是为实时系统设计的,但是,由于它的模块化结构使其具有良好的裁剪性、丰富的资源和源代码开放的特点,所以还是有人把它应用在嵌人式系统中,并获得了一定的成功。多年来,人们一直在对Linux进行修改和改造,并且形成了许多可用于嵌入式实时系统的Linux版本。本节重点介绍一些Linux的嵌人式修改版本,以使读者了解Linux在嵌入式应用特别是实时应用时其弱点之所在以及人们的解决方法,从而更深刻地认识和了解嵌入式实时操作系统的本质及实现方法。
1.实现实时Linux的思路
在解决Linux系统实时性问题的思想方法方面,有如下四个思路:
●提高时钟精度,解决中断和调度延时问题;
●解决在Linux内核不允许调度的问题;
●提供对于实时多媒体应用的支持,包括引入新颖的调度算法(网络包调度、进程调度和磁盘调度);
●引入新颖的调度框架以及资源管理思想,以更好地支持网络系统中的QoS要求。
2. pCLinux
pCLinux是一种由Linux 2.0内核发展而来的嵌入式Linux版本,是专为没有MMU的微处理器(如ARM7TDMI、Coldfire等)设计的嵌入式Linux操作系统。
pCLinux与Linux基本相同,不同的只是对Linux的内存管理和进程管理部分进行了改写.以满足无MMU处理器的要求,因为目前大多数嵌入式系统不需要MMU,或者说无法使用MMU。
尽管大多数内核源代码都被重写,使得pCLinux的内核比Linux 2.0的内核要小得多,但ptCLinux成功地保留了Linux操作系统良好昀稳定性、优异的网络功能以及优秀的文件系统支持等主要优点。
ptCLinux系统多采用romfs文件系统,它是一种相对简单、占用空间较少的文件系统。空间的节约来自于两方面:首先内核支持romfs文件系统比支持Ext2文件系统需要更少的代 码;其次romfs文件系统相对简单,在建立文件系统超级块(Superblock)时需要更少的存储空间。romfs是只读的文件系统,禁止写操作,因此系统同时需要虚拟盘(RAMDISK)支持临时 文件和数据文件的存储。
随着技术的发展,近年来日志文件系统在ptCLinux系统上得到了较多的应用,其中以支 持NOR FLASH的JFFS、JFFS2文件系统和支持NAND FLASH的YAFFS最为流行。这 些文件系统都支持掉电文件保护,同时支持标准的MTD驱动。
从目标系统开发者的角度来看,创建子进程的函数vfork()是ptCLinux与标准Linux应用程序之间最重要的不同之处,只有对vfork()与fork()两个函数的差异有了详细的了解,才能顺利地完成从Linux到ptCLinux的程序移植。
目前,ptCLinux已在嵌入式系统中得到了成功的应用,但由于它并不是为了Linux的实时性而提出的,因此ptCLinux对实时应用的支持方面并不好,从而使得它在嵌人式应用领域备受质疑。因为有些人们认为嵌入式系统必定是实时系统,既然实时性不好,那么,ttCLinux就不能叫做嵌入式操作系统。其实不然,在实际应用中确实有些嵌入式系统并不是实时系统,尤其不是硬实时系统。因此,ptCLinux在一些没有很强的实时要求的嵌入式系统中的应用还是很优秀的。但这毕竟是pCLinux的一个弱点和缺憾。也正是为了弥补这个缺憾,世界上众多的专家和爱好者正在努力地工作着。