汽车车身控制器嵌入式软件平台化实现探索

2020-11-12 01:01钟锦华
电子元器件与信息技术 2020年8期
关键词:中间层转向灯车身

钟锦华

(厦门博电电子有限公司,福建 厦门 361006)

0 引言

车身控制器是汽车车身控制系统的核心部件,承担车身控制相关功能的实现。目前大部分的车身控制器生产厂商在给车厂配套时采用定制化的开发策略,即根据不同车厂、不同车型的实际功能需求进行针对性的软件功能开发,这种情况下,车身控制器嵌入式软件代码需要重复编写,移植性较差,开发周期较长,投入的研发成本较高。

1 平台化硬件

硬件是软件运行的载体,汽车车身电子实现软件平台化的基础是需要一个资源足够丰富的硬件平台,以S32K146为主处理器,平台化设计的汽车车身控制器硬件基本涵盖了目前各汽车制造厂商对车身控制的需求,具有功能最大化的特点,软件平台化设计以此硬件平台为载体[1]。

2 平台软件架构设计

实现软件的平台化需对软件结构进行分层,不同层之间通过函数接口进行关联,各层内部进行模块化设计,使平台化软件达到通用性强,移植性好的目的。车身电子平台化软件从下至上分为驱动层、中间层、应用层。

(1)驱动层。针对平台化车身控制系统所有硬件的驱动程序设计,以及微控制器内部的时钟、中断、电源管理等的驱动程序,并经过反复测试和验证,形成稳定可靠的各驱动模块,封装在驱动层,通过统一的接口供中间层和应用层进行调用。底层驱动独立于其它层软件,只与平台的硬件相关。

(2)中间层。主要负责各模块的实时协调和管理,以及车身控制系统本身需求的数据信息存储,诊断服务,网络管理服务,Bootloader服务,通信数据接收与分析以及各类输入信号采集等。系统软件采用定时任务机制,通过任务优先级和消息传递进行实时的任务调度管理。

(3)应用层。这一层软件主要进行控制逻辑设计,比如门锁控制,车外灯控制,雨刮控制等,并调用底层或中间层相关函数,实现最终功能。这一层软件将根据不同项目的实际需求进行变更和调整。

3 函数调用及接口

平台化的车身电子嵌入式软件将非应用逻辑部分的内容设计在中间层,并经过反复测试和验证后,形成固化函数,应用层通过标准的函数接口来调用固化函数库里的函数,实现相关功能或运算。以左右转向灯、应急灯控制任务为例,任务的实现主要包括以下模块[2]:

TurnLampSwitchDetect()函数模块实时检测左右转向灯开关和应急灯开关的状态,其中包括数字检测和AD检测方式,初始化时对检测方式进行配置。TurnLampControlS tart(Type,Timer,Count)函数模块为转向灯应急灯输出启动函数,该函数模块包含三个参数,Type用于指明当前的输出是左转向、右转向还是应急灯;Timer用于规定灯的闪烁周期;Count用于规定灯闪烁周期个数,若值为0xFF则持续闪烁。TurnLampMissingDetect(Type,Method)函数模块用于实现左右转向灯工作时的一灯损坏检测,包含两个参数,Type用于指明当前正在输出的是左转向灯还是右转向灯,Method用于指明故障检测方式,是AD检测还是数字开关信号检测;TurnLampControlStop(Type)为转向灯应急灯停止输出函数模块,包含一个参数Type用于指明当前需要停止输出的是左转向灯,右转向灯还是应急灯。上述转向灯应急灯控制相关的函数模块结合输入输出配置、变量固化封装在中间层,并向逻辑层提供函数接口。而运用逻辑层在完成相关逻辑运算后只需调用相关函数即可实现左右转向灯,应急灯控制的功能[3]。

4 诊断服务软件平台化设计

诊断软件平台化设计是车身控制器软件平台化的重要组成部分,应根据UDS诊断规范内容,本着通用性好的特点,对每个服务进行模块化设计,将每个服务的函数入口进行封装,实现平台化的功能。

针对不同诊断服务的各个子功能,亦采用模块化设计,并通过函数接口进行调用。诊断服务软件根据UDS规范进行模块化设计,使车身控制器在针对不同项目的诊断需求时,只需做少量的配置修改或不修改就可以实现完整的诊断服务功能,有效避免了代码的重复设计,提高了诊断软件的可移植性和通用性。

5 平台化软件Bootloader设计

平台化设计的车身控制器软件应具有在线升级的功能,且应将Bootloader引导和加载程序进行固化。Bootloader设计首先需要对MCU内部存储器空间进行划分,划分出特定的应用程序和Bootloader的存储空间。Bootloader存储空间存放的代码包括初始化启动代码、传输协议、CAN驱动、Flash驱动、引导加载程序等。Bootloader程序将固化在内部分配的存储空间里,除通过编译器进行软件更新外,程序不会更改[4-6]。

平台化车身控制器在线升级过程基于UDS诊断协议设计,通过标准的诊断协议控制Bootloader的升级流程,车身控制器进行在线升级时,首先执行应用程序中的诊断服务内容,包括诊断会话的控制,编程条件的检查等操作,为在线下载做准备并确认条件是否满足,称为编程前预处理。当所有条件满足,将切换成编程会话,控制控制器复位并执行Bootloader程序,通过接收上位机或诊断仪发送的指令进行应用程序存储区的擦除,文件的引导和加载等,这个过程称为编程处理。编程处理的结束根据接收到的复位指令,控制控制器重新复位,而复位执行的应用程序是最新加载的代码[7-8]。

依据UDS诊断协议进行车身控制器Bootlaoder软件设计,使Bootloader软件可运用到不同的项目,具有通用性和可移植性,并实现Bootloader软件的平台化设计。

6 总结

本文对汽车车身电子控制器嵌入式软件平台化开发进行了探索,采用模块化,层级架构的设计思路进行嵌入式软件的设计。在实际使用时,平台化车身控制器可根据不同应用需求,进行功能扩展或裁剪,具有移植性好、通用性强的特点,同时车身控制器软件采用平台化开发可大大缩短开发周期,降低开发成本。

猜你喜欢
中间层转向灯车身
基于线结构光的车身R角检测方法
Zn-15Al-xLa中间层对镁/钢接触反应钎焊接头性能影响
2018款上汽通用别克GL8右侧转向灯异常
分布式转向灯同步策略的研究
2014款上汽大众途观车右侧转向灯长亮
如何利用合作教学激发“中间层”的活跃
浅谈通信综合营帐数据中间层设计原则与处理流程
温馨提醒
恐高患者