一个基于Linux的嵌入式实时操作系统.pdf
《一个基于Linux的嵌入式实时操作系统.pdf》由会员分享,可在线阅读,更多相关《一个基于Linux的嵌入式实时操作系统.pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一个基于L i n u x 的嵌入式实时操作系统刘云新张尧学清华大学计算机系(北京1 0 0 0 8 4)E-m a i l:l y x m n 4 7 5 c s t s i n g h u a e d u c n摘要在分析L i n u x 和嵌入式实时操作系统的基础上,介绍了一个基于L i n u x 的嵌入式实时探作系统:S O P C A。关词操作系统L i n u x 实时嵌入式S O P C A文章编号1 0 0 2 8 3 3 1 一(2 0 0 1)0 7-0 0 6 4-4)3 文献标识码A 中圈分类号T P 3 1 6 2A nE m b e d d e dR e a l
2、-T i m eO p e r a t i n gS y s t e mB a s e do nL i n u xL i uY u n 菇血Z h a n gY a o x u e(C o m p u t e rS c i e n c eD e p a r t m e n t,T s i n g h u aU n i v e r s i t y,B e i j i n g1 0 0 0 8 4)A b s t r a c t:O nt h eb a s i so fa n a l y z i n gL i n u xa n de m b e d d e dr e a l-t i m eo p
3、e r a t i n gs y s t e m s,a l le m b e d d e dr e a l t i m eo p e r a tm gs y s t e mb a s e dO nL i n u xc a l l e dS O P C Ai si n t r o d u c e di n t h i sp a p e r I,e y w o r d s:o p e r a t i n gs y s t e m,L i n u x,r e a l-t i m e,e m b e d d e dS O P C A1 引言经过几年的发展,L i n u x 已经迅速成长为一个功能强
4、大性能稳定的通用操作系统。它支持多用户和多进程,支持T C P I P等网络协议,具有图形用户界面和强大的开发工具,而且大部分U n i x 上的应用程序都已经移植到L i n u x 之上。由于它的成熟和强健,L i n u x 得到了日益广泛的应用。另一方面,随着硬件价格的不断降低,嵌人式实时应用对操作系统的功能也提出了越来越高的要求,如图形用户界面和网络功能等。一些嵌入式实时操作系统的提供商已经提供了这些功能,但这同时意味着非常高的价格。由于L i n u x 代码公开,遵循G P L 条款,相对于价格昂贵的专用实时操作系统(如p S O S、V x W o r k 等)具有巨大的优势,
5、因此越来越多的人开始考虑将L n u x 应用到嵌入式实时环境之中。下面将分目对L i n u x 和嵌人式实时操作系统进行分析,然后介绍基于L i n u x 的嵌人式实时操作系统S O P C A。2L i n u x 与嵌入式实时操作系统2 1L i n u x 的发展及其特点1 9 9 1 年底,L i n u xT o r v a l d s 首次在I n t e m e t 上发布了基于I n t e l3 8 6 平台的L i n u x 源代码。之后,在众多L i n u x 爱好者包括许多U n i x 专家的努力下,L i n u x 逐渐成长为一个稳定可靠、功能完善的操作
6、系统。一些软件公司,如R e dH a t、I n f o M a g i c 等也不失时机地推出了自己的以L i n u x 为核心的操作系统版本。这大大推动了L i n u x 的商品化。在一些大的计算机公司的支持下,L i n u x 还被移植到A l p h a、P o w e r P C 和s p a r c 等平台上。L i n u x的使用1 3 益广泛,版本更新很快,目前的最新版本是2 2 3 0。L i n u x 具有U n i x 的所有基本特征 L I:L i n t t x 完全支持P O S I X l 0 0 3 1 标准,U n i x 上的应用程序可以很容易地
7、移植到L i n u x 上来;L i n u x 支持多用户访问和多任务编程;L i n u x 采用段页式存储管理机制;L i n u x 支持动态链接,节省了内存空间并提高了效率;L i n u x 支持E X T 2、M S D O S 等1 6 种文件系统;L i n u x支持T C P I P 和P P P,用户可以通过局域阿或者使用M o d e m 通过电话线连人I n t e r n e t 网中。除了上述基本特征外,L i n u x 还具有其独有的特色。例如,它支持硬盘的动态C a c h e。L i n u x 能动态调整所用C a c h e 的大小,以适应当前存储
8、器的使用情况。当存储空问匮乏时,C a c h e将被减少,以增加空闲的存储空问t 一旦存储空间不再紧张,C a c h e 的大小又将增加。2 2 实时操作系统和嵌入式操作系统的概念实时操作系统”埘是指一个能够在指定的时间范围内完成特定的功能或者对外部的异步事件作出响应的操作系统。实时操作系统上的进程执行结果不仅依赖于逻辑判断和逻辑计算的正确性,而且还依赖于执行过程中所花费的时同的长短。所以实时操作系统必须能够确保其进程对时间的要求,即要确保在要求的时间内完成指定的任务。实时的概念有“软实时”(s 出r e a l-t i m e)和“硬实时”(h a I|dr e a l-t i m e)
9、两种。软实时是指统计意义上的实时,一般指整体吞吐量大或者整体响应时问快,但不能保证特定的任务在指定的时间内完成。硬实时则是指时间要求必须被严格保证的实时。这才是真正意义上的实时。U n i x 类操作系统(包括L i n u x)有很好的“平均”性能,具有一定的软实时性,但不是硬实时的操作系统。嵌入式操作系统l 黾指应用于嵌人式环境(如智能化设备等)的操作系统。在嵌入式环境下,处理器一般没有多少可用的内存,更没有可用的外存,而操作系统就装在这有限的存储器中(一般在R O b l 或者F L A S H 中),这种操作系统人们称之为嵌入式操作系统。嵌入式操作系统一般由一个很小的内核及一些可以根据
10、需要进行定制的系统模块组成,所占的空间很小,具基盒璜目:信息产业部产业基金资助作者筒介:刘云新,清华大学计算机系硬士研究生,研究方向:嵌人式实时操作系统。张尧学,清华大学计算机系教授,博士生导师,研究方向:操作系统,网络互连,Q 0 s。6 42 0 0 1 3 计算机工程与应用 万方数据有高度的灵活性,而叉不失其实时、多任务的系统特征。嵌入式操作系统一般都是实时操作系统,而实时操作系统也大都用于嵌入式场合。用于嵌入式场台的实时操作系统就是嵌入式实时操作系统。2 3 现有的嵌入式实时操作系统目前已经有不少用于嵌入式实时环境下的操作系统。Q N x阿僦是其中常见的一个。该操作系统是加拿大Q S
11、S L 公司开发的,能够运行于I n t e lX 8 6、P o w e r P C 和M I P S 等平台之上。Q N X是一个分布式操作系统,Q N X 局域网L 的每个用户都可以使用该网络上他有权使用的任何资源;Q N X 是一个实时操作系统,它提供用户可控制的、优先级驱动的、可抢先式的调度方式,自身开销小,上下文切换快;Q N X 是一个微内核的嵌入式操作系统,具有高度的可伸缩性,可以灵活地裁剪;Q N X 还是一个符合P O S I X 基本标准和实时标准的操作系统,许多在符合P O S I X 相应标准的其他系统上开发的应用可以非常方便地移植到Q N X 上来。V x W o
12、r k s“是美国W i n d R i v e r 公司开发的嵌入式实时操作系统。该操作系统是实模式的操作系统,其内核和用户进程运行在同一个地址空间内,进程间的切换开销很小,切换速度非常快。不过,V x W o r k s 和U n i x 兼容性不好。它虽然提供了一些符合P O S I X 1 b 实时扩展标准的函数,但是大多数V x W o r k s的A P I 是专用的。而且,V x W o r k s 不是微内核结构而是单块结构的。另外,V x W o r k s 的工作方式是主机目标机的方式:一台U n i x 主机用于软件开发和运行应用程序的非实时部分,而v x W o r k
13、 s 内核在目标机上运行实时任务。两台机器通过T C P I p进行通信。其它常见的实时操作系统还有p S O S、R E A L I X 等。随着发展人们对实时操作系统逐渐提出了更高的要求,希望实时操作系统能够提供集成式开发环境、图形用户界面和网络支持。然而,现有实时操作系统不是功能过于简单就是价格过于昂贵。这里缺少一个开放的、标准的、有广泛支持的、高效的、支持多任务而叉廉价的实时操作系统。L i n u x 符合除实时以外的所有条件。因此,如果能将L i n u x 进行改造,使之具有实时特性,将是一个很好的选择。2 4 为什么L i n u x 不能直接应用于嵌入式实时环境嵌入式实时操作
14、系统要求具有小巧、速度快和可预测性等特点,必须保证实时任务在要求的时间内完成。现有的L i n u x是一个通用的操作系统,虽然它采用了许多技术来加快系统的运行和反应速度,但是它本质上不是一个嵌入式的实时操作系统,不能直接应用于嵌人式实时环境。具体而言,现有的L i n u x有以下几点制约着它应用于嵌入式实时环境8:(1)“n u x 的核心态进程是不能被抢先的。即如果有L i n u x的核心态进程在运行时,其它进程不管其优先级多高都必须等待。由于L i n u x 的系统滑用是运行在核心态的,因此不管优先级多低的进程进行系统调用时,其它任何实时进程都必须等待。(2)L i n u x 的
15、进程调度方式不是完全抢先式的。不论进程的优先级多么低,L i n u x 总会在某个时候分给该进程一个时间片运行,即使同时有可以运行的高优先级进程,它也必须等待低优先级进程的时间片用完。但是在实时系统中,高优先级的进程决不能等待低优先级的进程。(3)L i n u x 内核的进程经常关闭中断以尽快完成自己的任务。如果低优先级的进程关闭了中断,那么即使有高优先级实时进程的中断发生系统也无法响应。这种情况在实时系统中是不允许发生的。(4)u 帆采取了“虚拟内存”的内存管理方式。即L i n u x 利用交换空间让进程运行在一个比实际内存大的虚拟内存空问里。当进程访问的虚拟内存的内容在交换空间里时L
16、 i n u x 就要把在交换审问里的页面交换到实际内存中来。这是一个费时的操作,它使得操作花费的时间具有不町预测性,在实时系统中是不允许的。(5)为了更高效地使用硬件,L i n u x 可能会做一些额外的操作。例如,在内存不足时,L i m L x 小是只释放一个页面而是搜索整个页丽链表以释放尽可能多的页面。这就延迟了所有进程的执行,包括实时进程。(6)在L i n u x 中,高优先级的进程不能抢占低优先级进程的资源。即如果高优先级的进程要使用低优先级进程正在使用的资源时,它必须等待低优先级的进程释放资源。L i n u x 之所以有以上的问题,是因为它最主要的设计原则是最大限度地利用各
17、种资源,力求最“公平”地调度各个进程,以获得最大的整体性能。这也正是通用操作系统的设计原则。3 嵌入式实时操作系统S O P C AS O P C A 是由信息产业部产业基金支持的一个重点项目,目的是开发一个嵌入式的实时操作系统。该操作系统就叫做S O P C A,其开发环境是I B M 的R e d W o o d-I I I 评测板。R e d W o o d-I I I 评测板的C P U 是4 0 1 D 2,有2 M 的F L A S H 用于容纳操作系统和应用程序。出于时间和成本的原因,应考虑借用现有L i n u x的结构。如上所述L i n u x 是一个通用操作系统,将它应用
18、于嵌入式实时环境有许多缺点和不足,所以要对现有的I A n u x 进行改造。该项工作主要集中在三点:首先,现有的L i m i x 内核十分庞大复杂,要对现有的L i n m x 内核进行裁剪以让它能够在嵌入式环境中运行。这包括去除对硬盘、显卡、鼠标、键盘的支持,只保留一个简单的文件系统等。其次,由于没有现成的支持4 0 1 D 2芯片的L i n u x 版本,所以要进行代码移植的工作。这要把直接操纵硬件的代码用4 0 1 D 2 的汇编指令集重新改写,主要是内存管理、启动和中断等部分的代码。第三需要一个方法让L i n u x 能够运行实时任务,即要把L i n u x 进行实时化。下面
19、重点介绍一下S O P C A 内核的结构和如何对S O P C A 进行实时化。3 1S O P C A 内核的结构S O P C A 内核来自裁剪后的L i n u x 内核,它运行在R e d W o o d m 评测板上向上通过系统调用为应用程序的开发提供接口,向下为设备驱动程序的开发提供接口。其结构如图1 所刀o由图1 可以看出,S O P C A 内核主要由以下模块组成:3 1 1 内存管理S O P C A 采用分页式虚拟内存管理机制,每个进程都运行在一个独立的地址空间内要进行从虚拟地址到物理地址的转换。虚拟内存机制使得进程间的地址空间相互独立,起到了进程保护的作用。分页机制是虚
20、拟地址和物理地址进行映射的基础,而且使进程问共享物理空间变得十分简单。由于没有硬盘,所以S O P C A 的内存管理投有“交换”的概念,也就没有L i n u x中的“印d 进程。另外,在S O P C A 中,一些寄存器(如D C R、计算机工程与应用2 0 0 1 76 5 万方数据S P R 等)的值和外设的I O 空问要映射到物理内存空间中,所以要在T L B 中锁定这些映射。因此,在进行内存分配时,要判断分配的内存空间是否与锁定的内存空间重叠,如果重叠的话,则内存分配失败。禹蜿遁甩拉口-f 蓦詈篱|迁酗矗睫辞接口与E 曲十I I 评刊扳圈1s o P c A 内柱的结构应用程序3
21、1 2 进程管理S O P C A 支持多进程,进程是S O P C A 进行资源分配的单位。S O P C A 遵循P O S I X l 0 0 3 4 标准,提供了两类用于实时进程调度的算法S C H E D _ F I F O 和S C H E R R,但这只能支持软实时。对硬实时的支持,参见下一部分的介绍。S O P C A 还支持核心线程,线程是轻量级的进程,间一进程创建的线程共享父进程的地址空问。3 1 3 文件系统S O P C A 支持L i n u x 支持的所有类型的文件系统,但由于是应用于嵌入式环境之中,目前的S O P C A 内核配置为只支持e x t 2 文件系统
22、。文件系统存放在F L A S H 上,操作系统内核启动以后,把存放文件系统的F L A S H 作为R A M D I S K 使用。3 1 4 进程间通信S O P C A 不仅支持信号和管道这两种古老的进程问通信机制,而且还支持S y s t e mV 的I P C 机制中的消息队列机制和信号量机制。后两种机制是以模块的形式存在的如果要进一步精简内核,可以不要消息队列机制和信号量机制;如果需要的话,还可以加上s y s t e mV 的I P C 机制中的另一种机制:共享内存机制。3 1 5 中断管理R e d W o o d I I I 的中断控制器是U I C(U n i v e r
23、 s a lI n t e r r u p tC o n t m l l*r),这是比较简单的中断控制器。所以S O P C A 对中断的管理也就比较简单。S O P C A 维护着一张中断向量表和一个i r q _ a c t j o n 结构数组,中断向量表的基地址存放在中断向量寄存器E V P R 中,i r q _ a c t i o n 结构数组记录了哪个外部中断对应哪个中断处理函数。当中断发生时,跳转到中断向量表中相应的函数中执行,如果是外部中断,则读取U 1 C 的uu i c s r 寄存器和u _ u i c e r 寄存器,确定发生了哪一个外部中断,然后调用i r q _
24、a c t l o n 结构数组中相应的中断处理函数进行处理。关于中断管理的进一步信息,参见下一部分的介绍。3 1 6 设备驱动在S O P C A 中,每个设备由“设备文件”来代表,所有对硬件设备的操作与操作通常的文件样,利用标准的系统词用可以在设备上进行打开、关闭、读取或写入操作。S O P C A 提供的驱6 62 0 0 1 7 计算机工程与应用动程序接1 2 1 和L i m l x 完全一样,这为在L i n u x 下开发过驱动程序的人开发S O P C A 驱动程序提供了极大的方便。S O P C A 也支持T C P I P 协议和P P P 协议。这些网络协议是以模块的形式
25、存在的。由于当前的S O P C A 应用环境不需要网络,所以当前的S O P C A 内核配置为不支持网络。若要让S O P C A 支持网络,所需要做的仅仅是重新编译一次内核。S O P C A 还提供了一个S h e l l。利用串口,用户可以在该S h e l l 中测试系统命令、运行应用程序或者使用G D B 对应用程序进行调试。该S h e l l 还用于对系统进行配置。另外,值得注意的是S O P C A 的系统引导过程。由于既投有硬盘也没有软盘,所以S O l C A 的系统引导过程与P c 机完全不同。S O P C A 系统是从F L A S H 引导起来的,引导代码放在F
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一个 基于 Linux 嵌入式 实时 操作系统
限制150内