嵌入式应用软件开发环境δOS/λTool的设计与实现
内容导读:
嵌入式应用软件开发环境δOS/λTool的设计与实现 电子科技大学 郭兵 熊光泽 陈丽蓉 北京系统工程研究所 蔡建平 摘要 嵌入式系统的广泛应用需要良好的嵌入式应用软件开发环境支持。本文重点研究一种嵌入式应用软件开发环境δOS/λTool的设计思想,并详细介绍实时操作系统δOS的结构和嵌入式应用软件开发工具包λTool的组成及实现的关键技术。 关键词 嵌入式系统 软件开发环境 实时操作系统 开发工具 引言 嵌入式计算机系统(简称嵌入式系统)是实时系统的重要组成部分。其结构紧凑、资源有限,一般由嵌入式微处理器等硬件及其软件(包括实时操作系统RTOS和实时应用程序)组成,具有嵌入性和实时性等特点。嵌入式系统的广泛应用需要良好的嵌入式应用软件开发环境(以下简称嵌入式软件开发环境)支持。由于嵌入式系统的目标机受资源限制,不可能建立庞大、复杂的开发工具,其开发环境和目标运行环境往往相互分离。因此,嵌入式应用软件的开发方式一般是:在宿主机(Host)上建立开发环境,进行应用程序编码和交叉编译,然后宿主机通过串口或网络与目标机(Target)建立连接,将应用程序下载到目标机上进行交叉调试。应用程序经过调试和优化,最后将应用程序固化到目标机中实际运行。嵌入式软件开发环境是嵌入式系统开发中重要的系统软件,一般与RTOS捆绑销售。作为一种专用软件,其技术含量高,价格昂贵,是现代数字化产品开发的必备工具软件。嵌入式软件开发环境δOS/λTool是一套集成的嵌入式软件开发环境,主要用于开发、调试实时操作系统δOS的应用程序。嵌入式软件开发工具包λTool以Windows或Linux为宿主机平台,以X86,PowerPC,MIPS,Strong ARM为目标机平台。 一、 δOS/λTool的设计思想1. 设计目标嵌入式软件开发环境δOS/λTool的设计目标归纳起来主要有以下几点。(1) 先进性和通用性:技术上达到国际同类软件的先进水平,同时满足多种RTOS和BSP(Board Support Packet)的开发需求。(2) 可靠性:对嵌入式应用软件的代码质量有较高的要求,必须保证系统的可靠性。(3) 安全性:必须保证交叉编译器产生的目标代码中没有“技术陷阱”或“后门”等有害的附加代码。(4) 支持Ada等高级语言的开发:由于Ada语言具有可靠性和实时性的特点,故在嵌入式系统方面有着广泛的应用。(5) 开放性:开发工具要符合相应的标准,易于实现同第3方工具的接口,易于扩展。 2. 技术路线根据设计目标,我们采用的技术路线是:以GNU(GNU'S Not Unix)工具软件为基础,参照国外有代表性的嵌入式软件开发环境产品,主要为δOS提供一种嵌入式软件开发环境。以GNU工具软件为基础,是因为GNU软件秉承“自由、开放”的精神,在Internet网上提供免费的有关研究和开发成果,大量的系统软件源码能够通过Internet网免费获得,尽管补丁和BUGS多,测试工作存在一些问题,但仍不失为自主开发嵌入式软件开发环境的重要资源和基础。参照国外有代表性的嵌入式软件开发环境产品(如pRISM+、Tornado),是因为这些产品采用了先进、成熟的技术,代表了当今嵌入式软件开发环境的发展方向。因此,我们根据上述技术路线,结合国情和已有的自主开发成果,拟定了可行的高起点技术方案,并采用快速原型法,坚持试用改进、逐步求精的技术路线,着重突破关键技术,最终成功地建立起一种满足高档需求的嵌入式软件开发环境δOS/λTool,其组成框图如图1所示。图1嵌入式软件开发环境δOS/λTool的组成二、 δOS的结构实时操作系统δOS是在科技预研成果CRTOS x86/rm、CRTOS x86/spm、CRTOS x86/fpm、CRTOS DSP/C3X的基础上,结合国外有关RTOS的特点,发展起来的实时操作系统系列软件。包括实时内核δ\ Core、网络组件δ\ Net、调试组件δ\ Aware、图形用户组件δ\ GUI等。δOS设计采用微内核结构和Client/Server模式,利用微内核固有的特点,加强系统的可伸缩性、可裁剪性、可靠性及代码的可重用性,采用面向对象的设计技术、独立的超微内核(纳核)可移植界面及板级支持包(BSP),来提高RTOS的可移植性,加强并完善与实时性能相关的算法和对象设计。δOS的总体结构如图2所示。图2 δOS系统结构图δOS从上到下有4个层次。上层是实时应用及RTOS的核外服务器(即RTOS软组件)。目前在服务器的设计上提供了基于TCP/IP协议的网络通信服务器δ\ Net,实现了较完整的TCP/IP协议族。此外,还提供了轻型GUI组件δ\ GUI、调试组件δ\ Aware等。下层是微内核及其可移植的纳核层,它直接在微内核内为实时应用提供线程管理、线程间的通信服务、微内核与服务器间的通信管理、定时器和时钟管理、中断管理、内存管理、字符I/O和可靠性服务,并提供与硬件特性无关的纳核层可移植界面。纳核本身与微处理器的特性有关。纳核与微内核设计是整个系统设计的核心。BSP层提供屏蔽板级硬件特性(如微处理器的外围电路)的功能,便于RTOS在不同外围电路组合的硬件上实现移植。δOS能够支持的目标CPU较为广泛,包括X86、PowerPC、MIPS和Strong ARM等。其中目标机为X86(包含386EX和PC386两种BSP)的产品δOS x86/fpm已成功实现,经过测试和试用,达到设计目标。图3 λTool中的主要开发工具三、 λTool的组成1. 主要开发工具嵌入式软件开发工具包λTool是一个完整的工具集。目前我们已成功地实现了与δOS x86/fpm相配套的产品λTool x86/fpm,如图3所示。λTool中的开发工具主要包含以下几种。(1) 开发管理:通过书写Makefile,能够方便地进行应用程序的编译和链接。(2) 版本控制:采用CVS或RCS版本控制软件,维护软件的版本和一致性。(3) 编辑器:使用方便,对Ada、C、C++和ASM语言关键字变色提示,上下文帮助敏感。(4) 配置工具:设置应用程序使用的δOS参数,包括内核参数、软部件选择(如δ\ Net、δ\ Aware和δ\ GUI等)以及软部件参数,实现RTOS的定制。(5) 交叉编译器:Cgcc支持Ada、C、C++和ASM源程序的编译、链接和定位,尤其是Ada语言的嵌入式应用软件开发支持,以及与交叉编译器相配套的实用程序,包括目标文件格式转换工具(支持的文件格式有H\ record、S\ record、ABS、BIN、COFF和ELF)等。(6) 交叉调试器:Cgdb具有中文化的GUI和命令行两种使用方式,支持Ada、C和C++源语言级和汇编级符号调试以及单串口调试。调试功能丰富,除具有同目标机建立连接、下载目标程序、设断点、单步跟踪、查看栈、寄存器、变量内容等基本调试功能外,还具有识别和操纵RTOS对象等高级调试功能,能够较好地满足交叉调试的需求。(7) 目标监控器:Monitor提供386EX和PC386两种BSP,可灵活配置,如选择串口、网络口以及设置通信参数等,支持不同配置的目标机。(8) 联机帮助系统:采用HTML格式书写的完整用户联机手册。2. 实现的关键技术由于GNU工具软件主要为用于本地开发(Native Development)而设计,当用于交叉开发时,须要解决一系列关键技术,主要包括以下4个方面。(1) 对RTOS平台的支持:Cgcc支持的RTOS执行体要求以函数库形式提供,在编译时作为普通函数库链接使用,但需要设置正确的程序启动文件crt0.o、链接定位文件linkcmds、RTOS头文件路径和函数库路径等。因此,λTool基本上与RTOS无关,具有通用性,能够支持多种RTOS,除支持δOS外。还能够支持VRTX等。(2) 应用编程语言的RTL(实时运行库)支持:在δOS上实现的Ada语言绑定库(Bindings)符合POSIX标准P1003.5C,对Ada应用程序的实时运行提供支持。同时,在δOS上也实现了C++和C语言的实时运行库。(3) 交叉调试器的高级调试功能:Cgdb除能够进行C、C++源语言级和汇编语言级的符号调试以及具有同目标机建立连接、下载目标程序、设断点、单步跟踪、查看栈、寄存器、变量内容等基本调试功能外,还具有以下高级调试功能:具有Os\ aware功能,即Cgdb能够识别和操纵δOS的系统对象(包括任务、信号量、邮箱、堆栈、I/O缓冲区、软时钟等);能够设置任务断点以及进行任务级跟踪调试;能够跟踪和操纵IDT表和GDT表;能够对中断进行调试并且直接进行RTOS系统功能调用等。这些都是嵌入式软件交叉开发中需要的高级调试功能。(4) 目标机监控器的设计:在目标机上与主机端Cgdb配合工作的通常是监控器(Monitor)。一般可将Monitor分为ROM Monitor和Task Monitor。我们设计的Monitor 既可以裁剪为Task Monitor,又可以裁剪为ROM Monitor。具有可移植性好、支持高级调试功能、支持多种调试方式、可裁剪等优点。 3. 主要特点嵌入式软件开发工具包λTool主要有以下5个特点。(1) 工具的开放性。开放性一般包括以下几个方面,即符合标准、可移植、可伸缩和易获得性。a. 符合标准:主要开发工具Cgcc和Cgdb符合相应标准,如Cgcc能够编译的Ada、C++、C和ASM语言分别符合Ada\ 95、AT&T C++、ANSI C和AT&T标准。Cgdb能够调试的目标文件是标准的ELF格式。b. 可移植性:所有开发工具(除ROM Monitor汇编启动代码部分外)基本上都是用ANSI C实现。在各种UNIX平台及Windows平台上具有良好的源码级可移植性。c. 可伸缩性:主要开发工具Cgcc和Cgdb可以根据需要进行伸缩、裁剪,如Gcc(本地编译器)能够支持Ada、C++、C、Object C、Fortran、Chill和Java等多种语言的编译,但在生成Cgcc时,可选择需要的1种或几种开发语言的编译模块(词法分析、语法分析、语义分析等),减少生成的Cgcc及其函数支持库的代码尺寸。生成Cgdb时,也能够选择需要的1种或几种开发语言的编译模块,减少生成的Cgdb及其函数支持库的代码尺寸。d. 易获得性:所有开发工具(包括Cgcc、Cgdb和ROM Monitor等)的源码都是符合GPL协议的软件,很容易从Internet的许多站点上获得,对其长期发展有着坚实的基础。(2) 工具的易用性。全中文化的用户界面设计和信息提示,以及工具的许多功能设置,方便用户开发使用,如Cgdb具有Reload功能,不用重启目标监控器,也能够下载一个新的应用程序。(3) 工具的安全性。所有开发工具都具有源码。在使用和分析过程中,未发现“技术陷阱”或“后门”等有害的附加代码,能够满足一般嵌入式系统的安全性需求。(4) 工具的可扩展性。由于所有工具都是源码开放,且符合相应标准,很容易增加需要的功能,因而,工具具有可扩展性,也易于实现同第三方工具的接口。(5) 工具的可维护性。由于所有工具都是源码开放,我们对源代码经过仔细的研究和分析,已经掌握了相关的关键技术,能够根据不同嵌入式应用的需求,对工具进行一定的维护和扩展。结束语嵌入式软件开发环境δOS/λTool能够支持Ada、C++、C和ASM等开发语言,资源丰富、可用,能够满足嵌入式应用软件的开发需求。其成功的典型应用包括电子对抗子系统、卫星移动通信实验子系统、车载卫星定位系统、湖南计算机厂网络终端设备、奥能信息终端产品、江友IP Phone等。但对于开发大型、复杂的嵌入式系统,目前还存在一些问题需要解决,如支持更多的目标处理器、交叉编译优化技术、嵌入式系统安全性的V&V(validation and verification)分析工具以及全面的工具集成技术等。δOS/λTool作为国内一套拥有源码的嵌入式软件开发环境,有着较高的开发起点,已经大大缩短了国内在嵌入式软件开发环境上同国际水平的差距,有着巨大的发展潜力和广阔的应用前景。因此,我们将持续追踪嵌入式软件开发环境的最新发展,吸收、消化其先进的技术,不断完善δOS/λTool,最终形成一套高可靠、高可用的嵌入式软件开发环境。MES 参考文献 1熊光泽等一种微内核嵌入式实时操作系统的设计,第八届抗恶劣环境计算机学术年会 2蔡建平等实时嵌入式系统与Ada支持,第八届抗恶劣环境计算机学术年会 3VRTX培训教程电子科技大学微机所嵌入式软件设计中心 4GNU软件用户参考.http://sourceware.cygnus.com 5Tornado用户参考手册.WindRiver Corporation 6POSIX 1003.5C/D5:POSIX ADA LanguageInterfaces.IEEE Computer Society,1998
标签:
来源:单片机与嵌入式系统应用 作者:电子科技大学 郭兵 熊光泽 陈丽蓉;北京系统工程研究所 蔡建平 时间:2006/2/12 0:00:00