随着汽车产品日渐趋向电子化,人们对各类先进的安全系统、高级驾驶辅助系统的接受程度日益提升。而原本昂贵的盲点检测、自动紧急制动等功能的成本下滑,使其快速获得了市场青睐。富士奇美拉研究所(Fuji Chimera Research Institute)的预测数据显示,全球汽车ECU市场正以6.0%左右的年均复合增速增长,2027年的市场规模将达到980亿美元以上。
一、汽车ECU软件
汽车ECU(Electronic Control Unit)又称“行车大脑”,其功能可以简单描述为“采集传感器的信号、与其他控制器保持通讯、控制相应的执行器”(如图1所示),是软件与硬件的复杂组合。其硬件从范围上看包括发动机控制器,电机控制器,整车控制器等。
▲图1 汽车电子控制系统
从软件方面来看,汽车ECU软件可分为三个部分:应用层软件(Application Software,ASW),底层软件(Basic Software,BSW)和引导程序(Bootloader)。
1、应用层软件
应用层软件通常由一定数量的“模块”或“单元”组成,可以称之为“软件组件”(Software Component,SWC)。软件组件不但是应用层软件的核心,也是底层软件实现的载体,将若干个软件组件组合到一起,发挥各自的功能,便可构成较为完整的应用层软件。软件组件之间通过端口进行交互,每个软件组件包含若干个封装了控制算法的运行实体(Runnable Enity),可由运行时环境事件(Runtime Environment Event,RTE Event)触发,通过复杂的控制逻辑算法实现不同驾驶工况和应用场景下的汽车精准控制。
2、底层软件
底层软件在目前全球范围内普遍认可的汽车嵌入式软件架构AUTOSAR(AUTomotive Open System ARchitecture)下被抽象划分为3个层面,分别是服务层(Service Layer)、ECU抽象层(ECU Abstraction Layer)、微控制器抽象层(Microcontroller Abstraction Layer)。从功能来看:
服务层:诊断,内存管理,操作系统,通信,ECU管理;
ECU抽象层:ECU板上外部设备的驱动,内部设备与外部设备的接口(I/O);
微控制器抽象层:MCU(Microcontroller Unit,MCU)中内部外设的驱动,使用MCU内存映射的外部设备的驱动。
▲图2 AUTOSAR架构下的三者关系
3、引导程序
Bootloader, 即启动引导加载程序,是系统在上电或复位后运行的第一段程序代码,主要功能是将系统的软硬件环境调到一个合适的状态,为最终调用应用程序、进入软件做好准备。具体来讲,Bootloader是底层硬件与上层应用软件之间的中间接口,在汽车ECU中,引导加载程序是一个独立的程序,在上电时开始执行。它将通过诊断通信链路将应用软件下载到ECU上。下载功能对于在开发、生产和服务期间重新编程ECU至关重要。
二、具体理解
汽车想要拥有自适应巡航能力,需要应用层软件ASW和底层软件BSW相互配合。ASW通过实际车速信息来控制油门和制动,BSW的职责就是读取并处理速度传感器的数值。为更直观地理解ASW与BSW,可以下图为例:
▲图3 信号在ECU软硬件之间传递
其中:
1.速度传感器输出的是模拟电流信号,汽车的速度物理值与该电流值具有映射关系。
2. ECU电子元件将会对速度传感器输出值进行相关处理并传给MCU,而MCU需要将其转化为数字信号才能做运算处理,即模数转换(Analog-to-Digital Converter,ADC),该过程需要配置模数转换的相关参数。
总的来说,BSW需要配置相应传感器的采集模块,接收各类传感器信号,并进行转换成相应的物理值传输给ASW:
- ASW专注于控制算法来实现车辆的具体功能和性能,根据实时的速度等信号去实现自适应巡航控制逻辑和算法。
- BSW通过配置与硬件相关或者与基本功能相关的参数,建立起与ECU硬件的关系,获取并处理以及传递各种传感器信号。
三、相关思考
ASW与BSW的相互配合使汽车电子技术成为汽车各方面功能拓展、性能提升的重要技术支撑。在汽车新能源与智能化的浪潮中,亚太地区汽车产量不断增大,高端化发展趋势明显,目前已成为全球最大的汽车ECU市场,且未来五年内的需求增速将明显高于全球平均水平,市场份额的占比将不断提升,与之相应的是,汽车电子技术相关的功能需求也将不断增加,控制软件将变得越来越复杂。
然而,在市场体量及需求不断攀升的情况下,汽车ECU软件开发工具的国产化进程却不容乐观,国内厂商目前很大程度上仍依赖于Mathworks、NI、西门子等软件。为防止国外软件的断供,自主开发刻不容缓,解决“卡脖子”问题亟须国产开发工具形成替代,从而实现ECU应用软件开发工具链的自主可控。
由迪捷软件完全自主研发的建模仿真与代码生成软件ModelCoder,使工程师得以应用基于模型的方法(Model-Based Design)来设计应用层软件,从而打好ASW与BSW的基础,解决应用层软件算法复杂程度呈指数增加带来的难题,提升软件复用度,提高软件开发质量与效率并降低开发风险与成本。
ModelCoder可以通过精确的控制算法或策略来解决车辆实际驾驶工况和应用场景问题:
图4 ModelCoder基于模型的应用软件开发