嵌入式开发汽车电子OSEK配置器怎样来设计

发布者:Qinghua2022最新更新时间:2025-08-19 来源: elecfans关键字:嵌入式开发  汽车电子 手机看文章 扫描二维码
随时随地手机看文章

随着汽车工业的快速发展,汽车对控制、通信、网络管理等方面的要求越来越高,基于32位微控制器的硬件平台、基于嵌入式实时操作系统的软件平台和基于CAN总线的网络通信平台逐渐成为当今汽车电子业的主流。

1 OSEK/VDX规范简介

在嵌入式实时操作系统方面,为了满足日益庞大、复杂的汽车电子控制软件的开发需要,实现应用软件的可移植性和不同厂商控制模块间的可兼容性,1993年德国汽车工业界联合推出了汽车电子的开放式系统及接口——OSEK/VDX规范(以下简称“OSEK规范”),旨在为汽车上的分布控制单元提供一个开放结构的工业标准。OSEK规范从实时操作系统(RTOS)、软件接口、通信和网络管理等方面对汽车电子控制软件开发平台作了较为全面的定义与规定。尽管该规范还处在不断完善中,但它所提出的一整套解决方案将是未来汽车电子软件开发的发展方向。
 
为了达到OSEK软件可移植的目标,OSEK规范中定义了配置使用OSEK应用程序的方法——通用实现语言OIL。OSEK配置器就是使用图形化的用户接口,根据用户需求配置OIL文件,并最终生成OSEK实时操作系统初始化代码的工具。它是开发符合OSEK规范的实时操作系统的重要组成部分。

2 OSEK配置器的主要功能

OSEK应用程序的开发流程如图1所示。用户通过OSEK配置器根据软硬件的需求,对操作系统的属性和所有系统对象进行静态配置。配置完成后,OSEK配置器生成符合OSEK规范的OIL配置文件,并进一步生成与操作系统相关的C代码和头文件,以提供OSEK实时操作系统初始化时必备的系统参数。为保证软件的兼容性,OSEK配置器还能够从外部直接读取符合OSEK规范的OIL文件,完成生成OS静态系统文件的过程。
 

嵌入式开发汽车电子OSEK配置器怎样来设计

用户完成应用程序代码编写和OIL文件配置后,OSEK配置器所产生的代码、操作系统的部分内核和应用程序一起交叉编译,而其他操作系统内核代码作为一个库,被链接器整合在一起。本文主要研究通过OSEK配置器生成符合OSEK规范的OIL配置文件及静态系统文件的过程(如图1中虚线部分所示)。
 

3 OSEK配置器的实现

3.1 图形用户接口GUI的实现
 
OSEK应用程序的OIL语言描述包含一组OIL对象描述,分别是CPU、OS(操作系统)、APPMODE(应用程序模式)、ISR(中断服务)、RESOURCE(资源)、TASK(任务)、COUNTER(计数器)、EVENT(事件)、ALarm(警报)、COM(通信子系统)、MESSAGE(消息)、IPDU(外部通信)和NM(网络管理)。其中,CPU是其余OIL对象的容器。OIL为它的对象定义了标准类型,每一个对象都可以用一些属性和参数来描述。
 
对于不同的OSEK实现,生成OIL配置文件的方法是不同的。由于用户自己编写OIL文件具有一定的复杂性,因此,在集成开发环境中带有一个上下文相关帮助的、可视的图形用户接口GUI是非常必要的。在集成开发环境中,一个包含GUI的OSEK配置器需要包含以下组件:
 
◇一张遵循Windows Explorer格式的OSEK对象清单,用户可以根据需要添加和删除DIL对象;
 
◇一个图表,用于显示每个对象的属性(包括标准属性和与实现有关的属性),用户可更改对象的属性并且实时更新OIL文件;
 
◇一个用于记录和显示的窗口。
 
集成开发环境的OSEK配置器工作界面如图2所示,其数据的管理和显示采用XML技术来实现。

嵌入式开发汽车电子OSEK配置器怎样来设计


 
XML以一种开放的自我描述方式定义了数据结构,在描述数据内容的同时能突出对结构的描述,从而体现出数据之间的关系。它相当于一个容器,可用来存储OSEK规范中OIL定义的各个对象。对每个OIL对象来说,其属性和子属性都包含不同的数据结构,可以通过XML树型结构方便地表示出来;而对于同一类对象又包含相同的属性和子属性,可用相同的XML模板来表示。
 
由于XML技术可以很方便地存储、描述和管理结构化的数据,并且有效地将数据和数据的显示相分离,因此,在OSEK配置器中采用XML技术来实现OIL文件图形用户接口的配置,是非常方便和高效的。

3.2 利用XML技术配置OIL对象
 
