预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

粤嵌教育 嵌入式操作系统和Linux 本文分析了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等语言的编译工具,这些工具和功能都比MSWINDOWS成熟、完善、易用很多。当你在使用和编程中遇到问题时,通过Internet你会得到成千上万的专家和热心人的帮助。我认为,在解决问题时,通过Internet的帮助会比单纯依靠RTOS厂商快捷有效。在厂商帮助下解 决问题,一次只会得到一种方案,如果不行,你必须重新开始;在Internet上,你会得到很多答案。今天的Linux已经得到了一些厂商的支持,你也可以从它们那得到技术支持。但是,最重要的是你拥有源代码,你可以对问题进行深入的研究,甚至可以扩展功能。 Linux是MSWINDOWS和DOS之外所绝佳的选择。很多嵌入式系统工程师也已经开发了Linux在嵌入式系统方面使用的价值,尤其在专用硬件环境和多处理器方面。现在的问题是如何使使Linux系统具有实时性。当前有两种方案来解决这个问题:一个是POSIX方法,另外一个是底层解决。 POSIX是类UNIX操作系统的标准化方案,目的是提高软件的可移植性,加速软件设计师的工作。POSIX.1b已有实时性扩展,包括信号、内存锁定、时钟和计数、消息队列以及抢先调度策略。不过这种办法比较适合工作站系统,对基于PC的嵌入式系统并不是很好; 其次是类UNIX的系统调用比较繁复,不如pSOS+等的明了。但是仍然有一批开发者在优化Linux,当然也取得了一些成功,譬如内存锁定方法和任务调度算法有了改进。这其中最主要的成果是POSIX线程(定义于POSIX.1c)。这个功能对嵌入式系统来说很好。 另一个方案从底层来提高Linux的实时性,即所谓的“硬”实时性。在这个方面做得最为成功的是NewMexicoinstituteofMiningandTechnology,他们在Linux系统下加入实时性的kernel(核心),让Linux本身运行在优先级较低的层面上。这种设计方法对Linux系统的修改减少到最低,同时增加必需的实时功能。这样使得在Linux本身的升级后,可以进行很少的修改就可以把RT-linux引进新版的Linux核心。RT-Linux和Linux的结合提供所有的实时功能,包括底层任务的创建、中断任务的安装、底层任务队列管理、中断任务的运行等。这种设计使得在系统中有两种域:实时域和非实时域。实时域的函数满足实时性要求;不过,任务必须简单,因为分批给它们的资源比较少。非实时域的函数可以享用系统全部资源,但是它们的实时性比较差。两个域之间的通讯方法也提供了。在所有RT-Linux时,必须保证需要的函数在各自的运行域是合适的,不要以为先前的非实时函数在安装安装了RT-Linux后就具有了实时性,对实时性要求有关的函数必须放到实时域中去运行。 RT-Linux中任务处理也比较简单,所有rt-task-init()创建和启动实时任务。实时域和非实时域的函数通讯方法是通过FIFO进行。所