本文剖析了Linux的特征,稳健性和局限性以及最重要的实时范畴的运用。曩昔,由于非PC的嵌入式硬件渠道价格昂贵,使得许多高功用要求的嵌入式体系不能完成。现在,由于廉价的PC硬件大力开展和广泛的运用,使得那些高功用要求的嵌入式体系有了完成的或许。
可是,嵌入式PC渠道的体系软件却不那么具有招引力。当然你能够挑选DOS,不过它先天缺乏。你也能够挑选WINDOWS,可是经过细心的研讨,你会发现它的实时功用很差。许多高档实时操作体系价格不菲,可移植性欠好。从1991年以来,在网络下开展的Linux操作体系,在服务器和PC桌面机上,现已是Microsoft 的DOS和WINDOWS95/98的微弱对手。
并且它的功用比WINDOWS好得多。假如你有爱好 ,你能够从网上自在下载,或掏比CD本身贵一点的价格买到。最近有人把实时性的部件参加Linux操作体系,使得它成为嵌入式体系规划师的一个极端有价值东西。尽管它的实时部件不如其他的RTOS那么杂乱,运用的内存不能太小,可是它的其他长处足以逾越和补偿它的缺乏。
在嵌入式体系中运用PC硬件的优点清楚明晰,出产量大,简略购买,价钱比较廉价。并且还很简略搞到数模转换板、网络接口板、图象收集和处理板等专用板。再加上选用PCI总线,体系功用将极大进步。在操作体系范畴却没有相应的改动。
高档嵌入式体系不只需求价格低廉的硬件,一起也需求许多杂乱的功用,比方图形用户接口、网络传输。在操作体系方面,咱们也需求价格廉价、功用老练、一起又能够满意高档嵌入式体系的需求。
现在的Linux现已引起了计算机国际的高度重视。许多计算机运用者和厂商都被它的稳定性、易得性等特征招引。它简直彻底兼容UNIX体系中的功用和开发东西、运用程序。它供给了TCP/IP通讯功用、Internet的Client Server 功用,以及C、C++、JAVA等言语的编译东西,这些东西和功用都比MS WINDOWS老练、完善、易用许多。当你在运用和编程中遇到问题时,经过Internet你会得到不计其数的专家和热心人的协助。
我认为,在处理问题时,经过Internet的协助会比单纯依托RTOS厂商便利有用。在厂商协助下解 决问题,一次只会得到一种计划,假如不可,你有必要从头开始;在Internet上,你会得到许多答案。今日的Linux现已得到了一些厂商的支撑,你也能够从它们那得到技术支撑。可是,最重要的是你具有源代码,你能够对问题进行深化的研讨,乃至能够扩展功用 。
Linux是MS WINDOWS 和DOS之外所绝佳的挑选。许多嵌入式体系工程师也现已开发了Linux在嵌入式体系方面运用的价值,尤其在专用硬件环境和多处理器方面。现在的问题是怎么使使Linux体系具有实时性。当时有两种计划来处理这个问题:一个是POSIX办法,别的一个是底层处理。
POSIX是类UNIX操作体系的规范化计划,意图是进步软件的可移植性,加快软件规划师的作业。POSIX.1b已有实时性扩展,包含信号、内存确定、时钟和计数、音讯行列以及抢先调度战略。不过这种办法比较适宜作业站体系,对依据PC的嵌入式体系并不是很好。
其次是类UNIX的体系调用比较繁复,不如pSOS+等的明晰。可是依然有一批开发者在优化Linux,当然也取得了一些成功,比如内存确定办法和使命调度算法有了改善。这其间最主要的效果是POSIX线程(界说于POSIX.1c)。这个功用对嵌入式体系来说很好。
另一个计划从底层来进步Linux的实时性,即所谓的“硬”实时性。在这个方面做得最为成功的是New Mexico institute of Mining and Technology,他们在Linux体系下参加实时性的kernel(中心),让Linux本身运转在优先级较低的层面上。
这种规划办法对Linux 体系的批改削减到最低,一起添加必需的实时功用。这样使得在Linux本身的晋级后,能够进行很少的批改就能够把RT-linux引入新版的Linux中心。RT-Linux和Linux的结合供给一切的实时功用,包含底层使命的创立、中止使命的装置、底层使命行列办理、中止使命的运转等。这种规划使得在体系中有两种域:实时域和非实时域。实时域的函数满意实时性要求;不过,使命有必要简略,由于分批给它们的资源比较少。
非实时域的函数能够享受体系悉数资源,可是它们的实时性比较差。两个域之间的通讯办法也供给了。在一切RT-Linux时,有必要保证需求的函数在各自的运转域是适宜的,不要认为从前的非实时函数在装置装置了RT-Linux后就具有了实时性,对实时性要求有关的函数有必要放到实时域中去运转。
RT- Linux中使命处理也比较简略,一切rt-task-init()创立和发动实时使命。实时域和非实时域的函数通讯办法是经过FIFO进行。一切 FIFO的显着优点是便利数据的传输,假如设定其长度为零,又能够当成信号一切。现在的缺乏是没有供给优先级承继机制(为了防治优先级的反转)和使命的安全删去,可是在规划过程中却能够依托细心规划来防止这种过错产生。当然运用零长的FIFO来挂起程序的运转的办法有一点费事,不过它总算是一种办法。新规划的办法是设定超时功用。
RT-Linux作为简略、敞开的软件,运用者能够能够依据你们的需求来更新这些功用,规划出更好的计划,并发布给我们。
RT- Linux中最为引人注意的特征是它使得Linux的中心能够被抢先。Linux以及其他类UN IX操作体系的中心都不能被长时间打断。正是由于这一点,使得Linux不能是一个彻底合格的实时操作体系。不过,运用上面介绍的两种办法都能够进步 Linux的实时性。
榜首种办法从头规划中心,当然能够到达要求。但是Linux的中心大且杂乱,还常常批改;它的规划者并不关怀其实时功用。因而强参加实时的功用于现成代码并不适宜。即便这样,当Linux的中心晋级,就难免要从头规划程序。
RT-Linux选用的别的的办法使得Linux的中心能够被中止;它把中止分为两类:Linux操控的中止和RT-Linux操控下的中止。RT- Linux严厉约束使命和中止的内容;它们不能调用Linux的中心,所以它们能够中止中心的作业。假如它们不改动中心的东西,那么它们将不会搅扰中心的运转。其次,Linux的中止也不能够打断中心的运转。
所以RT- Linux选用了虚拟的中止结构,使得Linux的中心不能制止中止。在规范的Linux体系中,运用了“sti”和“cli”宏,然后运转X86的相应指令。RT-Linux批改了这两条指令的运转方法;履行“cli”,它不制止中止,而是从头指向RT-Linux的代码,进行判别;假如是RT- Linux的则让中止持续履行,假如是规范Li nux的中止,则设置标志。运转“sti”时,挂起的任何中止持续履行。如此这般,Linux不能中止它本身,RT-Linux就能够了。