基于S32K144的电控制动系统固件升级系统开发

2023-01-06 08:48许金鹏李军伟李连强汪志莹董文龙
内燃机与动力装置 2022年6期
关键词:固件校验上位

许金鹏,李军伟*,李连强,汪志莹,董文龙

1.山东理工大学交通与车辆工程学院,山东 淄博 255049;2.一汽解放青岛汽车有限公司,山东 青岛 266217;3.北京裕峻汽车技术研究院,北京 100016

0 引言

电控制动系统(electronic brake system,EBS)的制动性能与人们的行车安全密切相关,EBS控制器的升级优化是行车安全的重要保障。传统的升级方式是拆开EBS控制器的外壳,利用各种调试接口,使用写入器对控制器进行升级维护。这种升级方式的缺点是需要单独引出下载接口,升级过程操作复杂,费时费力,同时有泄露源程序的风险。现在的升级方式主要是通过EBS的控制器局域网络(controller area network,CAN)接口升级程序,该升级方式可以提高保密性,减少现场升级维护的时间及成本[1-3]。文献[4]中基于S32R274芯片开发汽车电子控制单元引导加载程序,为单片机固件升级系统开发提供了技术参考。文献[5]中将基于S32K148芯片的引导加载程序与汽车网关结合,实现了车辆网关模块开发。本文中针对S32K144主控芯片,设计开发EBS固件升级系统,结合循环冗余校验(cyclic redundancy check,CRC)算法,提高升级过程中的可靠性与稳定性,解决实际工程中EBS升级困难的问题。

1 EBS固件升级系统开发

1.1 工作原理

EBS包括主控制器、前桥控制器和后桥控制器3个控制器。主控制器接收驾驶员发出的制动信号,信息处理后,发送给前、后桥控制器。前、后桥控制器接收到主控制器发来的信号后,控制常闭增压电磁阀工作,输出高压气体,分别控制前、后制动器工作。主控制器位于车辆内部,前、后桥控制器分别位于车辆的前、后桥位置,由于所在位置均不易拆卸,EBS后期升级维护比较困难。本文中采用CAN总线作为通信媒介,通过上位机向指定控制器发送特定的控制报文,指定控制器调用Flash模块实现程序刷写,实现EBS固件升级。

1.2 底层程序开发

主控制器、前桥控制器和后桥控制器的主控芯片均为S32K144,控制器升级系统底层程序开发主要分为CAN模块、Flash模块、中断向量表的重映射、S19文件解析、CRC校验5部分。

1.2.1 CAN模块

CAN模块实现控制器主控芯片S32K144与上位机的通信。CAN模块时钟频率设置为8 MHz,波特率设置为500 kbit/s,报文传输格式设置为标准帧,上位机向EBS控制器发送报文的标识符(identification,ID)定义为0x601,EBS控制器向上位机发送报文的ID定义为0x602。CAN模块的接收缓冲区开启ID滤波器,只接收固定ID的报文,防止升级过程中其他报文干扰,提高工作效率。

1.2.2 Flash模块

Flash模块实现对控制器单片机内存空间的擦除和写入。S32K144芯片拥有512 kB的P_Flash内存空间,P_Flash内存空间主要存储运行程序,断电时不丢失数据,分为128个扇区,最小擦除单位为1个扇区,S32K144芯片的Flash不支持边读边写,需将执行擦除和写入部分的代码复制到随机存取存储器(random access memory,RAM)中运行,设置Flash通用命令寄存器FTFC_FCCOB0为0x09,可擦除某个扇区。设置FTFC_FCCOB0寄存器的为0x07,可写入数据至单片机内存中。在单片机写入前必须将该区域擦除,才能保证数据正确写入。

S32K144单片机Flash内存空间存储地址分为2部分:升级系统分配地址段为0x00000000~0x00008FFF,用来存储固件升级系统的底层程序;用户程序分配地址段为0x00009000~0x0007FFFF,用来存储用户程序。

1.2.3 中断向量表的重映射

EBS固件升级系统底层程序的中断向量表使用默认地址,地址段为0x00000000~0x00000400,将用户程序中链接文件m_interrupts起始位置修改为0x00009000,可实现用户程序中断向量表重映射,用户程序中断向量表地址为0x00009000~0x00009400。

1.2.4 S19文件解析

