嵌入式操作系统研究及开发实例
责任编辑:lng    浏览:24623次    时间: 2008-01-31 08:32:29    | 来源:采集所得   

摘要:1 引言 嵌入式系统在生活中随处可见,一台通用计算机的外部设备中就包含了5-10个嵌入式处理器,打印机、扫描仪、数字相机、USB集线器等均是由嵌入式处理器控制的。制造工业、过程控制、通讯、仪器仪表、汽车、船舶、航空航天、军事装备、消费类产品等方面均是嵌入式..

分享到:
 

1  引言

 

    嵌入式系统在生活中随处可见,一台通用计算机的外部设备中就包含了5-10个嵌入式处理器,打印机、扫描仪、数字相机、USB集线器等均是由嵌入式处理器控制的。制造工业、过程控制、通讯、仪器仪表、汽车、船舶、航空航天、军事装备、消费类产品等方面均是嵌入式系统的应用领域。嵌入式系统广为接受定义是:以应用为中心,以计算机技术为基础,软件硬件可裁剪、适应应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。美国著名未来学家Nicholas Negroponte1999年访华时预言,若干年后嵌入式智能工具将是继PC Internet 之后最伟大的发明。

 

2  嵌入式系统的结构

1  嵌入式系统结构图

    嵌入式系统作为一类特殊的计算机系统,自底向上包含有3个部分:嵌入式硬件平台、嵌入式操作系统、嵌入式应用软件,如图1中虚线框所示。随着嵌入式越来越复杂的应用,如何简洁有效地使嵌入式系统应用于各种不同的应用环境是嵌入式系统发展中所必须解决的关键问题。经过不断的发展,原先嵌入式系统的3层结构逐步演化成为一种4层结构。如图1中实线框所示,这个新增加的中间层次叫硬件抽象层,有时也叫板级支持包,是一个介于硬件与软件之间的中间层次。硬件抽象层通过特定的上层接口与操作系统进行交互,实现操作系统对硬件的直接操作。硬件抽象层的引入大大推动了嵌入式操作系统的通用化。

 

3  嵌入式操作系统

 

    通用计算机具有完善的操作系统和应用程序接口(API),是计算机基本组成不可分离的一部分,应用程序的开发以及完成后的软件都在OS平台上面运行,但一般不是实时的。嵌入式系统应用软件可以没有操作系统直接在芯片上运行,但是为了合理地调度多任务,利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配RTOS开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。嵌入式操作系统完成嵌入式应用的任务调度和控制等核心功能,具有内核较精简、可配置、与高层应用紧密关联等特点。

 

    嵌入式操作系统的高实时性是基本要求,在多任务嵌入式系统中,对重要性各不相同的任务进行统筹兼顾的合理调度是保证每个任务及时执行的关键,单纯通过提高处理器速度是无法完成和没有效率的,这种任务调度只能由优化编写的系统软件来完成,因此操作系统的高实时性是基本要求。多任务操作系统是知识集成的平台和走向工业标准化道路的基础。

