一种配电设备软件智能升级方法研究与实现
作者: 莫文威 唐佳楠 秦波 魏仲志远
摘要:针对发射车载高、低压配电设备软件升级过程中存在的难题,例如传统JTAG和串口IAP升级方式难以满足频繁升级需求,设备拆装不便且存在风险等。文章提出了一种基于CDSPF28335N和CAN总线的智能升级方法。该方法旨在解决产品批量生产软件烧录以及列装后现场在线升级和软件维护问题。文章详细阐述了系统组成、工作原理、升级方法和实现流程,并验证了该方法的可行性和有效性。
关键词:智能升级;CAN总线;CDSPF28335N;配电设备
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2025)01-0065-03 开放科学(资源服务) 标识码(OSID) :
0 引言
发射车载配电设备负责整车高、低压电能分配,通常包含多台设备。这些设备的控制软件运行于基于CDSPF28335N数字信号处理器的主控板上。通过软件升级或配置更改,可以快速便捷地满足用户需求变化和功能扩展。然而,传统的JTAG仿真接口升级需要拆卸设备,而串口IAP升级方式需要将BOOT引脚引出至外部维护接口。这两种传统升级方式都无法同时升级多个设备软件,导致设备批量烧录效率较低。
为解决上述问题,本文提出了一种基于CDSPF28335N和CAN总线的智能升级方法。该方法利用CAN 总线广播通信实现总线内多个相同设备软件的同时升级,并利用CAN总线帧ID实现对不同设备软件的智能识别和单独升级。此外,该方法还利用FlashAPI 函数库实现设备不停机在线升级。
1 系统简介及智能升级硬件组成
1.1 系统简介
高、低压配电设备实现发射车整车的高压配电和低压配电,保证高压用电设备和低压用电设备的安全可靠,其中低压配电设备软件完全相同,通过读取存储的不同配置信息完成不同的电能分配功能。
1.2 硬件组成
配电设备本身须具备CAN 总线控制器和EEPROM 存储芯片。因此可将CAN总线和EEPROM作为软件智能升级的硬件组成使用。
2 智能升级的设计原理和方法
2.1 CAN 总线
软件智能升级CAN总线设计需考虑满足配电设备CAN通信要求的同时,避免与用户通信协议造成重叠和冲突。本研究将软件升级标识符“DID”、设备地址唯一标识符“PID”、功能标识符“FID”编入29位扩展帧ID中,并对数据域信息进行CRC校验。软件升级帧格式定义,如表1所示。
2.2 I²C 总线和EEPROM
本研究中关于EEPROM读写操作,通过EEPROM 存储设备地址号、软件升级状态字,标识当前设备地址号及升级状态[1]。详细存放地址,如图1所示。
3 智能升级的设计和实现
智能升级主要设计实现包括:
1) 二次Bootloader引导程序设计;
2) 应用程序智能升级模块设计及目标程序转化;
3) 上位机程序设计。
3.1 二次Bootloader 引导程序设计
本研究需自行编写二次Bootloader引导程序。即芯片上电后正常运行官方Bootloader,然后运行二次Bootloader,“二次Boootloader引导程序”即相当于应用程序1,用户“应用程序”相当于应用程序2。
3.1.1 CMD 文件配置
针对数字信号处理器CMD 文件作出了详细解释,本研究通过工程下的CMD文件可知0x33FFF6中存放着codestart函数,然后调用了RST中的c_int00函数,最后跳转至main函数执行[2]。因此,为避免升级流程的擦除过程中二次Bootloader引导程序段代码被擦除,二次Bootloader 程序的CMD 可参照官方CMD 文件,将0x33FFF6依然定义为程序BEGIN段,将其余空间分配到Flash的A和H区中。
3.1.2 初始化配置
初始化只须对CAN模块、I²C模块以及相应的中断进行配置,其余外设资源的相关配置及中断都可关闭。
3.1.3 FlashAPI 函数调用
本研究参考了文献[3] 针对FlashAPI库函数的详细调用方法,并且根据芯片官方提供的FlashAPI函数库进行调用,API函数库包含了:
1) Flash2833x_API_Config. h 和Flash2833x_API_Library.h;
2) Flash2833x_API_V210.lib文件。
3.1.4 跳转函数
跳转函数CAN_BOOT_JumpToApplication()主要用于升级前跳转至二次Bootloader程序入口,执行二次Bootloader引导程序,以及升级成功或失败后跳转至应用程序入口,执行应用程序。
3.1.5 I²C 读写EEPROM
1) ReadData():用于初始化配置后,程序启动I²C 总线模块,读取EEPROM地址0x0001FF00存储的“升级状态字”数据;
2) WriteData():用于在接收到上位机升级指令后,将“升级状态字”数据写入EEPROM的0x0001FF00段地址;此外用于在首次烧录程序时将设备唯一地址号写入EEPROM的0x0001FF00段地址。
3.1.6 与上位机CAN 通信模块设计
1) 协议设计:如本文2.1节所述,为避免与配电设备原有通信协议冲突或重叠,设计了如表1所示,以分包号DF、升级标识符DID、功能标识符FID、设备地址唯一标识符PID的帧ID格式标识升级过程。
2) 邮箱分配:CAN总线控制器拥有32个可单独配置为接收或者发送的邮箱[4] ,每个邮箱可独立作为发送或接收邮箱使用。配电设备使用了其中0~19号共20 个邮箱用于外部CAN通信,本研究将用于在线升级的接收和发送邮箱分别配置为邮箱30和邮箱31。
3) 状态机设计:
①状态机进入方式:进入方式有两种,一是上电后二次Bootloader 引导程序通过I²C 总线读取到EEPROM中存储的“升级状态字”状态为需要升级时,程序等待10s时间接收上位机的升级握手,由此进入状态机;二是应用程序运行过程中,接收到上位机升级指令,应用程序改写“升级状态字”后跳转至二次Bootloader引导程序入口,执行二次Bootloader引导程序,重复方式一的运行步骤,由此进入状态机。
②状态机运行过程:进入状态机后,此时将状态机分为节点识别状态、Flash 擦除状态、程序固化状态、指令反馈状态、数据校验状态以及错误处理状态,其正常执行成功后返回状态机执行成功结果。而升级失败或错误后均跳转至错误处理状态,判断错误原因,并将错误原因代号反馈至上位机,尝试3次返回上一执行状态,如连续超过3次则终止状态机,返回状态机执行失败结果。
③状态机返回结果:若状态机返回成功结果,则通过I²C总线将EEPROM中“升级状态字”的内容更改为“不需要升级”,然后执行程序跳转,跳转至应用程序入口执行应用程序;若状态机返回失败结果,则直接跳转至应用程序入口执行应用程序。
3.2 应用程序智能升级模块设计及目标程序转化
3.2.1 CMD 文件配置
应用程序的CMD 文件配置与本文3.1.1 节中类似,只须将应用程序的入口地址定义为0x320000作为程序BEGIN段,还需要将Flash D区的起始地址改为0x320002,长度改为0x007FFE。同时其余空间配置于除了Flash A区和H区以外的其他区段中。
3.2.2 通信模块设计
应用程序需接收到上位机升级握手指令后,二次Bootloader引导程序才开始执行,进入状态机。同样地,通信模块须加入跳转函数CAN_BOOT_JumpToAp⁃plication(),用于握手成功后跳转至二次Bootloader引导程序入口。
3.2.3 目标程序格式转化
利用TI公司提供的生成工具hex2000可以将out 文件转换为可以直接烧写到Flash的hex文件格式[5] ,具体操作步骤为:
1) 在工程中选择Propoties,进入工程属性;
2) 在属性中选择Build->C2000 Hex Utility,勾选“Enable C2000 Hex Utility”选项;
3) 重新编译工程,即可在工程根目录Rlease文件中找到生成好的hex文件。
3.3 上位机程序设计
本研究的上位机程序采用QT Creator进行编写,界面、通信模块等设计[6]。
3.3.1 上位机界面设计
上位机界面设计大致功能为:
1) CAN基本配置:用于选择CAN波特率;USB转CAN 转换器的设备号、通道号;连接、断开CAN 转换器;
2) 显示功能:用于显示当前CAN总线上的配电设备节点,显示当前软件版本号信息;
3) 文件格式解析与分发:通过点击“打开文件”按钮,打开生成的hex文件,自动解析文件数据,并自动按软件升级的通信协议要求分发文件数据;
4) 升级功能按钮:“下载准备”与“下载锁定”用于在线升级前与处理器程序进行通信握手,“更新固件”用于启动软件升级。
3.3.2 上位机CAN 通信设计
上位机CAN 通信驱动部分依据ZLG 致远电子CAN通信二次开发函数库ControlCAN,调用其库函数驱动;CAN通信应用部分依据本文3.1.6节中所述总线协议进行设计。
4 试验验证结果与分析
通过对高、低压配电设备软件在线升级进行验证,CAN总线波特率为250 kbit/s,升级文件大小小于500 kB时,单节点设备软件升级完成时间大约为70 s,5 个节点相同设备软件同时升级完成时间大约为80 s。因多节点时升级时,为避免通信握手堵塞,按设备地址号由小到大依次间隔10 ms对上位机通信握手进行回复,因此当同时升级多节点设备时,会导致整个升级完成时间延长。
5 结论
本研究利用基于CDSPF28335N 数字信号处理器,CAN总线通信特性以及I²C总线读写EEPROM方式实现了配电设备软件智能升级方法,解决了发射车载配电设备传统升级方式须拆装、耗时长、操作烦琐等问题,且解决了设备大批量生产的软件烧写问题。经过验证,智能升级方法稳定、可靠,传输效率高,具有较高的应用价值。
参考文献:
[1] 王典洪,李东峰,刘兵.EEPROM与DSP的接口技术[J].微处理机,2008,29(2):30-32.
[2] 路帅,郭勇.DSP的CMD文件详解[J].信息通信,2019,32(1):105-106.
[3] 黄浩,杨靖宇,徐杰,等.基于JDSPF28335的电子控制器在线加载软件设计[J].信息技术与信息化,2023(5):51-54.
[4] 尹良镜,王东升.基于TMS320F28335的CAN总线的在线升级[J].机械工程与自动化,2018(4):84-86.
[5] 姚秀娟,王德胜.基于TMS320F2812的远程在线升级设计与实现[J].电子世界,2013(12):121-122.
[6] 霍亚飞.Qt Creator快速入门[M].4版.北京:北京航空航天大学出版社,2022.
【通联编辑:闻翔军】