随着汽车电子向着智能化、标准化、网络化的方向发展,软件开发在产品开发中所占的比重不断增加,采用平台化的设计方法降低成本、缩短开发时间、充分利用已有资源成为一种必然趋势。
目前,主要的汽车电子软件的开发标准有AUTOSAR、MISRA和OSEK。浙江大学CCNT实验室根据已有的标准和平台,开发出了SMARTCAR汽车电子软件平台,包括了智能汽车平台和汽车电子软件开发平台。
浙江大学副校长吴朝晖老师同时也是CCNT的学术带头人,他介绍说,包括面向智能汽车的自适应中间件平台ScudWare和在此基础上开发的一个智能汽车空间原型系统,是由车载处理中心、各种上下文采集设备、以及一系列远程Web服务器组成的一个计算环境,主要目的是根据用户设定或者当前环境特性自动提供适当的服务,减少用户主动发出服务请求的次数,在车内形成自发的、定制的服务空间,为用户提供安全、舒适的行车环境。汽车电子软件开发平台SmartOSEK主要包括高可靠强实时的嵌入式操作系统内核SmartOSEK OS、支持服务的板级支持体系结构SmartOSEK BSS以及支持基于模型设计的图形化开发环境SmartOSEK IDE几大部分。重点解决复杂汽车电子应用对操作系统的需求问题,面向汽车领域的建模描述问题,车控软件的有效性验证问题,开发过程中的文档和代码的自动生成问题,通过基于模型的软件开发思想改变嵌入式系统的传统开发方法,最终提高汽车电子控制系统产品开发的效率和产品质量,降低开发成本。
SmartOSEK的组成结构
SmartOSEK标准重点借鉴OSEK OS、OSEK OIL、OSEK COM、OSEK NM标准。AUTOSAR标准,目前来说,主要借鉴了其Architecture的CommunicaTIon Stack、RTE、System Services、Peripherals标准以及MethodologyAndTools、ApplicaTIon InteRFaces中相关的部分。MISRA标准主要是借鉴其针对汽车电子安全代码的127条规则。
嵌入式实时操作系统SmartOSEK OS
SmartOSEK由操作系统、板级支持、开发工具三大部分组成,其操作系统部分SmartOSEK OS是严格按照OSEK/VDX规范实现的,而且是国内第一个通过OSEK官方组织认证的符合OSEK规范的嵌入式实时操作系统。
SmartOSEK OS严格实现了OSEK标准所规定的内核模块,具体包括任务管理模块、资源管理模块、事件机制模块、定时器模块、中断处理模块、错误处理模块、内部通信模块等。
SmartOSEK内核模块需要底层模块的支撑,包括体系相关模块、开发调试模块、硬件驱动模块。体系相关模块实现体系密切相关部分,如上下文切换等;开发调试模块针对特定的平台实现对应用的监控跟踪调试;硬件驱动模块包括各研究外设的驱动。SmartOSEK OS的应用开发主要面向汽车电子控制系统,包括发动机控制、变速箱控制、通信系统控制等。图1是SmartOSEK OS的架构图。
SmartOSEK OS可满足严格的片内存储器要求,内核在4KB~12KB之间(32位PowerPC平台);主频为40M的MPC555上的SmartOSEK OS的上下文切换时间为微秒级;最大中断屏蔽时间为21.72μs;最高可承受运行40kHz的中断。板级支持SmartOSEK BSS
板级支持SmartOSEK BSS是一个开放、通用的平台,屏蔽具体硬件细节,通过API向上层操作系统和应用程序提供服务,实现操作系统和应用程序与硬件无关。对于新的硬件平台,只要SmartOSEK BSS能够实现,那么上层软件就可以方便的移植。同时SmartOSEK BSS也应该能够在不同的开发平台上使用,虽然它的具体实现可能会有不同,但接口是统一的。
参照AUTOSAR标准中对软件系统的划分,板级支撑平台采用层次化结构设计,分为微控制器抽象层和ECU抽象层,同时将整个板级支撑平台按照功能分为四个模块。
MCU抽象层包含各种驱动,按照功能特点分为四部分:IO驱动、通讯驱动、存储驱动和微控制器驱动。它们是一个个软件模块,用于直接访问微控制器内的外设或者是内存映射到微控制器的外部设备。MCU抽象层的结构如图2所示。
ECU抽象层包含那些通过网络方式连接到微控制器的外部设备的驱动。ECU抽象层也分为四个部分:IO硬件抽象、通讯硬件抽象、存储硬件抽象、板上设备抽象。
集成开发环境SmartOSEK IDE
SmartOSEK IDE是面向汽车电子应用、支持SmartOSEK操作系统的集成开发环境。它充分借鉴了基于模型驱动的设计思想,围绕汽车电子软件开发领域V字型流程,提供UML需求建模、SmartC算法建模、状态图模型验证、系统可调度性分析、自动代码生成、自动文档生成等一整套开发工具链。SmartOSEK IDE的总体结构见图3。
按照模型驱动的开发流程,首先是UML需求建模和结构建模,并对UML进行模型验证,以确定设计是否满足需求。SmartOSEK IDE提供模型转换工具,直接把UML模型转换成SmartC模型,在SmartC模型上进行具体算法建模。在模型建立完成后,可以对模型进行可调度性分析,以确保该模型满足可调度性的要求。最后可以自动生成针对目标平台的符合MISRA标准的高质量C代码以及word格式的文档。
SmartC是浙江大学CCNT实验室嵌入式系统工程中心(ESE)自主开发的面向汽车电子领域的系统描述语言,和UML互为补充。SmartC的核心是其层次化建模方法,从上到下将系统的设计分为系统层、构件层、任务层、子任务层、组件层五个层次。系统层关注的是整个系统的结构和需求,构件层关注的是系统的功能需求和软件部署,任务层次关注的是系统的实现,组件层关注控制算法的实现。
SmartOSEK IDE支持从模型自动生成针对SmartOSEK OS的应用程序C代码。生成的C代码可以和SmartOSEK OS一起直接编译运行的,不需要再手动修改。SmartOSEK IDE为用户手动在模型中编写的代码提供符合MISRA标准代码检查器。
自动生成技术是提高软件开发效率的重要手段,SmartOSEK IDE自动生成工具包括程序代码的自动生成和设计文档的自动生成。程序代码的自动生成根据系统模型的设计和系统的配置文件,快速将预制的程序代码组合成为实际的应用系统,能自动完成系统框架。预制的代码包括各种复用的构件、各种驱动以及操作系统等代码,预制代码越丰富,代码自动生成的效率就越高。设计文档的自动生成是指根据设计的系统模型自动生成相关的设计文档。自动生成技术能消除传统软件开发方法各个阶段之间的壁垒,减少问题并提高效率。自动生成技术另外一个很大的优点是能保持生成源与生成目标的同步,即模型和代码能同步更新,非常好的保持系统的一致性。
针对不同的硬件平台,SmartOSEK IDE提供了配置工具在自动生成代码之前进行配置和选择,配置后,能自动生成适应不同平台上运行的代码。自动生成的代码框架是提前针对不同平台预制好的,已经作过相应的优化。