S19文件由S32DS IDE开发环境编译生成,用来存储用户程序。S19文件包括记录数据的类型、剩余数据字节数、存储地址、数据及校验和,前2个字符用ASCII码表示,其余数据用十六进制表示。记录数据的类型字节数为2个,用S0、S1、S2、S3、S5、S7、S8、S9表示,S0表示记录的开始,代表S19文件开始;S1、S2、S3分别表示需要写入至单片机内存中的数据存储地址长度为2个字节、3个字节、4个字节;S5不是每个S文件必须包含的,表示S1、S2、S3的个数;S7、S8、S9表示中止记录,代表S19文件结束;剩余数据字节数表示存储地址、数据以及校验和的总字节数,字节数为1个;存储地址表示该行S19数据在单片机中的具体地址;数据表示需更新写入的代码,字节数为0~32;校验和字节数为1[6]。

S19文件写入单片机内存时,要对S19文件每行数据解析与校验,保证每行数据正确传输,具体流程如图1所示。

图1 解析与校验一行S19记录流程图

由图1可知:解析S19文件时先判断该行写入的数据首字符是否为S,若是则解析记录数据的类型,确定存储地址的长度,若不是S会返回错误指令;对剩余数据字节数、存储地址、数据、校验和分别进行解析;解析完毕后根据校验和对该行需要写入的数据进行校验,校验通过该行S19数据会写入至单片机内存中,不通过则返回错误指令。

1.2.5 CRC校验

EBS固件升级系统对数据的通信安全要求非常严格,如果用户程序不能正确升级,控制器无法正常工作。CRC是数据通信中常用的查错校验方法,该方法基于线性编码理论,对传输数据按照一定的规则进行多项式计算,保证数据传输的完整性和正确性[7]。基本原理为:将发送方发送的m位信息序列作为1个多项式的系数,按照某种规则产生CRC码并发送出去;接收方接收到CRC码,根据接收到的信息序列按照一定规则进行解析,确定传输过程是否出现错误。

发送方在编码前由原始数据产生原始多项式p(x),p(x)最高次幂为m-1,选用CRC_16查表校验法,生成多项式k(x)=x16+x15+x2+1,最高次幂为16,将原始多项式p(x)与x16相乘后除以k(x),所得的余式为q(x)[8],即为产生的CRC码,将CRC码按照一定的规则编码后,得到的多项式

T(x)=x16p(x)+q(x)。

接收方将T(x)除以k(x),若余数为0,则传输正确,否则传输错误。S19所有传输数据写入单片机内存后,对写入的所有数据进行CRC计算,得到校验码A。上位机对发送给控制器的S19数据也进行同样的CRC算法,得到校验码B,对比校验码A、B,若相同则证明写入到控制器单片机内存的程序和S19文件完全相同,不同则证明写入错误。

1.3 工作流程

S32K144单片机使用ARM Cortex M系列的内核,每次单片机上电或复位后从Reset_Handler复位向量开始,对内部系统及RAM等进行初始化后再跳转到main函数执行程序[9]。EBS 3个控制器芯片相同,升级工作流程相同,控制器升级工作流程如图2所示。

图2 控制器升级工作流程

1)当控制器上电或复位后,对单片机应用环境初始化,对时钟模块、CAN模块、Flash模块等初始化。

2)在主函数中等待3 s,如果3 s内收到来自上位机的升级指令,进入用户升级程序,如果未收到来自上位机的升级指令,跳出升级程序,直接执行用户程序。

3)执行用户升级程序,对原来用户程序的Flash区域进行擦除,擦除地址为0x9000~0x7FFFF。

4)单片机内存接收来自上位机传输的S19数据,接收1帧S19文件数据后保存至数组中,同时应答上位机。

5)上位机发送完1行S19数据后,发出完毕命令,控制器接收到命令后,将保存在数组中的整行S19文件数据进行解析校验,校验通过后应答上位机。

6)循环往复,直至上位机发送完毕所有S19文件数据。

7)单片机接收完来自上位机S19文件的所有数据后,对写入至单片机内部所有数据进行CRC校验,并与S19文件数据CRC校验码对比;若校验通过,则回应上位机升级成功,跳转至新用户程序的开始地址执行程序;若校验未通过,则回应上位机升级失败,不执行新的用户程序。

2 EBS固件升级系统上位机开发

调用某公司CAN分析仪的相关库函数,发送和接收CAN报文,实现上位机与控制器之间的信息交互[10]。

2.1 上位机界面设计

使用PyCharm中的工具包pyqt5调用QT Designer库[11],搭建EBS固件升级系统上位机图形界面,对搭建好的界面生成对应的Python界面配置代码,如图3所示。

图3 上位机界面

