基于OSEK/VDX标准的Trampoline操作系统研究
摘要 介绍了基于OSEK/VDX标准的开源嵌入式实时操作系统Trampoline,详细分析了该操作系统内核调度、任务管理和中断管理的实现机制,并指出了Trampoline为实现高可移植性、小内存的设计目标时对0SEK任务管理和中断管理所作的优化。最后,给出了在Linux/x86平台上使用Trampoline开发应用程序的方法。
关键词 OSEK/VDX Trampoline 任务调度 任务管理 中断管理
1 OSEK操作系统研究现状及相关工作
OSEK/VDX标准产生以后,很多操作系统供应商对其进行研究,并实现了商业化,例如国外Elektrobit Auto―motive、 Accelerated Techno1ogy、 dSPACE、 ETAS、Metrowerks、Hitex、iSYSTEM、Lauterbach Datentechnik、Vector、WindRiver等公司。这些公司的OSEK操作系统产品都通过了OSEK官方认证,并提供了配套的集成开发环境来方便应用程序的开发。
国内依据0SEK/VDX开发的操作系统内核,大部分参考了μC/OS操作系统内核的设计或者是在它的基础上修改的,也有在Linux的基础上修改的。国内OSEK操作系统配套的集成开发环境很少,目前有浙江大学开发的SmartIDE、清华大学开发的清华车用集成开发环境等,其他的基本上没有配套的集成开发环境。因此目前国内对OSEK标准的研究和应用还处于初级阶段。
由于购买商业化的OSEK需要大量资金,并且很多时候不能获取源代码,因此希望有一些开源OSEK操作系统来满足研究的需要。现有的OSEK操作系统的开源实现,有PICosl8,一个OSEK/VDX OS 2.1r1的部分实现。它专门为PICl8XXX系列微控制器设计,针对该系列微控制器硬件,特别是在内存使用方面作了高度优化。但是,它的定制能力很差,并且移植到其他平台时代码修改量很大。另外还有openOSEK项目,但是该项目一直没有开发出正式发布的版本。
Trampoline主要是由法国通信研究所(IRCCyN)的实时系统组负责开发的。它的源代码是开放的,能够兼容OSEK/VDX OS 2.2.3标准(当前最新版本为1.1)。它目前还没有通过OSEK/VDX的官方认证,因此只能说它兼容OSEK标准,而不能说它是通过OSEK认证的操作系统。Trampoline目前能够在4个平台上运行,分别是POSIX(包括Linux、Unix、Mac OS等)系列操作系统平台、Infineon C166平台、Freescale S12x平台、Darwin/PowerPC平台,其中在POSIX系列操作系统上运行时需要libpcl库的支持。因此,即使没有微控制器,也可以在常见的Linux/x86平台上使用Trampoline。
要对整个OSEK/VDX标准进行研究,对OSEK操作系统的研究是基础。只有有了一个可以使用的OSEK操作系统,才能在它的基础上进行COM、NM及OIL标准的研究,才能进行OSEK操作系统应用程序开发、汽车电子集成开发环境的开发等方面的研究。Trampoline能够在Linux平台上运行,并且有一个可用的GOIL OIL文件解析器,可以作为进行OSEK/VDX标准研究的基础。
2 OSEK OS及Trampoline分析
OSEK操作系统是一种单处理器操作系统,主要用于汽车电子的分布电子控制单元ECU(Electronic ControlUnit)上。
OSEK操作系统对不同版本OSEK操作系统提供的应用程序接口进行了标准化,这样,为一个OSEK操作系统设计的应用程序不用修改就可以移植到其他OSEK操作系统上运行。
为了使OSEK操作系统能够在有不同计算能力(不同CPU、不同存储容量)的ECU上运行,OSEK定义了4个符合类,分别是BCCl、ECCl、BCC2、ECC2。每一个符合类包括一组操作系统特性,代表一类应用程序的需求,也包含了这些操作系统特性运行所需要的硬件需求。使用符合类的概念既方便用户根据自己的需求及自己的硬件条件来选择符合自己需要的操作系统特性集合,也使得操作系统供应商可以先提供一部分操作系统,也就是先提供对部分符合类的支持,然后再增加更多操作系统特性,支持其他符合类,从而方便了操作系统的开发。
OSEK操作系统是静态配置的,而不是动态生成的,用户在系统生成阶段能够使用OIL语言对系统进行配置,指定系统里使用多少个任务、使用哪些资源、需要调用哪些系统服务等。通过这种方式,用户可以选择需要的部分,裁剪掉不需要的,以减少不必要的系统资源。另外,由于系统是静态生成的,既减少了动态生成系统对象的开销,减少系统内存的使用,又可以使系统运行时的行为可预知,提高系统的可靠性和确定性。
由于OSEK操作系统是静态生成的,系统运行时的很多信息在系统生成阶段就可以确定,于是它提供的任务间同步和通信方法比其他常用的嵌入式实时操作系统要少。它用OSEK PCP(Priority Ceiling Protoco1)协议来同步资源的并发访问,从而提供了任务与ISR之间及ISR与ISR之间共享资源的机制。另外,OSEK操作系统还提供了完善的错误处理机制,提高了系统的可靠性和容错能力。
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码