【VC++开源代码栏目提醒】:网学会员为需要VC++开源代码的朋友们搜集整理了OSEK+OIL配置器研究与应用 - 博士论文相关资料,希望对各位网友有所帮助!
中 文摘要 为解决汽车电子中应用软件大量增加及重复开发问题,欧洲汽车行业开发了一个用于汽车电子的、带有标准接口的开放式系统--OSEKfVDX标准(文中简称为OSEK标准)。
OSEK标准体系包括操作系统(OS)标准、通信(COM)标准、网络管理(NM)标准及OSEK实现语言(OIL)标准。
OIL(OSEK Implementation Language)标准提供了一种描述应用程序的标准方法,实现了汽车电子控制单元(ECU)应用程序的可移植性。
如果一个应用程序用OIL语言进行描述,那么它可以很方便的从一个OSEK平台移植到另一个OSEK平台,几乎不需要做任何修改。
但是,OIL语言仅提供了描述应用程序的语法和语义,如果采用手写描述文件的方式开发应用程序,由于OIL语法复杂且繁多,使得程序开发难度加大且容易出错。
本文针对OSEK OIL配置器进行研究。
首先,
论文介绍了OSEK标准的各组成部分,重点分析了其中的OSEK OIL标准,以及如何使用OIL语言对OS系统中的各种OSEK对象进行定义,为使用OIL语言描述应用程序奠定了基础。
其次,分析研究了一种
开源OSEK操作系统--Trampoline。
通过对其内核源
代码的深入剖析,详细分析了其内核调度、任务管理、中断管理、警报管理的实现机制,搭建了OIL配置器研究的平台和实验环境。
第三,基于XML技术设计了一种图形化的OIL配置器。
该配置器使用XML文件作为中间数据存储,避免了直接生成文本格式OIL配置文件导致的程序实现复杂、可扩展性差的问题。
不同于现有基于XML技术的OIL配置器设计方法,本文加入了XML Schema文件对应用定义配置数据进行验证,将程序逻辑简化,进一步提高了程序的可扩展性。
第四,使用VC++6.0对图形化的OIL配置器进行了实现。
测试结果表明,该配置器运行稳定,简单易用,方便了应用程序的开发。
最后,给出了一个车窗升降机控制程序应用示例。
该程序基于Trampoline的OS和COM,使用本文设计的OIL配置器进行配置,生成了所需的OIL配置文件。
根据该配置文件所提供的程序框架,本文对车窗升降机控制程序的各功能模块进行 了实现。
测试结果显示该控制程序运行正常,表明本文设计的OIL配置器能很方便地将用户的配置转化成应用程序的OIL描述文件,并且具有操作简单、实用性强的特点,对于OSEK应用程序的开发具有广阔的应用前景。
关键词:OSEK:OIL;配置器;Trampoline;XML ABSTRACT To address the problem of the great increase and the duplicatedevelopment of the software contented in electronic control units(ECU),theOSEKfVDX(referred as OSEK)standard was developed by the Europeanautomotive industry.OSEK is an open system with standard interfaces,dedicated to automobile electronics.The OSEK standard architectureincludes the OS standard,the COM standard,the NM standard and the OILstandard.The OIL(OSEK Implementation Language)standard provides astandard method for describing an application.It can improve the portabilityof ECU applications.If an application is described in OIL language,it can beeasily ported from one OSEK platform to another,almost making no change.HoweveL the OIL standard just provides the grammar and semantics of thelanguage.The configure file of an application can be handwritten,or begenerated by tools.If the configure file is created handwritten,the applicationdevelopers have to be familiar with the details of OIL grammar and thesemantics of all kinds of obj ects.So it is usually not very easy anderror-prone. The research of this paper focuses on the topic of OIL configurator.Firstly,the four components of the OSEK standard are introduced briefly,andthe OSEK Implementation Language standard is analyzed in emphasis.Furthermore,the way how to describe all kinds of OSEK OS objects ofapplications in OIL language is illustrated.Secondly,Trampoline—a kind ofopen—source OSEK operation system is analyzed in detail.By understandingthe source code of Trampoline OS kernel,the mechanism of kernelscheduling,task management,ISR management and alarm management ismade clear.The research platform and experimental environment is put up.Thirdly,a graphical OIL configurator is designed based on XML technology.The configurator uses XML file as intermediate data to save the user’Sconfigure data,and the problems of creating handwritten configure files areavoided.The configurator we developed takes advantage of XML S chema iiifile to verify the application definition data.This iS what it iS different fromother configurators developed based XIvlL technology.It the on can simplifylogic and improve the extendibility of the program.Fourthly,the configuratoris implemented under VC++6.0 IDE.Test results show that the configuratoriS easy to use and runs can facilitate the development of OSEK stably.Itapplications.Finally,a car window lift demo program is designed.It is basedon Trampoline OS and COM.Its confgure file is produced by theconfigurator we developed.According to the program framework theconfigure file provides,the control program is implemented.Test resultsshow that the window lift program runs well.It Can be seen from the demoprogram that the configurator we developed Can facilitate the creation of OILconfigure file of OSEK applications.It is easy to use and practical.The wideapplication prospect of the configurator we developed in OSEK applicationdevelopment can be foreseen.Key words:OSEK;OIL:Configurator:Trampoline;XML lV 声 尸 明 本人郑重声明:所呈交的学位
论文,是本人在指导教师的指导下,独立进行研究所取得的成果。
除文中已经注明引用的内容外,本
论文不包含其他个人或集体已经发表或撰写过的科研成果。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本声明的法律责任由本人承担。
关于学位
论文使用权的说明 本人完全了解太原科技大学有关保管、使用学位
论文的规定,其中包括:①学校有权保管、并向有关部门送交学位
论文的原件、复印件与电子版;②学校可以采用影印、缩印或其它复制手段复制并保存学位
论文;③学校可允许学位
论文被查阅或借阅;④学校可以学术交流为目的,复制赠送和交换学位
论文;⑤学校可以公布学位
论文的全部或部分内容(保密学位
论文在解密后遵守此规定)。
才∞穹铒厂周zt-目 第一章绪论 第一章绪论1.1研究背景和意义1.1.1 OSEK标准介绍 随着汽车对安全、环保、舒适、经济等性能要求的不断提高,汽车中汽车电子控制单元(Electronic Control Unit,ECU)的数量越来越多,其复杂性也急剧上升。
大量ECU的使用和复杂的控制程序给汽车制造商带来了巨大的成本压力。
为满足日益庞大而又复杂的汽车电子控制软件的开发需要,实现应用软件的可移植性和不同厂商的软件模块间的兼容性,德国汽车工业协会于1993年提出0SEK标准(德语“汽车电子设备开放式架构及其接口规范”的简称),旨在建立一个用于汽车电子的分布式控制系统的开放式体系结构,1994年法国汽车电子规范VDX(Vehicle DistributedeXecutive)并入了OSEK标准。
于是OSEK标准更名为OSEK/VDX(后文简称OSEK),并在1995年发布了它的第一个正式版本。
目前OSEK标准已经成为ISO国际标准。
OSEK标准体系包括OS【ll(Operating System)、COM〔2l(Communication)、 NM〔3l(NetworkManagement)、OIL〔4〕(OSEK Implementation Language)〔〕个部分: os(操作系统1标准:OSEK操作系统标准是整个标准的基础和核心,COM、NM和OIL标准都全部或部分依赖于OS标准。
OSEK操作系统是一种静态定义的、高效利用处理器和内存资源的操作系统,为汽车电子控制单元应用软件提供了一个统一的运行平台。
OSEK应用程序中所有对象均是静态定义的,它们在应用程序启动之前创 建,并且启动后不会被删除。
OSEK操作系统具有可配置性、可移植性、标准化接口、 实时性以及高可靠性等特点,具备任务管理、资源管理、时钟管理、中断管理和错 误处理等功能。
使用OSEK操作系统对处理器带来的负担不超过5%,它的
代码经过 了高度优化以减少内存消耗量。
COM(通信)标准:OSEK COM标准为汽车电子控制单元应用软件提供了一个统 一的通信环境。
它定义了独立于所用通信协议之外的应用
软件通信接口,规定了内 部
通信(ECU内部)和外部通信(ECU之间)的行为方式。
OSEK COM隐藏了底 层协议和硬件细节,为应用程序之间的通信提供了一个统一的平台,使应用程序开 发人员不用关心底层的硬件和协议差异,从而增强了应用软件的可移植性和可重用 性。
此外,OSEK COM实现只需要很少的资源就可以在多个硬件平台上运行,可以 满足不同级别的功能要求,具有可裁减性。
OSEK OIL配置器研究与应用 NM(网络管理)标准:NM的作用是保证ECU间通信网络的安全性和可靠性。
它通过监控网络和结点的状态,使得当某结点失效时,
网络中使用该结点数据的应用程序能及时获得消息并在功能缩减的情况下继续执行。
OIL(实现语言)标准:OSEK实现语言是为了达到应用程序高可移植性的目标,而提供的一种描述OSEK应用程序如何配置的标准方法。
每个ECU应用程序都有一个对应的OIL描述。
所有的OSEK系统对象,在OIL文件中都有对应的OIL对象来描述。
CPU是这些OIL对象的容器。
OIL为应用程序使用的各种对象定义了标准类型。
每种对象都被描述成一些属性和引用的组合。
OIL为每个OIL对象明确定义了所有的标准属性。
1.1.2研究的意义 汽车工业在国民
经济发展中具有支柱性地位和巨大的辐射拉动作用,拥有自主知识产权的汽车工业体系不仅关系到国内汽车企业本身的存亡,从更高的层面上讲更关系整个国家的国计民生。
2008年,中国汽车产量达到934.5万辆,位居世界第二位。
然而,一汽大众、上海大众、上海通用这些合资企业分别位列销量排名前三位,而国内自主品牌市场占有率则出现下滑,仅占到整个汽车市场份额的25.92%,而2007年自主品牌的市场份额则为29.4%t51。
由于我国汽车工业的设计、制造工艺和技术水平整体不高,尤其是核心技术和部件自主知识产权水平不高,还得依赖进口或合作生产,导致一方面受制于人,一方面处于价值产业链的下游。
在当前的开放环境下,只有提高自身技术水平,增强核心竞争力,才能迎头赶上。
因此对汽车电子关键技术的研究,具有非常重要的意义和切实需求。
OSEK标准是欧洲汽车行业先进开发技术的总结,提供了将各种汽车电子设备有机结合在一起的网络化嵌入式
计算机系统的开发规范,使汽车行业的各种软件能够兼容与协作开发,有利于提高汽车电子软件的开发效率【6】。
从2002年开始,国际标准化组织开始将OSEK纳入ISO.17356标准。
OSEK作为汽车行业的一个国际标准对行业的发展影响巨大,而其中的OIL标准则是将OSEK标准实际应用的关键,因此对其进行研究与应用有重要意义。
本课题主要针对OIL配置器进行研究,包括OSEK OIL标准方面的分析、实现与应用等,旨在为设计一套OSEK集成开发环境奠定基础,以推动OSEK标准在国内汽车行业中的应用。
2 第一章绪论1.2国内外研究现状 现有的OSEK系统商业实现中,3soft的ProOSEKV〕,WindRiver的OSEKWorksl引,Metrowerks的OSEKT”191,国内风丘科技的DoradoOSEKFlo】等通常都提供了一个集成开发环境,通过这种集成开发环境能够配置操作系统对象,设置对应的硬件平台,然后直接生成可在对应硬件平台上运行的
代码。
这样方便了用户按照OSEK标准来开发应用程序,使用户只关心自己的应用需求,而不用关注程序如何连接、如何生成目标
代码等
问题。
同时,还提供了一个OIL编译器,可以通过命令直接编译已有的应用程序OIL描述文件,生成应用程序对应的配置文件,从而可以使应用程序达到高可移植性。
国内在OSEK集成开发环境方面的研究启动比较晚,经过多年的科技攻关,有了清华大学TH.OSEK集成开发环境【ll】,浙江大学SmaaOSEK集成开发环境【121及风丘科技公司的DoradoOSEKtlo】等。
清华大学的TH.OSEK集成开发环境使用Eclipse集成开发环境和JAVA语言开发,里面有一个OIL配置器和OIL解析器,通过集成开发环境将OIL配置器与解析器进行连接,完成对应用程序的配置。
浙江大学开发的SmartOSEK集成开发环境中,也包括了一个OSEK OIL配置工具,能够完成对OIL文件的生成,验证,修改等操作。
另外,文章【13】开发了一种完全基于XML文件对OSEK操作操作系统进行配置,没有生成OIL语言格式的配置文件的配置工具,文章〔14〕也
设计了一种图形化的OSEK配置器,能够实现对OSEK应用程序的配置,生成OIL语言格式的配置文件。
而在现有的
开源OSEK系统中,只有PICOSl8t15】为PICOSl8平台提供了集成开发环境,但是它不支持OIL标准。
它的应用程序生成过程中没有生成OIL文件,直接通过编译连接生成了目标文件。
它也没有提供单独对OIL文件进行编译和配置的工具。
Trampoline〔16〕提供了一个OIL编译器GOIL,该编译器是使用GALGAS编译器生成语言来实现,它能够把OIL文件编译生成.C和.h文件。
生成的应用程序.C和.h文件中完成了操作系统对象的一些配置,默认值的初始化等操作,它们与操作系统 内核文件、应用程序功能
代码、其它的库文件一起,通过gcc编译器进行编译,然后连接生成应用
程序的可执行文件。
浙江大学的SmartOSEK集成开发环境中的OIL配置器和清华大学TH.OPEN集成开发环境中的OIL配置器都是基于对字符解析操作的,通过逐步识别出各个值、属性、对象,然后识别更复杂的实现定义和应用定义对象,基于这些生成的对象按 3 OSEK OIL配置器研究与应用照OIL标准中的要求对OIL文件进行验证。
这种实现方式复杂,而且在OIL标准修改时需要做大量的修改工作。
文章〔14】使用了XML作为保存应用程序配置的中间文件,然后把XML文件转换成符合OIL格式的文本文件。
这种方法实现简单且比直接生成OIL文件的方式可扩展性强,但它在程序中直接对应用定义中的数据进行验证,而OIL应用定义部分对象较多及关联关系比较复杂,这样导致验证逻辑比较复杂,且限制了它的可扩展性。
通过查阅相关文献发现,国内对OSEK标准的应用研究还处于初级阶段。
而对OSEK OIL标准的研究与应用更少,而OSEK OIL实现语言是OSEK标准实际应用的关键,因此对OSEK OIL配置器的研究有重要意义,将为OSEK标准的实际应用奠定良好基础。
1.3研究内容 本文主要针对OIL配置器进行研究,包括OSEK OIL标准方面的分析、实现与应用等,旨在为设计一套OSEK集成开发环境奠定基础,以推动OSEK标准在国内汽车行业中的应用。
研究的内容主要集中在以下几个方面: 1.OSEK OIL标准内容的分析。
分析了OSEK OIL标准提出的目的、主要解决的问题、在OSEK标准体系中的地位、OIL语言的语法、语义及如何按照OIL语法书写应用程序的描述文件。
2.Trampoline操作系统分析研究。
要进行OIL配置器方面的研究,必须有一个可配置的基础,也就是至少要有OSEK OS、COM、NM中的一个可用。
Trampoline是一个兼容OSEK标准的
开源OSEK系统,它包括了对OSEK OS和COM标准的支持,并且可以在x86/Linux平台上运行,因此可以作为OIL配置器研究的基础。
本文主要使用Trampoline操作
系统作为研究基础,对COM部分在应用示例设计过程中作了简单使用。
通过仔细阅读和深入理解Trampoline操作系统内核源
代码,详细分析了其内核调度、任务管理、中断管理、警告管理的实现机制,及其为了减少内存使用量,对任务管理和中断管理所做的优化。
最后,给出了在Linux平台上通过手写应用程序的OIL描述文件来开发一个Trampoline应用程序的方法,搭建了OIL配置器的研究平台和实验环境。
3.图形化的OSEK OIL配置器开发。
分析了已有OSEK系统配置器的实现原理,采用文章【14】中先把用户配置数据存放到XML中,再将XML转换为OIL格式的配置文件的方式,开发了一个图形化的OIL配置器。
该OIL配置器在文章1141的基础 4 第一章绪论上进一步使用了XML Schema文件对应用定义XML配置数据进行验证,将程序中对应用定义中各对象的验证逻辑通过MSXML解析器调用Schema文件完成,简化了程序逻辑和实现难度。
该OSEK OIL配置器在VC++6.0集成开发环境下用C++语言实现,利用MSⅪVIL4.0 XML解析器对XML文件进行解析、验证与转化。
生成的OIL文件在Trampoline系统平台上用GOIL编译器编译,能够生成正确的应用程序配置文件,然后将生成的应用程序配置文件与应用程序主
代码、库文件、Trampoline操作系统源
代码一起编译连接,对生成的应用程序进行了测试。
4.使用本文设计的OIL配置器设计了一个基于Trampoline OS和COM的车窗升降机控制程序,完成了应用程序的配置,生成了该程序所需的OIL配置文件。
然后使用GOIL编译器将生成的配置文件进行编译转换成对应的C语言配置程序,在生成的程序框架中对各功能模块进行了实现。
测试结果表明,该程序能够实现车窗自动升降的功能,运行效果良好。
1.4
论文结构安排
论文内容将按如下章节编排:
论文第一章主要介绍了OSEK OIL标准相关的背景,指出了进行OSEK OIL配置器研究的意义、国内外研究现状及
论文的研究内容。
论文第二章详细分析了OSEK OIL标准的内容。
分析了其发布的目的、OIL语言的语法及语义、OIL定义的各种系统对象的意义、对象之间的关联和约束关系及如何使用OIL语言来描述OSEK应用程序。
论文第三章主要研究分析了Trampoline OSEK操作系统。
Trampoline是基于OSEK/VDX标准的
开源的可抢占式嵌入式实时操作系统。
通过仔细阅读和深入理解Trampoline操作系统内核源
代码,详细分析了其内核调度、任务管理、中断管理、警告管理的实现机制,及其为了减少内存使用量,对任务管理和中断管理所做的优化。
最后,给出了在Linux平台上通过手写应用程序的OIL描述文件来开发一个Trampoline应用的方法,搭建了OIL配置器研究的平台和实验环境。
论文第四章分析了已有OSEK系统配置器的实现原理,采用文章〔14】中先把用户配置数据存放到XML中,再将XML转换为OIL格式的配置文件的方式,开发了一个图形化的OIL配置器。
该OIL配置器在【14〕的基础上进一步使用了XML Schema文件对应用定义XML配置数据进行验证,将程序中对应用定义中各对象的验证逻辑通过MSXML解析器调用Schema文件完成,简化了程序逻辑和实现难度。
在vC+十6.0 5 OSEK OIL配置器研究与应用集成开发环境下用C++语言对图形化OIL配置器进行了实现,利用MSXML4.0 XML解析器对XML文件进行解析、验证与转化。
然后,对本章开发的OIL配置器进行了测试。
论文第五章,使用本文设计的图形化的OIL配置器设计了一个基于TrampolineOS和COM的车窗升降机控制程序,完成了应用程序的配置,生成了对应的OIL配置文件。
然后使用GOIL编译器将生成的配置文件进行编译转换成对应的c语言配置程序,在生成的程序框架中对各功能模块进行了具体实现。
最后,对本章开发的车窗升降机控制程序进行了测试。
论文第六章,总结了全文的
工作并对进一步研究工作做出了展望。
6 第二章OSEK OIL标准分析 第二章OSEK OIL标准分析 OSEK OIL标准是OSEK标准体系中的一个,提供了一种描述应用程序的标准方法。
本文使用的OIL
文档是最新的OIL2.5版,它对应OSEK操作系统规范2.2.X,OSEK通信规范3.0.x以及OSEK捆绑规范1.5。
2.1 OIL语言 为了能够实现OSEK应用软件高可移植性的目标,OIL标准定义了一种描述OSEK应用程序配置的方法【41。
OIL标准只针对一个ECU,而不是ECU网络。
图2—1显示了一个OSEK应用程序的开发过程。
r一1 口 口 口 图2—1 OSEK应用程序开发过程 Figure2-1 OSEK application development process OIL描述文件可以是手写的,也可以由系统构建工具生成。
生成的OIL文件通 过系统生成器(System Generator,SG)产生应用程序配置对应的C
代码,与应用程序功 能
代码、OSEK操作系统内核、OSEK COM、以及其它库文件等一起,通过编译器 进行编译,然后连接,最后生成可执行文件。
一个应用程序可以有多个OIL文件, 譬如可以有一个包含具体CPU的配置信息项的OIL文件(这些文件由供应商提供)和 包含整个网络的配置信息项的OIL文件(这些文件由OEM提供)。
以源
代码形式提供 7 OSEK OIL配置器研究与应用的子系统被编译进应用程序,其它以库的形式提交的子系统由连接器把它们集成起来,最终生成可执行文件。
OIL语言标准包括对OSEK OS、OSEK COM及OSEK NM的配置,由于使用OIL文件配置OS中各种对象与配置COM和NM系统中各对象的原理相同,本文主要研究OIL语言对OS的配置,使用OIL语言对COM和NM配置的原理与此相同。
2.2 OIL文件基本定义 OIL标准提供了一种配置单个ECU内部的OSEK应用程序的机制,所有的OSEK系统中的各种对象都用OIL语言来描述。
这也就意味着对每个ECU都有一个OIL描述文件。
2.2.1基本概念 OSEK应用程序的OIL描述文件是由一些OIL对象组成的。
CPU对象是这些OIL对象的容器。
OIL为它的对象定义了标准类型。
每种对象都被描述成由一些属性和对其它对象的引用来组成。
OIL为每个对象明确规定了所有的标准属性。
OSEK实现除了能定义标准规定的对象的标准属性外,还能定义附加的与具体实现有关的属性和引用,也就是为标准的OIL对象增加一些属性。
但不允许创建新的OIL对象或改变标准属性的语法。
所有非标准属性(可选属性)都被认为是完全与具体实现有关的,没有标准的解释。
每个OSEK实现可以给出属性的取值范围,如 限制优先级的可能范围等。
以下是对各种OIL对象的描述: CPU:使用OSEK子系统的应用程序所运行的容器。
OS:OSEK操作系统,它运行在CPU上。
在OIL中,OSEK OS没有引用其它 对象。
APPMODE:应用程序的不同操作模式。
APPMODE对象没有定义标准属性。
ISR:OSEK操作系统支持的中断服务例程。
RESOURCE:一个能被任务占有的资源。
TASK:操作系统中的任务。
COUNTER:一个计数器表示软件或硬件的警报滴答源。
EVENT:用来唤醒任务执行的事件。
ALARM:根据计数器的计数,当到达一定值时,触发一个的动作:要么激活一 个任务,要么设置一个事件,要么激活一个警报回调函数。
.