基于XML的OSEK配置器,将OIL文件定义的属性存放在初始化的XML模板文件中,并指定其默认值。当用户添加、删除OIL对象或者修改对象的属性和参数时,可通过KML解析器实现用户配置界面与XML文件的同步。其过程如图3中虚线部分所示。

嵌入式开发汽车电子OSEK配置器怎样来设计


 
例如,用户在配置一个OIL对象ALarm时,需要指定其3个属性,分别是警报依附计时器COUNTER、警报动作ACTION以及是否自动启动AU-TOSTART。其中,ACTION和AU-TOSTART又包含各自的子属性,使用XML技术可以很方便地管理和修改这些数据。
 
通过GUI配置一个报警器的属性如下:警报依附计时器counterA,采用自动启动方式,且其初次响应时间和周期响应时间分别为30ms和20 ms。OS-EK配置器通过XML解析器将这些属性值读取出来,并保存在XML源文件alarm.xml中。以下是此XML文件的源代码;
 

嵌入式开发汽车电子OSEK配置器怎样来设计



3.3 利用XSLT技术生成OIL文件
 
用户配置的OIL信息通过GUI保存为XML文件后,利用XSLT技术生成符合OSEK规范的OIL配置文件。XSLT文档本身是一个良掏的XML文档,它被链接到需要转换的XML文档上,通过XSLT处理器实现对XML文档的解析和转换过程。XSLT转换的过程如图4中虚线部分所示。

嵌入式开发汽车电子OSEK配置器怎样来设计



例如3.2节中保存ALARM配置信息的文件alarm.xml,通过定义XSL样式表文件xml20il.xsl将其转换为标准的OIL文件。为了保证XSL文件的通用性,对输入XML文档每个层次的节点都设计一个框架模板tem-plate,即为OIL对象的每个属性和部分子属性定义框架模板。这样,当OIL对象增加和删除时,XSL文件都可以快速地完成转换而不需要做任何修改。使用Microsoftmsxml 4.o作为:XSLT处理器,定义转换的输出方式为文本格式。
 
转换3.2节中。KML文件的部分关键源代码如下:

嵌入式开发汽车电子OSEK配置器怎样来设计


 
3.4 读取OIL配置文件和生成代码
 
为了实现OIL文件的可移植性和可重用性,OSEK配置器还需要实现从外部直接读取OIL文件(可由用户手动编写或其他OSEK实现生成),并通过GUI显示和修改属性配置的功能。这个过程需要一个OIL语言解析器,通过解析器将OIL文件转换成XML文件提供给GUI,并且生成与操作系统相关的C代码和头文件。本组件通过LEX和YACC语言开发OIL语言解析器。

3.4.1 利用ALEX和AYAGO构造解析器
 
Parser Generator是Windows环境下使用LEX和YACC语言开发编译器的集成开发工具,包含了编译程序构造工具ALEX和AYACC。ALEX和AYACC不仅可将LEX和YACC源程序转换成C语言词法和语法分析程序,还可以根据用户需要产生C++和Java代码的词法和语法分析程序。
 
OIL语言解析器的解析过程包括词法分析、语法分析、错误处理和目标代码的生成。首先根据OIL文件规范中的对象和属性值、语法规则编写LEX和YACC源文件,通过ALEX和AYACC自动生成以C++语言为代码的词法分析类OilLexer和语法分析类OilParser,并且重载和添加一砦类成员函数;然后将这两个类加入到VC工程中,实现程序的错误处理和自动代码生成部分,从而开发出OIL语言解析器。整个解析器设计原理如图5所示。
 

嵌入式开发汽车电子OSEK配置器怎样来设计


 
3.4.2 词法分析类和语法分析类的设计
 
在词法分析阶段,扫描程序将OIL文件中的字符序列分解,去掉空格、换行等自字符,并把识别出来的各个单词符号收集到记号(token)单元中。若在分析过程中发现词法错误,则转入错误处理程序。ALEX的输入规则文档Lexer.l包括以下3部分:
 
声明部分。包含所需的头文件及词法分析类的定义。

◆规则部分。定义正则表达式和OIL对象的关键字,然后添加对相应模式处理的C++语言源代码,最后将token送给语法分析类OiiParser。例如:
 

嵌入式开发汽车电子OSEK配置器怎样来设计



◆程序部分。设计OIL扫描器时无需其他额外功能,因此为空。
 
在语法分析阶段,语法分析程序从词法分析类中获取记号形式的源代码,并完成定义OIL语言结构的语法分析。AYACC输入规格文档Parser.y也包括3部分:声明部分、规则部分和程序部分。在声明部分,包含OilParser类所需的头文件以及声明从词法分析器返回的token记号。规则部分分析OIL文件的语法规则。OIL文件的语法遵循Backus-Naur范式(BNF),对于每个OIL对象属性的定义,其OIL实现类似于一个C结构定义。一个OIL文件由3个模块组成:版本、执行定义和应用程序定义。用BNF范式可表示为:
 

