标题:
基于Linux的嵌入式操作系统研究(5)
[打印本页]
作者:
blackghost
时间:
2003-4-4 22:11
标题:
基于Linux的嵌入式操作系统研究(5)
第三章 采用Linux作为嵌入式系统开发的原因
从我们现在对嵌入式系统开发的需求来看,我们准备采取Linux作为开发嵌入式系统的工
具,依靠Linux,实现我们的实时系统,并且可以通过Linux本身的不断升级,自动扩充
升级我们的嵌入式系统。Linux下面已经有了Real-Time Linux或者RTAI,他们的做法是
在Linux已经有的内核上面提供一个小型的实时内核。由这个实时内核来控制实时任务,
由Linux原来的内核来控制非实时任务。Linux本身的内核作为实时内核可抢占的一个任
务,因为这个实时内核实现得相当简单,那么在任务运行和切换的过程中,运行效率上
可以达到硬实时的要求。
Linux提供了很多优点,在第一章已经描述。这些优点都可以被Real-Time Linux所利用
。尤其是在第二章里面描述的那些嵌入式系统必需的要求上,Real-Time Linux可以很轻
松的满足。下面针对这些需求阐述我们使用Linux的原因。
3.1 嵌入式处理器支持
Linux内核提供对多种处理器的支持,并且正在进一步增加对嵌入式微处理器的支持。L
inux目前的内核支持Intel x86、Motorola/IBM PowerPC、Compaq(DEC)Alpha、IA 64、
S/390、SuperH等处理器体系结构,如果使用这些系列的微处理器作为嵌入式系统的处理
器,并不是不可能。
今年的EPF(Embedded Processor Forum)将在六月12日至16日于San Jose CA举行。这
次论坛上将对嵌入式Linux支持的嵌入式处理器做专门的讨论,关心Linux对嵌入式处理
器支持的问题。
3.2 实时支持
Linux本身不是一个实时系统,Linux的内核并不提供对事件优先级的调度和抢占支持。
但是可以利用Linux的特性给Linux增加实时调度的能力。这里需要提出的实时系统实现
的设想虽然在很早以前就提出过,但是仍然是具有创造性的,并且尤其在Linux时代这样
的实时系统更是显得游刃有余。这种实现方案是双内核系统,即利用Linux内核,同时增
加一个实时内核,两个内核共同工作,获得别的实时系统所不能达到的优势。
其实,双内核的解决方案在很早以前就已经提出。大概在20年前,贝尔实验室的开发人
员就准备开发一种名为MERT的实时操作系统。这种操作系统就准备运行两个内核,一个
是实时内核,另外一个是分时通用内核。实时内核用来运行实时任务,通用内核用来运
行普通任务。这种设计方法的优势就在于,实时内核可以利用非实时OS内核的一些优势
来开发。举个例子说,如果利用实时内核上运行一个实时任务来对外界环境进行数据采
集,那么采集出来的数据可以通过非实时内核上运行的图形界面显示出来。在系统内部
的数据处理实时的,显示出来可能就没有必要实时。这样,即可以提高实时系统的可用
性,也可以节省计算资源,同时将实时系统的一部分任务划分出来,降低了实时内核需
要处理的复杂度,提高了实时的计算效率。
利用Linux的内核,可以实现一个建立在这个非实时内核基础上的实时内核,这两个内核
共同工作,形成前面所描述的双内核实时系统。这样得实时内核可以满足短小精悍的要
求,非实时内核又已经如前面所描述的那样的强大,两者结合起来,可以充分发挥出实
时系统在嵌入式系统中的应用,也可以充分让嵌入式系统满足信息电器时代的要求,开
发出强大合适的系统。
双内核的体系结构可以用下面的图来描述:
第四章将介绍的是美国新墨西哥州大学计算机科学系开发的RTLinux。它实现了计算机科
学家设想的双内核体系结构的实时系统。RTLinux建立在已经成熟并且还在不断升级强大
的Linux内核的基础上,在第四章里面会详细介绍他们的实现机理和开发方法细节。
3.3 网络支持
我们可以这样说,Linux是网络的代名词。没有网络,就不可能产生世界各地高手云集的
情况,也就不可能产生高手们共同开发出来的操作系统——Linux。Linux的产生条件是
网络,Linux的生存条件也是网络,这就是这一网络操作系统的关键特性。
Linux内核对网络协议栈的设计是从简洁实用的角度出发,实现出一整套的网络协议模块
。Linux不仅可以支持一般用户需求的ftp(file transfer protocol)、telnet和rlog
in协议,还能提供对网络上其他机器内文件的访问(NFS, 网络文件系统)。Linux还可
以支持SLIP(Serial Line Interface Protocol)和PLIP(Parallel Line Interface
Protocol)协议,使得通过串口和并口线进行连接成为可能。通过AX.25协议,Linux可
以提供通过无线电进行连接的方式;通过在Linux上开发Novell标准的IPX协议,Linux可
以访问Netware网络。如果在Apple机的世界里面,可以通过AppleTalk协议访问Apple的
网络。在Windows9x/NT局域网里面,可以通过Samba协议进行Linux和Windows之间的文件
共享。通过Apache公司开发的免费网络服务器,可以利用Linux系统作为强大的网络服务
器,提供Internet上电子商务和数据提供服务。
有关Linux对TCP/IP网络协议的支持请具体参看第五章。
3.4 GUI开发支持
利用Linux的有限资源开发出多窗口子系统,是在嵌入式系统市场中形成竞争实体的一个
重要条件。特别是我们实现出双内核的基于Linux实时系统之后,GUI的开发更为方便。
这里我们提出两种利用Linux进行窗口系统开发的可能方案。
3.4.1 利用X Windows的便利
利用Linux本身支持的X windows系统。X Windows是一个在大多数UNIX工作站上使用的图
形用户界面,它是一种与平台无关的客户/服务器模型,可以让用户在一台机器上打开另
外一台机器的窗口,而不用考虑客户机的操作系统类型。这种特性使得UNIX和Linux系统
上的用户和应用程序非常自然的通过网络连接在一起。
X Windows的编程层次结构是由X Protocol、X Lib、X Intrinsic、Motif/GTK/QT 函数
接口、应用程序组成的。X Protocol是X用来和X Server进行通讯的方式,X Lib提供一
些函数集合,通过这些函数提供发送、接受和处理X协议请求的功能。X Intrinsic提供
了一个窗口管理功能,利用X Intrinsic提供的一个Widget集就可以完成一类特定界面的
编写。应用程序可以通过Motif/GTK/QT提供的函数接口调用X Intrinsic,也可以利用M
otif/GTK/QT直接调用X Lib。而Motif/GTK/QT就是用来提供窗口函数库的,通过使用这
些窗口函数库,可以很方便的写出X Windows的应用程序。
使用X Windows开发GUI,因为开发环境成熟,开发工具易用,可以缩短开发时间,降低
开发难度。但是,如果应用在嵌入式系统中,我们不得不考虑嵌入式系统的一些限定条
件:嵌入式系统不能使用体积过大的操作系统内核,就是因为需要将系统固化在ROM中或
者Disk On Chip的Flash ROM上。但是,一个X Lib就需要大概10M ~20M的空间,在一般
的嵌入式环境都不能满足这样的条件。如果在外观要求较高,而不太关注整个系统的制
作费用的条件下,采用X Windows作为GUI的开发工具不失为一种好办法。
欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/)
Powered by Discuz! 7.2