嵌入式系统已经广
泛的渗透到科学研究、工程设计、军事技术、各类产业和商业文化艺术、娱乐业以及人
们的日常生活等方方面面中。随着国内外嵌入式产品如车载电脑、机顶盒等等的进一步
开发和推广,嵌入式技术越来越和人们的生活紧密结合。在PC时代,可能有人从来没有
接触过计算机;但是在Post-PC时代,他就不可能会接触不到嵌入式系统,因为嵌入式系
统可能存在于生活的方方面面中,从家里的洗衣机、电冰箱,到作为交通工具的自行车
、小汽车,到办公室里的远程会议系统等等,都属于可以使用嵌入式技术开发和改造的
产品。
实际上嵌入式系统这个概念很早以前就已经存在了。在通讯方面,嵌入式系统在1960年
就被用于对电子机械电话交换的控制,当时被称为“存储式程序控制系统”(Stored P
rogram Control)。那个时候,计算机一词却还不是很普遍,而存储式程序主要是指用
于存储程序及日常讯息的内存部分。存储这些逻辑数据,而不是将其写入硬盘,这个概
念的确具有突破性的意义。
这个时候还没有出现操作系统的概念,对每一个应用都需要提供一整个计算机的设计。
后来微处理器的出现,它用来提供一个中央计算引擎。利用微处理器,组成了一个基于
由总线连接起来的计算机硬件体系结构,并且提供了一个通用功能的编程模型,从而简
化了编程。
嵌入式系统的概念是在1970年左右出现的。不过在当时,大部分都是由汇编语言完成的
,而且这些汇编程序只能用于某一种固定的微处理器。当这种微处理器过时之后,这种
嵌入式系统就没有用了;并且还要开始对新的微处理器写新的嵌入式系统。
这个时候的嵌入式系统很多都不是操作系统,他们只是为了实现某个控制功能,使用一
个简单的循环控制对外界的控制请求进行处理。不可否认,这对一些简单的系统而言是
足够的。但是当我们的系统越来越复杂,利用的范围越来越广泛的时候,没有操作系统
就成为了一个最大的缺点了,因为需要添加一项新功能都可能需要从头开始设计,否则
只能增加开发成本和系统复杂度。
C语言的出现使得我们的操作系统开发变得越来越简单。我们可以利用C语言很快的写出
一个小型的、稳定的操作系统。众所知之,C语言的作者Dennis M. Ritchie 和Brian W
. Kernighan利用它写出了著名的UNIX操作系统,直接影响了这三十年计算机业的发展。
同时,对开发嵌入式系统来说,在效率和速度上都提高了很多。
从上世纪八十年代开始,开始出现各种各样的商业用嵌入式操作系统,这些操作系统大
部分都是为专有系统而开发,从而形成了现在多种形式的商用嵌入式操作系统百家争鸣
的局面。如VxWorks,pSOS,Neculeus和Windows CE等等。
现在,网络在人们生活中的应用越来越广泛,自然而然,在嵌入式系统中使用网络系统
也成为了一项基本的要求。把网络协议栈实现在嵌入式系统中,对日常生活中的需要极
有意义。利用嵌入式系统中的网络功能,可以实现下面我将要描述的信息电器这一即将
取代PC在后PC时代占据市场主体的商品。我们知道,如果在上面所说的那种采用循环控
制的嵌入式系统中加入网络协议栈,复杂度会呈指数级增长。这种情况下,在嵌入式操
作系统中增加网络协议模块要方便得多,并且还能方便各种网络应用程序的不同平台移
植。
在未来的社会里面,使用嵌入式系统的情形会越来越多,人可以不接触电脑,但是不接
触嵌入式系统的情况是不存在的。嵌入式系统可能存在于您生活的各个角落:您家里可
能就是通过一个嵌入式系统控制的中心,管理您家里的所有家电,控制家庭和外界网络
的连接,让您的生活更为方便;您出门旅行的时候,在饭店的门把手里面安装有电子识
别控制系统,利用嵌入式系统根据您手上的特征,判断时候应该给您开门;在坐车的时
候,汽车电脑可以通过GPS(全球卫星定位系统)来判断自己的具体位置,利用嵌入式智
能系统判断应该走哪条路比较方便;如果您一不小心生病住院,在医院的设备仪器里面
都可能存在有嵌入式系统,用来选择和控制仪器,提高您手术的成功率和方便程度。
1.2 信息电器的概念
在嵌入式系统发展到现在这个程度,利用的范围除了在自动化控制、军事技术、工业生
产、科学研究等方面的应用之外,现在逐步在向日常生活中渗透。而PC的发展现在也正
在减缓趋势。据有关报道,PC的增长率由九十年代中期的年递增率35%下降到去年的15%
。用市场的观点来看,PC的已经从高速增长进入到平稳发展的市场顶峰时期,单纯由PC
机带领的电子产业蒸蒸日上的时代已经成为历史,现在的电子产业的发展需要寻找一个
新的“战略转折点”。这个时候,根据PC时代的概念,美国Business Week杂志提出了“
后PC时代”的概念。在这个时代,占电子市场主体的不再是PC和家用电器,而是具备视
听功能、信息处理和双向网络通信功能的信息电器。
信息电器,英文称Information Appliance。它具备有高品质的视听功能、交互式的信息
处理功能、网络浏览功能和收发邮件等功能。它适应信息时代的要求,具有很强的网络
功能,是人们用来访问和获取网上信息的工具,也是消费类电子技术和计算机技术相结
合的产物。作为信息电器,一般具有三个特征:
1)是家用电器。它适合广泛的普通家庭使用,功能和操作都比传统的电脑少而简单。
2)是信息设备。能够接入公共信息网络,主动获取交互信息。
3)配置简单。组成部分比传统的电脑少,没有硬盘等永久存储设备,设备价格比较低廉
。
信息电器的品种很多,就我国来说,信息电器的应用范围主要是在消费、娱乐、通讯、
信号处理等领域。典型的产品是机顶盒、移动通讯、掌上电脑、可视电话、PDA(个人数
字助理)等等。
信息电器的如火如荼的发展和应用,需要发展嵌入式系统来支持。信息电器的产品开发
离不开利用网络协议栈,离不开实现实时性能,也离不开提供用户友好的接口。这些都
需要利用嵌入式系统进行开发。
目前嵌入式系统的主要应用范围是在信息电器领域里面。根据信息电器的开发特点,开
发出一个具有实时、多任务特征的,提供测览器、网络通信和图形窗口等服务的,可进
行一定的定制或二次开发,并可对应用软件的开发提供有效支持的嵌入式系统。
信息技术的快速发展和互联网的广泛应用,使得信息电器具有广泛的前景,从而使得嵌
入式操作系统的快速发展成为可能。伴随着以计算机技术、通讯技术为主的信息技术的
快速发展和互联网的广泛应用,3C(Computer, Communication, Consumer)合一的趋势
已经形成,三者合一的产物就是信息电器。在信息电器领域里面,嵌入式软件必然成为
重要成员,嵌入式操作系统也就必然成为软件业的新热点。
1.3 国内外嵌入式系统的相关产品、水平、现状和技术发展趋势
1.3.1 国际上相关产品、水平、现状和技术发展趋势。
从八十年代起,国际上就开始进行一些商用嵌入式系统和专有操作系统的开发。他们开
发嵌入式系统已经有二十多年的经验,目前的应用范围也比较广泛,下面介绍一些著名
的嵌入式系统。
l Windows CE:
Microsoft Windows CE是一个简洁的,高效率的多平台操作系统。它不是削减的Window
s95版本,而是从整体上为有限资源的平台设计的多线程,完整优先权,多任务的操作系
统。它的模块化设计允许它对于从掌上电脑到专用的工业控制器的用户电子设备进行定
制。操作系统的基本内核需要至少200K的ROM。从SEGA的DreamCast游戏机到现在大部分
的高价掌上电脑,都采用了Windows CE,但是无奈价格太高,使得整个产品的成本急剧
上升。
l VxWorks:
去年VxWorks所在的公司WindRiver兼并了pSOS的ISI公司,使得该公司现在有两大RTOS系
统。VxWorks是目前嵌入式系统领域中使用最广泛,市场占有率最高的系统。它支持多种
处理器,如x86,i960,Sun Sparc,Motorola MC68xxx,MIPS RX000,POWER PC等等。
使用的是和UNIX不兼容的环境,大多数的VxWorks API是专有的。采用GNU的编译和调试
器。
l pSOS:
ISI公司已经被WinRiver公司兼并,现在是属于WindRiver公司的产品。这个系统是一个
模块化,高性能的实时操作系统,专为嵌入式微处理器设计,提供一个完全多任务环境
,在定制的或是商业化的硬件上提供高性能和搞可靠性。可以让开发者将操作系统的功
能和内存需求定制成每一个应用所需的系统。开发者可以利用它来实现从简单的单个独
立设备到复杂的、网络化的多处理器系统。
l QNX:
QNX是一个实时的,可扩充的操作系统,它遵循POSIX.1 (程序接口)和POSIX.2 (Shell和
工具)、部分遵循POSIX.1b(实时扩展)。它提供了一个很小的微内核以及一些可选的配合
进程。其内核仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,其进
程在独立的地址空间运行。所有其它OS服务,都实现为协作的用户进程,因此QNX内核非
常小巧(QNX4.x大约为12Kb)而且运行速度极快。这个灵活的结构可以使用户根据实际的
需求将系统配置成微小的嵌入式操作系统或是包括几百个处理器的超级虚拟机操作系统
。
l Palm OS:
3Com公司的Palm OS在PDA市场上占有很大的市场份额,它有开放的操作系统应用程序接
口(API),开发商可以根据需要自行开发所需要的应用程序。目前已经有总共3500多个
应用程序可以运行在Palm Pilot上,其中大部分应用程序均为其他厂商和个人所开发,
使得Palm Pilot的功能得以不断增多。这些软件包括计算器、各种游戏、电子宠物、地
理信息等等。在开发环境方面,可以在Windows 95/98,Windows NT以及Macintosh下安
装Palm Pilot Desktop;PlamPilot可以与流行的PC平台上的应用程序如Word,Excel等
进行数据交换。
l OS-9:
Microwave的OS-9是为微处理器的关键实时任务而设计的操作系统,广泛应用于高科技产
品中,包括消费电子产品,工业自动化,无线通讯产品,医疗仪器,数字电视/多媒体设
备中。它提供了很好的安全性和容错性。与其他的嵌入式系统相比,它的灵活性和可升
级性非常突出。
l LynxOS:
Lynx Real-time Systems的LynxOS是一个分布式、嵌入式、可规模扩展的实时操作系统
,它遵循POSIX.1a、POSIX.1b和POSIX.1c标准。LynxOS支持线程概念,提供256个全局用
户线程优先级;提供一些传统的,非实时系统的服务特征;包括基于调用需求的虚拟内
存,一个基于Motif的用户图形界面,与工业标准兼容的网络系统以及应用开发工具。
l Linux:
Linux是一套以UNIX为基础发展而成的操作系统。自1991年诞生至今,Linux在很多方面
已经赶上甚至超过了很多商用的UNIX系统。它充分利用了x86CPU的任务切换机制,实现
了真正的多任务、多用户环境。Linux对硬件配置的要求相当低,能够在4M内存的386机
器上很好的运行。而且可以支持很多种处理器芯片。此外更为重要的是,很多高手愿意
在Linux上开发程序,而且有很多高手随时对Linux的开放内核进行升级和修补,很多bu
g可以很快得到检测和修复。
在应用于嵌入式系统方面,Linux小得可以放在一张软盘上运行;为实时系统而开发的变
种RT Linux(Real-Time Linux),可以让Linux支持硬实时任务;Linux的开放式开发原
则使得Linux下的驱动和升级变得越来越多和越来越快。
1.3.2 国内相关产品、水平、现状和技术发展趋势。
国内的嵌入式系统开发也已经取得了一定的成绩,包括中科院的EEOS,凯思昊鹏的HOPE
N OS等等。但是国内的产品很大程度上只是外国公司的附属和扩充,国内的技术含量很
低。比如说中科院计算所嵌入式系统研究组的EEOS,是根据ECOS的开发环境下面做简略
介绍:
l EEOS:
EEOS是中科院计算所组织开发的开放源码的嵌入式操作系统。该嵌入式操作系统重点支
持p-Java,要求一方面小型化,一方面能复用Linux的驱动和其他模块。计算所将在2-3
年内持续投入,以建立扩展能力强,功能完善,且稳定、可靠的嵌入式操作系统平台。
包含E2实时操作系统,E2工具链及E2仿真开发环境的完整环境。
E2实时操作系统包含RTOS内核系统和一些支持组件,是一个扩展能力强,功能完善的操
作系统,支持POSIX标准。E2实时操作系统强调模块化(其API 接口标准,底层支持清晰
),其各模块解决方案可移植、可互换。此外E2实时操作系统提供开放源码。
E2工具链基于GNU系列的交叉编译环境,开放多平台,能够支持大多数硬件平台。E2实时
操作系统同时支持MSDEV等桌面环境的工具链,能够方便WIN32程序员使用。
E2仿真开发环境使用Win32系统仿真目标机或做远程调试的主机。E2仿真开发环境能够仿
真扩展的目标机设备或借用NT系统的设备,并提供扩展工具进行性能,行为可视化,评
估系统的性能。其仿真速度快,能够方便地容易建立开发环境。
EEOS采用先进的内核仿真调试技术,能够使普通C程序员能快速熟悉实时系统的结构和开
发过程,大幅度降低学习,研究,开发实时系统的代价。EEOS专为嵌入式系统设计,代
码尺寸小,同时EEOS结构上考虑了实时需求,很高的实时响应速度,因而能够在各种环
境下工作,具有良好的可伸缩性。
l HOPEN OS:
HOPEN OS是凯思集团自主研制开发的嵌入式操作系统,由一个体积很小的内核及一些可
以根据需要进行定制的系统模块组成。其内核Hopen Kernel一般为10KB左右大小,占用
空间小,并具有实时、多任务、多线程的系统特征。使用者可以很容易地对这一操作系
统进行定制或作适当开发,该系统不仅可以广泛应用于:移动计算平台(PDA)、 家庭信
息环境(机顶盒,数字电视)、 通讯计算平台(媒体手机)、 车载计算平台(导航器
)、 工业、商业控制(智能工控设备,POS/ATM机)、 电子商务平台(智能卡应用,安
全管理)等信息家电上,还可应用于与Internet相联接的一切接入设备,是未来信息家
电的核心。
该系统目前已能在:X86、PA-RISC、Power PC、ARM、Strong ARM、MIPS、68XXX等多种
芯片上运行。
从国内外的嵌入式系统发展状况来说,嵌入时系统的应用正在从传统的单一应用范围、
狭窄应用对象、简单实现功能向现在和未来社会需要的应用需要进行转变。社会对嵌入
时系统的需求正在慢慢扩大,特别是最近几年来国际互联网的发展,信息时代从PC时代
步入到后PC时代,对信息电器的需求越来越明显,正如我在第二节所描述的那样,信息
电器是国际互联网发展到一定阶段,进入到千家万户的一种必要有效的手段。嵌入时系
统在信息电器里面的应用,则是对嵌入式系统概念和应用范围的一个变革,从而打破过
去PC时代被单一微处理器厂家和单一操作系统厂家垄断的局面,而应该会出现一个由多
芯片、多处理器占领市场领域的局面。国内厂商应该抓住这个机会,从而可以向该类行
业的核心领域靠近,取得和国际竞争组织竞争的机会。PC机和信息电器,就象是电影和
电视一样,在一段时期内会共同存在下去,谁也无法取代谁。但是,就市场角度来看,
信息电器却可以占领很大一部分的可能使用PC的客户,虽然两者的定位不全相同,市场
的范围有所重叠,但是发展的余地还是很大。
1.4 Linux的历史和现状
Linux是一种在网络上产生的操作系统,他的产生来自于一名芬兰学生Linus Torvalds的
业余爱好。在网络上Linux的开发成为一些高手热衷的项目,使得Linux在短期内就成为
了一个稳定、成熟的操作系统。重要的是,Linux的开发都是在GPL(GNU Public Licen
se)的版本控制之下,因此Linux内核的所有源代码都是采取开放源代码的方式。我们缺
乏对操作系统的开发经验,这样的条件对我们来说是一个很大的契机,利用Linux作为我
们开发嵌入式系统成为可能。
Linux内核的开发是由Linus Torvalds领导的内核开发小组进行开发的。世界各地的高手
们将自己对Linux内核需要做的改动交给Linus小组,由这个小组进行统一控制,随时对
内核进行更新升级。整个开发的过程遵循CVS版本控制,保证开发的质量。目前在他们的
公共站点http://www.kernel.org/上几乎每三天进行一次内核的升级,目前最新的内核
是即将开发出来的Linux2.4内核。已经推出了测试版本,具体有关Linux2.4内核的介绍
可以参看《微电脑世界》5月22日《Linux内核2.4》一文。
将Linux作为一个嵌入式操作系统具有许多的优点:
1) 系统稳定、功能强大、支持多种硬件平台、应用软件多、简单易用
Linux 在许多方面与UNIX类似,但是它是一个完全独立的操作系统,它可以非常稳定地
运行在许多种体系结构的处理器上。最新的Linux内核支持Intel x86、Motorola/IBM P
owerPC、Compaq(DEC)Alpha、IA 64、S/390、SuperH等微处理器体系结构,这种操作系
统的广适性可见一斑。
Linux又可以说是一个很小的系统。用来启动只需要小到500K字节不到的目标代码。完全
可以把Linux内核和root文件系统放在一张软盘上,启动一台硬件条件最小的机器。也可
以利用Linux实现从网络启动,实现网络无盘图形工作站。(在4.6节有详细介绍)
Linux的系统界面和编程接口和传统的UNIX类似,大量在UNIX下的程序员可以很方便的从
UNIX环境转移到Linux环境下来。而不像从UNIX环境转移到Windows开发环境那样复杂。
在Linux平台上的应用软件也不断得到扩充。许多著名的商业软件都有了Linux下的版本
:Applix公司和Star公司提供了多种字处理、电子表格、图形处理的应用软件;Corel
WordPerfect 8、Adabas D 和Oracle 8数据库、Netscape Navigator 6.0网络浏览器、
Apache 1.3.12网络服务器、Adobe Acrobat Reader 4.0等等Linux下的应用程序都已经
纷纷推出。Linux下将来不再是高手的领域,这种操作系统将来也必然走进千家万户,成
为Windows强而有力的竞争者。
在网络服务器市场上,近几年商用UNIX系统在往大而复杂的方向发展,使得UNIX的复杂
性不断增加,管理整个UNIX系统也就变得越来越复杂。Linux简单易用,系统管理也比较
容易上手,从而成为在服务器高端的一个重要选择,并且有不断上升的趋势,大有取代
昂贵、复杂的商用UNIX的趋势。
2) 使用成本低
几乎所有的商业用操作系统如Microsoft公司的Windows98/NT Server/NT Workstation系
列,都需要为每一个拷贝支付相当数量的费用。在其下的应用软件每一个都需要大量的
支出来获得。商用操作系统下建立一个开发工具链,除了要为操作系统本身付费之外,
还要为组成工具链的应用软件工具包支付大量的费用。但是Linux是免费软件,只要遵守
GPL(GNU General Public License)的规定,就可以免费获得拷贝。Linux下有同样遵
循GPL规定的C、C++、Java等等一系列的软件工具开发包,从功能角度上看并不亚于商用
开发包,同时可以极大的降低开发成本。这点优势是其他商用操作系统无法比拟的。
3) 文档完善
Linux有非常多的文档支持,从为初学者准备的各种教程到非常详细的联机帮助文档。L
inux是互联网充分发展的产物,许多关于Linux的文档都可以在Internet上找到和下载。
Linux Document Project是为Linux提供系统化的文档支持的项目,在世界上许多程序员
和用户的帮助下,它已经收集了非常详细的系统文档和使用文档。而且,各种关于Linu
x的书籍和杂志正如雨后春笋般地出现,大量的英文资料也正在翻译成中文,方便中文使
用者。
4) 强大的网络功能
Linux操作系统最突出的是网络部分,基本上所有的网络协议和网络接口都可以在Linux
上找到,Linux内核比标准的UNIX更加高效地处理网络协议,系统的网络吞吐性能非常好
,这也是为什么Linux在网络服务器市场上占据越来越大市场份额的一个原因。
5) 支持X Windows系统
X Windows是一个在大多数UNIX工作站上使用的图形用户界面,它是一种与平台无关的客
户/服务器(Client/Server)模型,可以让用户在一台机器上调用另一台机器的X wind
ows库,打开另一台机器上的窗口,而并不需要考虑这两台机器自己本身的操作系统类型
。正是这种特性使得UNIX和Linux系统上的用户和应用程序非常自然地通过网络连接在一
起。
当然,最重要的是Linux不是某个公司的私有财产,它是一个开放软件,是免费的和源代
码公开的。Linux在这几年不断成熟,越来越多的人加入了Linux的行列,以前Linux只是
一群黑客的玩具和专家的实验用操作系统,而现在即使是电脑的普通用户也在用Linux。
为Linux提供服务的公司也开始出现,为客户提供专业化的技术支持。但实际上不用花钱
也可以通过Internet新闻组得到强大的Linux技术支持和帮助。Linux有一个庞大的支持
者群体,其中许多人都编写驱动程序和其它的更新程序并且免费的通过Internet网络进
行分发。这意味着对新硬件的Linux驱动程序甚至比用于其它的UNIX 系统如Solaris的驱
动程序还来得及时。Linux的庞大的志愿者网络在生产“补丁”程序方面反应很快。如,
当Pentium II的bug(97年Pentium II处理器的微指令发现设计问题)被发现以后,Lin
ux就是最早提供解决这个问题的方案的操作系统。如果一个Linux应用程序流行起来,用
户一般都可以通过Linux新闻组得到很好的支持。有许多Usenet新闻组可供Linux用户寻
求帮助。对一般Linux问题的回答时间可同一些厂商的E-mail支持(甚至是电话支持)相
比。对Linux的支持绝大部分是通过用户团体在Usenet新闻组上提供的。这上面广泛收集
有大量的FAQ,其内容包括Linux安装、配置和故障定位的方方面面。在Usenet上提供的
许多这方面的材料现在已经被一些出版商如Walnus Creek等公开出版了。所有的这些,
都是现有的嵌入式操作系统所无法比拟的。
1.5 论文的组织介绍
本文对基于Linux的嵌入式系统开发进行解释,并且针对几个关键技术做出讨论。论文的
组织结构为:
第一章是对嵌入式系统的综述、Linux的特点以及介绍。
第二章是介绍嵌入式系统的特点,从处理器、实时系统、网络、用户交互接口等方面进
行介绍。
第三章是说明采用Linux作为我们嵌入式系统开发的原因,从嵌入式系统的特点的角度进
行讨论。
第四章是Linux的实时系统变种RTLinux的原理、实现和编程的介绍。
第五章是介绍Linux的网络功能,并且介绍对Linux网络设备驱动程序的分析,说明如何
利用Linux网络协议栈来用于嵌入式系统中网络模块。
第六章是介绍如何利用GDB的远程调试功能搭建跨平台的Linux内核调试环境。
第七章在总结整个毕业设计的基础之上,展望进 |