嵌入式开发汽车电子OSEK配置器怎样来设计



执行定义包含了一个OSEK实现的所有属性,这些属性的数据类型和取值范围可能是受限制的。因此在语义规则部分设置错误处理语句,对OIL对象属性的数据类型和取值范围进行检查。ALEX和AYACC的特性,可使错误检测简单、直观地实现,并且很容易和错误处理类集成,这对于从外部读取OIL文件时进行语义判断,保证OSEK配置器的兼容性有着重要的意义。
 
应用程序定义包含了一系列对象以及这些对象属性的赋值,除了OS、COM和NM对象外,应用程序可以定义多个同一类型的对象。根据应用程序定义规则,完成形式文法规则以及对每条规则进行语义处理的C++语句。在处理语句中,根据GUI部分定义的XMI.模板格式(如图4中的MPC.xml),将得到的对象及其属性值一一对应到XML的树型结构中,从而完成OIL文件转换为XML文件的过程。同样,在处理语句中,根据操作系统中定义的接口将OIL对象及其属性值提取出来,生成符合OSEK实时操作系统的API函数和数据结构,放在C代码和头文件中,从而完成整个代码生成的过程。

4 结论
 
OSEK配置器的开发是OSEK实时操作系统中的重要组成部分。在开发过程中,利用XML技术方便管理和存储数据的功能,实现了从可视化的GUI生成OIL文件的过程;利用OIL语言解析器的高教性和强大的出错处理功能,实现了GUI从外部读取OIL文件及代码生成的过程,从而保证了OIL文件的可移植性、可扩展性和可重用性。此组件在集成开发环境中运行稳定,这在开发具有自主知识产权的OSEK实时操作系统中具有重要的意义。


关键字:嵌入式开发  汽车电子 引用地址:嵌入式开发汽车电子OSEK配置器怎样来设计

上一篇:电动汽车相比燃油车在跑高速时要相对麻烦一些
下一篇:为什么纯电动汽车的整车结构会相对简单整洁呢

推荐阅读最新更新时间:2026-03-19 18:46

汽车电子OSEK配置的设计与实现
随着汽车工业的快速发展,汽车对控制、通信、网络管理等方面的要求越来越高,基于32位微控制器的硬件平台、基于嵌入式实时操作系统的 软件平台 和基于CAN总线的网络通信平台逐渐成为当今 汽车电子 业的主流。 1 OSEK /VDX规范简介 在嵌入式实时操作系统方面,为了满足日益庞大、复杂的汽车电子控制软件的开发需要,实现应用软件的可移植性和不同厂商控制模块间的可兼容性,1993年德国汽车工业界联合推出了汽车电子的开放式系统及接口——OSEK/VDX规范(以下简称“OSEK规范”),旨在为汽车上的分布控制单元提供一个开放结构的工业标准。OSEK规范从实时操作系统(RTOS)、软件接口、通信和网络管理等方面对汽车电子控制软件开发平
[汽车电子]
<font color='red'>汽车电子</font><font color='red'>OSEK</font><font color='red'>配置</font><font color='red'>器</font>的设计与实现
汽车电子OSEK配置的设计与实现
   摘要 介绍在集成开发环境中,通过OIL语言配置OSEK实时操作系统厦应用程序的过程,包括使用图形化的用户界面进行读取、编辑、保存OIL文件以及自动生成代码等功能的实现;利用XML技术和OIL语言解析器保证了OIL文件的可移植性、可扩展性和可重用性。   随着汽车工业的快速发展,汽车对控制、通信、网络管理等方面的要求越来越高,基于32位微控制器的硬件平台、基于嵌入式实时操作系统的软件平台和基于CAN总线的网络通信平台逐渐成为当今汽车电子业的主流。    1 OSEK/VDX规范简介    在嵌入式实时操作系统方面,为了满足日益庞大、复杂的汽车电子控制软件的开发需要,实现应用软件的可移植性和不同厂商控制模块间的可兼容性,1