由图3可知,上位机界面主要分为CAN配置、下载设置2部分。CAN配置功能包括配置波特率、打开CAN卡、复位CAN卡以及关闭CAN卡。下载设置功能包括发送指定控制器(主控制器、前桥控制器、后桥控制器)升级命令报文、加载S19文件、开始更新、导出信息。发送指定控制器(主控制器、前桥控制器、后桥控制器)升级命令报文对应上位机3个不同按键,对应的升级命令分别为0xFF01、0xFF02、0xFF03。上位机显示界面分为3个部分:显示运行状态、进度条、运行窗口。显示运行状态将上位机当前运行状态在窗口中显示,进度条显示当前下载进度,运行窗口实时显示S19文件下载到第几行。

2.2 上位机通信协议

为实现上位机与控制器的正常通信,需要自定义通信协议[12-13]。本通信协议使用的CAN报文为标准帧,上位机使用CAN分析仪分别与主控制器、前桥控制器及后桥控制器进行通信,上位机与主控制器通信过程如图4所示。

图4 上位机与主控制器间的通信过程

1)上位机通过ID为0x601的报文发送主控制器开始升级命令(0xFF01),主控制器接收到命令后进入用户升级程序。先对保存用户程序的Flash区域进行擦除,擦除成功后,通过ID为0x602的报文向上位机发送0xAC,表示连接成功。

2)上位机收到0xAC后,通过ID为0x601的报文发送主控制器要刷写的S19文件数据,主控制器接收数据后回应0xAC,发送1行S19数据完毕后,上位机通过ID为0x601的报文向主控制器发送0xFE,表示1行S19发送完毕。

3)主控制器收到0xFE后,将保存的1行S19数据写入到指定的单片机内存,写入成功后,通过ID为0x602的报文向上位机发送0xAC,表示刷写成功。

4)循环往复,直至上位机将所有的S19文件数据发送完毕。

5)上位机通过ID为0x601的报文向主控制器发送0xFB以及该S19文件的CRC校验码,主控制器接收后对写入到单片机内存的数据进行CRC校验,得到另1个校验码,比较2个校验码,相同则表示数据写入成功,主控制器通过报文ID为0x602的报文发送0xAB,表示写入成功;不同表示写入失败,主控制器通过报文ID为0x602的报文发送0xAE,表示CRC校验失败,写入失败。

6)S19文件数据成功写入后,主控制器跳出用户升级程序,执行新的用户程序,实现用户程序在线升级。

7)某控制器在用户程序刷写时,另2个控制器正常工作。如3个控制器都需进行程序写入,先选择1个控制器进行程序写入,完成后对下1个控制器进行程序写入,依次完成在线升级。

3 台架试验验证

在商用车气压制动系统台架上进行EBS固件升级试验。通过S32DS软件对用户程序编译后生成S19文件,上位机CAN卡配置完毕后,点击主控制器按键,完成上位机与主控制器的连接,之后点击“加载文件”“开始更新”按钮,主控制器开始升级用户程序。升级后所有的按钮变为不可使用状态,防止误触导致程序下载失败。当上位机的运行状态框中出现“S文件更新完成”后,主控制器完成升级,使用相同的方式对前桥和后桥的控制器进行程序更新。

EBS系统的3个控制器升级完毕后,使用J_Link读取单片机内存中的数据,并与下载的S19文件进行对比,验证程序下载的完整性以及准确性。通过对比用户程序的S19文件以及读取的单片机内存数据,二者完全一致,用户程序正确下载至单片机内存中。

将EBS的3个控制器安装在商用车气压制动系统台架上,进行制动试验,踩下制动踏板后,前、后制动控制器工作,打开电磁阀,气罐中的压缩气体被输送到对应管路中实现制动,完成EBS控制器系统升级。

4 结语

1)EBS固件升级系统实现了基于CAN总线通信技术的在线升级,方便了后期技术人员对EBS控制器的升级维护。

2)EBS固件升级系统对用户程序进行了双重校验,S19文件每行数据按照S19文件解析校验方式进行校验,所有数据写入单片机内存后进行1次CRC校验,提高了升级系统的准确性。

3)EBS固件升级系统能够满足实际工程要求,解决了实车环境中EBS控制器升级困难的问题,提升了后期维护升级的便利性、安全性。

猜你喜欢
固件校验上位
使用Excel朗读功能校验工作表中的数据
要攻城略地关键要有好筹码,这匹水产动保“黑马”如何能迅速上位?
特斯拉 风云之老阿姨上位
炉温均匀性校验在铸锻企业的应用
基于SHA1的SCADA系统PLC固件完整性验证方法
电子式互感器校验方式研究
基于ZigBee和VC上位机的教室智能监测管理系统
基于固件的远程身份认证
英特尔发布免费固件引擎
提取ROM固件中的APP