表1

 

    为了满足嵌入式电子设备功能的不断升级和日趋复杂的电气结构,全世界EOS多达数百种,而且新的EOS不断涌现,很多IT组织、大公司都有自己的RTOSEOS不但支持8/16位处理器,而且能支持TriCoreATmega 128PA-RISCPower PCARMStrong ARMSE3208NIOSARCAVRHMS39C7092LH7A404TMS320C671168XXXCPU3232/64RISC芯片或信号处理器DSP新一代EOS 还具备TCP/IPIEEE1394USBCANBluetoothIrDA通信接口组网协议软件和物理层驱动软件,采用实时多任务编程技术和交叉开发工具技术来控制功能复杂性,简化应用程序设计、提供精巧的多媒体人机界面、保障软件质量和缩短开发周期。就每种特定的EOS而言,其更新速度日新月异,为了及时了解EOS新的特征,笔者列举了20世纪80-90年代一些著名的EOS,其主要特征如表1所述。

 

    下面对1999年至2004年五年期间使用率较高的RTOS,做一详细介绍。

    (1)  RTLinux是比较受欢迎而又比较成功的实时Linux实现方案之一,它既有专有版本,又有源码开放的版本,两种版本均可从FSMLabs公司买到。RTLinuxLinux看作是在小型RTOS下的一个低优先权任务执行软件。只有在没有实时任务可执行时,Linux才会运行。这种技术使RTLinux能在35μs预定时间内,在一个典型的PC兼容系统上执行周期性的任务,而标准的Linux则需要超过20ms的预定时间。这种混合方法的优点在于简单的RTOS能够收集实时数据,然后用户可以利用标准Linux应用程序的功能来分析和显示这些数据。RTLinux是源代码开放的具有硬实时特性的多任务操作系统,它是通过底层对Linux实施改造的产物。通过在Linux内核与硬件中断之间增加一个精巧的可抢先的实时内核,把标准的Linux内核作为实时内核的一个进程与用户进程一起调度,标准的Linux内核的优先级最低,可以被实时进程抢断。正常的Linux进程仍可以在Linux内核上运行,这样既可以使用标准分时操作系统―Linux的各种服务,又能提供低延时的实时环境。RTLinux在默认的情况下采用优先级的调度策略,即系统调度器根据各个实时任务的优先级来确定执行的先后次序。优先级高的先执行,优先级低的后执行,这样就保证了实时进程的迅速调度。同时RTLinux也支持其它的调度策略,如最短时限最先调度(EDP)、确定周期调度(RM)(周期段的实时任务具有高的优先级)。RTLinux将任务调度器本身设计成一个可装载的内核模块,用户可以根据自己的实际需要,编写适合自己的调度算法。

    (2)  VxWorks操作系统是美国WIND RIVER公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),它是目前嵌入式系统领域中使用最广泛,市场占有率最高的系统。它支持多种处理器,如x86i960Sun SparcMotorola MC68xxxMIPS RX000POWER PC等等。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的 F-16FA-18 战斗机,B-2 隐形轰炸机和爱国者导弹上,甚至连1997年在火星表面登陆的火星探测器上也使用到了VxWorks

    (3)  QNX RTOS 两个加拿大人Gordon BellDan Dodge1980年成立了Quantum Software Systems公司,他们根据大学时代的一些设想写出了一个能在IBM PC上运行的名叫QUNIXQuick UNIX)的系统,直到AT&T发律师函过来才把名字改成QNXQNX在正式发行的1.0版就成功实现了多任务,而20世纪80年代中期Microsoft年复一年的宣布其新版的DOS将是真真正正的多任务系统的时候,QNX已经在各大公司用开了。POSIX出现后,QNX被重写了一遍,一方面避免了被指责用户界面与UNIX过于相似的尴尬,另一方面在保持特色的同时作了一些改进,变得更加优秀。为了与Microsoft抗衡,改名为QNX Software Systems的公司又推出了基于微内核技术的Neutrino版本,这使得QNX在嵌入式应用方面有了广阔的前景。QNX的最新版本为QNX Neutrino RTOS Version 6.2.1 [Apr-7-2003],国内的官方网站有非商业版的下载。嵌入式系统应用最广泛的一种操作系统是加拿大QNX公司推出的QNX RTOS操作系统。该系统可与Linux兼容,不同于Windows 98,它是一种实时系统,在存储器的装载周期中进行命令处理而不会延误时间。它可以用在肾病患者换血时所需的透析设备及宇宙飞船、工艺控制设备或电讯设备中。QNX是一个实时的、可扩充的操作系统,它遵循POSIX.1(程序接口)和POSIX.2Shell和工具),部分遵循POSIX.1b(实时扩展)。它提供了一个很小的微内核以及一些可选的配合进程。其内核仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行。所有其它OS服务,都实现为协作的用户进程,因此QNX内核非常小巧(QNX4.x大约为12KB)而且运行速度极快。这个灵活的结构可以使用户根据实际的需求将系统配置成微小的嵌入式操作系统或是包括几百个处理器的超级虚拟机操作系统。

    (4)  Nucleus Embedded RTOS  ATNucleus实时操作系统可于各式中央处理机上激活各种嵌入式应用软件,Nucleus实时操作系统为以大型项目且高成本敏感为典型著称的移动通讯市场提供一个合乎成本效益的替代方案。

    (5)  Lynx实时系统公司的LynxOS是一个分布式、嵌入式、可规模扩展的实时操作系统,它遵循POSIX.1aPOSIX.1bPOSIX.1c标准,最早开发于1988年。LynxOS目前还不是一个微内核结构的操作系统,但它计划使用所谓的“Galaxy”技术将其从大型集成化内核改造成微内核,这一技术将在LynxOS 3.0中引入。新的28KB微内核提供以下服务:核心启动和停止、底层内存管理、出错处理、中断处理、多任务、底层同步和互斥支持。

    (6)  Real-Time Mach 分布式实时系统在现代社会中起着非常重要的作用,它广泛应用于飞行器控制、工厂自动化等领域。但是复杂系统的设计者们缺乏系统的开发方法和分析工具,他们面临着一个新的挑战,即必须开发一种实时内核,为用户提供可预测、分析的实时计算环境,它允许系统设计者在设计阶段分析运行时的行为。RT-Mach 是基于这个目标而产生的一个实时操作系统内核,它是CMU在原标准Mach 微内核之上开发的实时微内核,它提供了一个公用的分布式实时计算环境[25]。与标准Mach 相比,它增加了以下特点:实时线程模型、实时调度、实时时钟和计时器、实时同步以及实时IPC

    (7)  ITRON 设在东京的Industrial TRONthe RTOS Nucleus,实时操作系统中心)或叫ITRON(工业实时操作系统中心),组织制订嵌入式系统RTOS的标准。该组织于1987年发布了第一个ITRON规范,即ITRON1。其后,又着手开发针对8位和16μC、有较小的功能集的μITRON规范和用于32位处理器的ITRON2规范,并于1989年发布了μITRONITRON2两个技术规范。日本的TRONThe Real-time Operating system Nucleus,即实时操作系统内核)工程始于1984年,是由日本东京大学坂村健博士倡导。而ITRON是一种工业实时嵌入式操作系统,在微处理器中运行。据称这一系统已经安装到了全球30亿到40亿台家用电子产品当中,远远超过Windows的普及程度,后者不过安装到了1.5亿台计算机上。尽管在个人电脑领域知名度几乎为零,但ITRON现在却占据了全球实时嵌入式操作系统市场上大约70%的份额。目前,日本出售的imode电话,就是采用了TRON的技术。在2003年的年底,微软也加入坂村健教授发起T-Engine论坛,为未来“网络无处不在的社会”(Ubiquitous Network Society)共同努力。

    (8)  Microsoft Windows CE是一个简洁的,高效率的多平台操作系统。它不是削减的Windows95版本,而是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对于从掌上电脑到专用的工业控制器的用户电子设备进行定制。操作系统的基本内核需要至少200KROM。从SEGADreamCast游戏机到现在大部分的高价掌上电脑,都采用了Windows CE,但是无奈价格太高,使得整个产品的成本急剧上升。

    (9)  μC/OS-II是一款多任务的实时操作系统,其最关键部分是实时多任务内核,内核的基本功能包括:任务管理、定时器管理、存储器管理、事件管理、系统管理、消息(队列)管理、信号量管理等,这些管理功能都是通过应用程序接口函数API由用户调用的。

    μC/OS-II采用占先式实时内核的任务管理机制,当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了,高优先级的任务获得CPU的控制权。占先式运行机制特别适合于对实时性要求较高的场合,可以管理64个任务,其中,系统保留8个任务,应用程序最多可以使用56个任务。μC/OS-II不支持时间片轮转调度法,所以赋予每个任务的优先级必须是不同的。优先级号越低,任务的优先级越高。它的基本代码尺寸不到5K字节,对存储器容量要求低,满足于嵌入式系统对体积的苛刻要求。μC/OS-II有完整的TCP/IP协议栈、GUI和文件管理系统,可随内核一起移植,目前已被应用于各个领域,如照相机行业、医疗检测仪器、音响设施等等。

        (10)  μCLinux是对Linux的小型化改造得到的,是高度优化的、代码紧凑的嵌入式Linux,完全符合GNUGNU Is Not Unix/GPL(General Public License)公约的项目,开放代码。虽然它的体积很小,但是μCLinux仍然保留了Linux的大多数的优点:稳定、良好的移植性,优秀的网络功能、完备的对各种文件系统的支持,以及标准丰富的API。内存管理是μCLinux同标准Linux的最大区别。标准Linux使用的虚拟存储器技术,而μCLinux没有MMU管理,所以采用实存储器管理策略。μCLinux有完整的TCP/IP协议栈,支持大量其它的网络协议,支持NFSext2ROMFS and JFFSMS-DOSFAT16/32等文件系统,支持GNU编译器和命令行调试器GDB

    国内的嵌入式系统开发也已经取得了一定的成绩,包括中科院的EEOS,凯思昊鹏的HOPEN OS等等。但是国内的产品很大程度上只是外国公司的附属和扩充,技术含量很低。国内EOS市场占有率还很低,与国外的发展有很大的差距,多数公司还是依靠政策的支持、国内投资、海外上市获得庞大的开发投资,真正的市场回报还是杯水车薪。

 