[汽车电子]
SiFive车规级RISC-V IP获IAR最新版嵌入式开发工具全面支持,加速汽车电子创新
中国上海,2025年12月15日 — 全球领先的嵌入式系统开发软件解决方案供应商IAR与RISC-V计算领域的领导者SiFive今日共同宣布, IAR已实现对SiFive车规级RISC-V IP的全面工具链支持 。随着最新版Embedded Workbench for RISC-V v3.40.2的发布,IAR在延续对E6-A系列支持的基础上,进一步新增了对SiFive Essential™ E7-A与S7-A系列产品的支持,从而为汽车电子开发者提供更完整、可靠的一站式商业级开发解决方案,助力客户加速产品上市进程。 SiFive车规级IP:为性能与安全而生的汽车“核心” SiFive Automotive系列车规RI
[汽车电子]
SiFive车规级RISC-V IP获IAR最新版<font color='red'>嵌入式开发</font>工具全面支持,加速<font color='red'>汽车电子</font>创新
Linux嵌入式开发必备命令速查表
在中, 系统几乎成为必备的开发环境。不管你是在做 、Raspberry 、还是基于 的板子,熟练掌握 Linux 命令不仅能加快开发效率,还能让你在调试、交叉编译、文件管理等环节轻松应对各种问题。今天,我们整理了一份Linux 下开发必备命令速查表,让你一篇文章就能快速查阅。 一、文件与目录管理命令 在嵌入式开发中,你经常需要操作源码、Makefile、库文件等,文件管理命令必不可少。 命令 功能 示例 备注 ls 列出目录内容 ls-l/home/user/project -l 显示详细信息 cd 切换目录 cd/home/user/project 相对路径或绝
[嵌入式]
采用xmake与Zig实现优雅的嵌入式开发
在软件开发中,构建工具的稳定性和可维护性对项目的长期成功至关重要。项目通常需要针对不同硬件平台进行交叉编译,每个平台都依赖于特定的工具链,使得环境配置复杂化。随着LLVM工具链的普及,在嵌入式领域采用现代化构建工具链已成为提升开发效率的关键趋势。 LLVM在嵌入式领域有两类应用方案:一是由芯片厂商提供的平台专用集成工具链(如clang、LLVMforARM等),但此类方案存在厂商依赖性;二是采用Zig语言作为编译前端,其原生的跨平台编译能力使其成为嵌入式领域理想的交叉编译工具链选择。 本文提出一种面向通用嵌入式系统开发的解决方案:将xmake作为主构建工具,Zig作为交叉编译工具链使用。这种组合既规避了单一工具链的局限性,又保留了
[嵌入式]
采用xmake与Zig实现优雅的<font color='red'>嵌入式开发</font>
基于霸道秉火的STM32F103ZET6嵌入式开发之------基于定时TIM3的PWM实验
1:PWM脉冲宽度调制 STM32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定 时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达 4路的 PWM 输出,这样,STM32 最多可以同时产生 30 路 PWM 输出! 2;本次实验只需将上个实验的time.c卤藕做修改即可 1)新增void TIM3_PWM_Init(u16 arr,u16 psc) 函数; a,TIM3时钟使能 b,使能GPIO端口和复用 c,端口映射TIM3----PB5 1 GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,E
[单片机]
IAR推动嵌入式开发:云就绪、可扩展的CI/CD和可持续自动化
中国上海,2025年4月7日 — 全球领先的嵌入式系统开发软件解决方案供应商IAR正式发布全新云就绪平台,为嵌入式开发团队提供企业级的可扩展性、安全性和自动化能力 。该平台于在德国纽伦堡举办的embedded world 2025展会上正式亮相,标志着将现代DevSecOps工作流集成到嵌入式软件开发中已迈出了重要一步。 实现嵌入式系统的可扩展云端CI/CD 随着嵌入式系统的不断演进,开发团队在集成现代CI/CD流程的同时,面临着日益增长的可扩展性、安全性与合规性要求。然而,传统嵌入式软件开发方式受制于固定的许可证模式和复杂的构建环境,限制了敏捷自动化工作流的应用。 IAR的全新云就绪平台解决了这些挑战,采用基于容量
[嵌入式]
IAR推动<font color='red'>嵌入式开发</font>:云就绪、可扩展的CI/CD和可持续自动化
嵌入式开发学习(10)<汇编写启动代码之设置栈、调用c语言、开关看门狗和开关iCache>
C语言运行时需要和栈的意义: “C语言运行时(runtime)”需要一定的条件,这些条件由汇编来提供。C语言运行时主要是需要栈 C语言与栈的关系:C语言中的局部变量都是用栈来实现的。如果我们汇编部分没有给C部分预先设置合理合法的栈地址,那么C代码中定义的局部变量就会落空,整个程序就死掉了。 我们平时在编写单片机程序(譬如51单片机)或者编写应用程序时并没有去设置栈,但是C程序还是可以运行的。原因是:在单片机中由硬件初始化时提供了一个默认可用的栈,在应用程序中我们编写的C程序其实并不是全部,编译器(gcc)在链接的时候会帮我们自动添加一个头,这个头就是一段引导我们的C程序能够执行的一段汇编实现的代码,这个代码中就帮我们的C程序设
[单片机]
<font color='red'>嵌入式开发</font>学习(10)<汇编写启动代码之设置栈、调用c语言、开关看门狗和开关iCache>
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved