您当前的位置:首页 > 计算机论文>工业技术论文

基于OSEK标准的嵌入式实时操作系统在汽车电子中

2015-07-08 09:18 来源:学术参考网 作者:未知
   论文 关键词:osek嵌入式实时操作体统rx850 汽车 电子
  论文摘要:实时操作系统(rtos)是复杂控制系统中必不可少的一部分,它能按照任务的优先级实现多任务调度,通过信号量、事件标志来实现任务的同步,消息队列和邮箱机制来实现任务之间的通讯,中断机制来实现突发事件的管理。较传统的前后台系统,它具有更高的实时性、稳定性。介绍了当前在国际汽车 工业 界日益占据主导地位的汽车电子开放式平台系统(osek/vdx)规范。介绍了nec汽车电子专用实时操作系统rx850,列举了其他rtos并分析了其优缺点,建立了基于rx850的rtos软件开发平台,实现了汽车发动机控制模块任务的调度,并对rtos的多任务进行了软仿,这对于复杂软件系统开发是非常有实际意义的。
  引言
  随着国内汽车电子产业的不断升级和研发投入不断加大,国内生产的汽车电子简单的ecu已经越来越普及,例如车载音响,仪表,车身控制bcm,动力转向eps等等。越来越多的 企业 将精力投入到比较复杂的控制领域,比如发动机控制,防抱死系统(abs)等,对于这些逻辑复杂、实时性和安全性高的控制任务,传统的前后台系统模式非实时处理的弊端越来越呈现,这就势必需要用到实时操作系统来管理这些任务。
  osek标准是1993年德国汽车工业界联合推出了“汽车电子的开放式系统及接口软件规范”,即osek(opensystemandthecorrespondinginterfacesforautomotiveelectronics)。wWW.133229.COm1994年法国汽车工业界的相似规范vdx(vehicledistributedexecutive)和osek规范合并,从而形成osek/vdx规范体系。当前osek标准已经成为汽车电子软件开发领域中的通用标准,旨在增强软件代码安全性、移植性,减少软件开发周期。
  目前,市场上通用的开源rtos有很多,比如μc/os-ⅱ,freertos,linux-2.6等,但是这些核多半是用于通用领域或者安全性要求不太高的领域,如果将这些移植到汽车电子动力安全控制领域,是不太合时宜的;而且,这些核本身不是基于osek标准,如果引入osek标准,无疑加大了内核移植的难度。nec电子的实时操作系统rx850是一款基于osek标准的汽车级专用rtos,其内核的实时性已经得到第三方的专业测试。它已经被移植到了nec芯片的集成开发环境pmplus和greenhills,客户只需要在ide(integrateddevelopenvironment)中编写脚本文件来配置rtos即可通过编译,使得客户从底层驱动编写到rtos任务调度轻松实现“无缝结合”,大大缩短了rtos移植的开发周期。本文建立了基于nec电子32位车身专用芯片v850/fx3的软件平台,并介绍了如何实现rx850操作系统的配置,以发动机控制模块为控制模型来实现多任务的实时调度,最后通过软仿工具来分析该内核的效率和任务调度的实时性。
  1系统平台介绍
  本系统采用nec电子的32位车身专用芯片v850/fx3系列,v850是nec电子的32位微处理器核,5级流水线控制,内部32个32位寄存器,乘法/除法指令,数据空间支持最大4gb线性寻址能力,代码空间支持64m线性寻址能力,内部1mb的codeflash,60kb的ram空间,32kb的dataflash用作eeprom模拟。
  基于osek标准的rx850实时操作系统符合以下标准:操作系统规范(osekos)、通信规范(osekcom)、 网络 管理规范(oseknm)和osek实现语言(osekoil)。其中osekos是针对汽车应用特点而专门制定的一个小型rtos规范,着重以下几个方面:(1)可移植性,所有api都是标准化的并且在功能上都有明确的定义;(2)可扩展性,osekos旨在通用于任何类型的ecu,因此一方面系统要高度的模块化,另一方面又要能进行灵活的配置;(3)汽车应用的特定需求,诸如可靠性、实用性和代价敏感性等。相应的,osekos静态配置可以通过os2ekoil语言实现,用户在系统生成时静态制定任务的个数、需要的资源和系统服务。osekcom为通信网络中的数据交换提供了标准的接口和协议。oseknm为监视网络的流量提供了一组标准的功能函数,以保证网络的安全性和可靠性。
  2rx850内核配置
  由于rx850已经被嵌入到ide,因此用户直接编写内核脚本文件即可,下面介绍如何来配置内核。
  1.系统时钟设置
  clkhdrinttm0eq0//选定timerm为时间片中断源
  2.堆栈设置
  rx850的堆栈分为系统堆栈和任务堆栈,
  pool0功能:系统基本表信息、准备队列、每个管理块、任务堆栈、中断句柄堆栈(系统堆栈)、可变长度内存、不变长度内存。
  pool1功能:任务堆栈、中断句柄堆栈(系统堆栈)、可变长度内存、不变长度内存。
  pool0和pool1都可以作为任务堆栈,即使没有pool1也可以。配置如下:
  intstk0x400:pool0//系统堆栈大小为0x400
  tsktsk1_tsk10x050:pool10x06tts_dmt0x00ei//tsk_id_1ms任务堆栈大小0x50
  3.允许最大优先级任务数
  maxpri0x1f//允许最大优先级任务数为0x1f
  4.信号量设置
  semsem_task10x00//设置了信号量sem_task1为0
  semsem_task20x00//设置了信号量sem_task2为0
  5.事件标志设置
  flgflg_task1//设置了事件标志flg_task1
  flgflg_task2//设置了事件标志flg_task2
  5.邮箱设置
  mbxid_task1ta_mpri//设置task1的邮箱
  mbxid_task2ta_mpri//设置task2的邮箱
  6.中断设置
  rx850的中断分为直接中断和间接中断两种,直接中断不受rx850制约的中断句柄,理论上接近硬件中断的速度,其缺点是需要用户自己写中断处理句柄,包括:(1).寄存器压栈;(2).换向,跳转到中断句柄的开始;(3).调用系统命令;(4).返回到调度;间接中断的中断句柄在rx850的中断预处理后才被启动,优点是简化了句柄处理过程,缺点是由于rx850的预处理降低了速度,其处理过程如下:
  
           图1直接中断调度图
  间接中断配置如下:
  inthdrintad_ad_interrupt//ad间接中断句柄配置
  inthdrintc1rec_can_ch1rxint//can间接中断句柄配置
  
          图2间接中断调度图
7.固定/可变内存池设置
  当系统需要交换较大的数据时,此时任务堆栈是不够用的,需要开辟一段内存来使用。rx850支持两种方式的内存配置,固定内存池和可变内存池。固定内存池由用户自定义内存池的大小,可变内存池根据实际应用系统动态的定义所需内存大小,配置如下:

  mpfmpf_id_mbx0x08:pool150
  //固定内存以0x08字节为单位排列,大小为50*0x08;
  mplmpl_id_task10x08:pool1
  //可变内存0x08字节为单位排列
  8.系统周期循环中断设置
  cyccyc_int_timer_cyc_inttimertcy_off10
  //系统周期循环中断时间为10个时间片
  以上完成了操作系统的配置,然后通过nec的ide即可生成操作系统的.s和.h文件,将此两个文件包含在工程文件中即可。
  3rx850软仿及结论
  通过以上配置,选择发动机控制模块为对象,下面对rx850进行软仿。nec 电子 提供专门的软仿工具az,在ide中打开az,运行程序后可以看到如下:
  
          图3任务调度仿真图
  
         图4任务对cpu的占用率
  也可以通过rd850来实时检测各任务的状态如下:
  
          图5任务运行状态
  通过上图可以很方便的看到每个任务的实时调度情况和cpu内核的使用效率。目前cpu的空闲率为94%,很多任务实际上没有被调用,用户可以根据实际情况将更多的功能模块放在api任务中来运行。软仿只能提供模拟的仿真,如果用户需要更精确的trace工具,则需要用硬仿来实现。
  4结束语
  对于比较复杂的控制系统,rtos是必不可少的,建立以上开发平台,使得系统工程师可以专注于系统功能建模仿真,然后将功能函数与该平台的api任务调度结合,即可完成片上测试。实践证明,这种开发模式大大提高了整个项目的进度。
相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页