4  开发实例

 

2  数字化语音教室终端结构图

3  μCLinux移植流程图

 

    面对多种多样各具特色的嵌入式操作系统,应根据实际应用认真选择。选择时,主要对调试工具、性能、兼容性、内核要求的最小存储器尺寸、软件组件和设备驱动程序、代码开放性及版税等方面综合权衡。笔者采用TI公司生产的TMS320VC5471双核结构芯片,研制了数字化语音教室学生终端。该芯片由主处理器ARM7TDMI(简称ARM7)和从数字信号处理器TMS320VC5409(简称C5409)组成。ARM7采用冯?诺依曼结构,将指令、数据地址存储在同一个存储器中统一编址,依靠指令计数器提供的地址对指令、数据和地址进行区分。ARM7芯片使用单一的32位数据总线传送指令和数据,这种并行的体系结构使ARM7控制功能要强一些,运行速度要慢一些。人机接口对速度要求是比较低的,控制功能要求较高,鉴于此由ARM7处理键盘、显示器及以太网卡三部件等事务密集型控制,如图2所示。

 

        ARM7内部集成了一个以太网媒体存取控制模块MACMedia Access Control),使网络设计大大简化。H.323应用系统需要在Linux环境下编译,底层的函数与标准的Linux API接口,鉴于此,在ARM内核上移植了μCLinux嵌入式操作系统。H.323应用系统、键盘、显示器等用户接口模块均由μCLinux 统一管理和调度,移植过程如图3所示。

 

        DSP是采用哈佛结构的C5409芯片。哈佛结构的最大特点是计算机具有独立的数据存储空间、程序存储空间和相应的数据总线和程序总线。C5409可同时进行数据访问与指令读写,提高了数据吞吐率,从而提高了系统运算速度,运算密集型事务适合在C5409运行。在话音编解码运算中,需要较高的CPU运算速度,在C5409上可以实现G.711G.728G.729语音编解码算法和AACMP3等音频编解码算法。在本方案中,笔者采用比特率为16KB/s低延迟语音编码标准G.728,编码延迟为0.625ms。语音的采集和回放对实时性要求苛刻。为此,笔者选用硬实时性较高的μC/OS-II作为移植对象,在DSP内核上移植了μC/OS-II,其控制A/DD/A模块实现语音信号输入输出,以及实时实现语音编解码算法。移植过程如下:

        (1)  #define声明两个管理中断的宏和一个定义堆栈生长方式的宏;

        (2)  C语言编写初始化任务的堆栈结构函数;

        (3)  #define设置一个常量的值,并声明10个与编译器相关的数据类型;

        (4)  DSP指令系统编写“调用高优先级就绪任务”、“任务切换”和“时间的延时和期满”等三个汇编语言函数。

】【打印繁体】【投稿】 【收藏】 【推荐】 【举报】 【评论】 【关闭】【返回顶部