摘要:机载卫星通信机箱中的嵌入式模块通常具有拆卸外壳不便、难以通过外接仿真器来进行STM32应用程序升级更新的问题。针对该问题,文章提出一种基于TMS320F28335的STM32应用软件在线升级方法。该方法具有较好的稳定性和可靠性,在不拆卸模块外壳的情况下可实现STM32应用软件的在线升级。
关键词:TMS320F28335;STM32;在线升级
中图分类号:TP311 文献标志码:A
0 引言
机载卫星通信机箱中的嵌入式模块须要经常更新修改其中的嵌入式软件程序,传统的软件升级方法是将模块从机箱中取出,打开模块盖板后接入仿真器连接芯片,再通过电脑烧写软件进行程序升级。在该方法中,模块的多次插拔容易造成机箱和模块的结构损坏,甚至还会出现仿真器无法连接芯片的情况,增加了开发人员的调试工作量。有时为了升级程序,专业技术人员还须奔赴外场,这提高了产品的维护成本。
目前,针对嵌入式软件的在线升级也得到了广泛的研究[1-6]。针对传统软件升级问题,本文提出了一种基于“上位机+DSP+SPI-Flash+STM32”架构的在线升级方法。该方法将STM32应用软件数据通过上位机发送给数字信号处理器(Digital Signal Processor,DSP);在DSP接收数据并校验后,将STM32应用软件数据存储在DSP外挂的SPI-Flash相应扇区中;再从SPI-Flash中读取保存的数据并烧写到STM32内部的Flash中;进而完成STM32应用程序的升级。
1 总体方案
本文提出的STM32应用程序在线升级方法架构主要包括上位机和嵌入式模块,其中嵌入式模块主要由DSP芯片、W25Q64芯片、STM32芯片组成,DSP软件与上位机通过CAN接口交互,与W25Q64通过SPIA接口交互,与STM32自举程序通过SCIC接口交互。
当STM32进行在线升级时,开发人员在上位机软件中选择待升级的STM32应用程序文件,由上位机将文件数据进行分包,按照特定的帧格式发送给DSP;DSP根据帧格式中的程序代码编号,将收到的数据存储到W25Q64的相应扇区中;当W25Q64收到最后一包数据时,系统对所收的全部应用程序数据进行校验;校验成功后先将STM32切换到自举程序模式,然后将应用程序数据从W25Q64中读出并写入STM32的内部FLASH;待所有数据写完后再将STM32切换到应用程序模式,即可运行升级后的应用程序。
2 芯片存储空间
2.1 W25Q64芯片的Flash空间分配
DSP外挂的SPI-Flash选用W25Q64芯片,该存储器共有2048个扇区,每个扇区大小为4096个字节,共有8 MB的存储空间。开发人员根据实际STM32应用程序的bin格式文件大小进行存储空间的分配,将第1000~1499个扇区用来存储常规模式的STM32应用程序,将第1500~1999个扇区用来存储抗干扰模式的STM32应用程序,其余扇区可作他用。
2.2 STM32芯片的内部Flash空间及自举模式
STM32选用STM32F429芯片,其内部Flash存储空间共有2 MB,地址为 0x8000000—0x8200000。自举程序存储在STM32的内部自举ROM存储器中,其通过一种可用的串行外设将STM32应用程序下载到芯片内部Flash中。研发人员将STM32的BOOT0配置为1、BOOT1配置为0,再执行RESET即可激活自举程序;将BOOT0配置为0、BOOT1配置为0,再执行RESET即可运行STM32应用程序。
3 软件实现
3.1 STM32的bin格式文件生成
当通过仿真器烧写STM32应用软件时,研发人员选择Keil集成开发环境编译生成的hex文件,在本文的在线升级方法中写入STM32内部Flash的文件是二进制bin格式文件,Keil集成开发环境自带的fromelf.exe工具软件可生成bin格式文件。
3.2 在线升级工作流程
上位机软件的工作流程如图1所示。上位机软件选择待升级的STM32应用程序的bin格式文件,按照已定义的程序更新指令帧格式对bin格式文件进行分包发送给DSP;待收到DSP应答的程序加载回传成功指令后,再继续发送下一包数据;待所有分包数据均发送完成后,会收到DSP应答的程序加载结果回传;待程序烧写完成后,若收到DSP应答的程序烧写结果回传指令后,则在界面中显示烧写成功,否则显示烧写失败。
DSP软件的工作流程如图2所示。DSP软件接收上位机软件分包(每包128字节,最后一包按实际剩余字节数)发送的程序更新指令,只有程序代码编号字段为STM32应用程序,才能保存程序代码编号并进行之后的升级步骤。当收到开始帧时,系统需要保存校验值,若后续收到的数据包帧序号与上一帧不连续,则此次升级结束;若连续,则计算每包帧格式数据部分的累加和,将数据存入W25Q64的相应存储区域。当收到最后一包时,系统将所有分包数据部分的总累加和与保存的校验值进行比较,若相等则表明收到的数据正确,可进行后续STM32应用程序的擦除和更新操作。STM32应用程序的在线升级需要将STM32从正常启动应用程序模式切换到自举模式;在完成与自举程序的握手后,可将STM32内部Flash的内容全局擦除;擦除成功后可从W25Q64相应地址读取出程序数据的总长度,按照每次128字节进行分次读取并写入STM32内部Flash;当所有程序数据都被写入后,可将STM32重新切换到正常启动应用程序模式,此时运行程序即为在线升级后的STM32应用程序。
3.3 上位机软件
上位机软件是“CAN总线测试软件”。该软件既可实现bin格式文件的分包组帧发送,又可实现特定指令的发送以及接收DSP软件回传的指令。STM32应用程序的在线升级需要使用上位机软件发送程序更新指令,接收程序加载应答回传指令、程序加载结果回传指令、程序烧写结果回传指令。
3.4 DSP软件
DSP软件与上位机软件通过CAN接口交互,上位机软件将bin格式文件按照程序更新指令帧格式进行分包组帧发送给DSP软件,程序更新指令帧格式如表1所示。在开始帧中,数据字段的内容由校验字(4字节)+基线版本号(3字节)+程序固化时间(7字节)+可执行程序数据组成,后续帧的数据字段仅为可执行程序数据。校验字的获取是将“基线版本号”“程序固化时间”和所有“可执行程序数据”按字节进行累加,累加和的长度为32位,在累加时不进行数据截断变为实际的累加值;按大段序处理,基线版本号和程序固化时间采用BCD码格式。DSP软件每收到上位机发送的程序更新指令后,须向上位机发送程序加载响应回传指令(包含应答结果和帧序号),只有上位机收到DSP软件的程序加载响应回传指令后,才能继续发送下一包的程序更新指令。当DSP软件收到结束帧时,既要发送程序加载响应回传指令,又要发送程序加载结果指令(包含加载结果),待STM32应用软件烧写完成后,DSP软件应向上位机发送程序烧写结果回传指令(包含烧写结果)。
DSP软件与W25Q64通过SPIA接口交互,读写该SPI-Flash芯片前,可先读取器件ID号,确保交互正常。DSP软件与W25Q64交互使用的基本命令如表2所示。
DSP软件与STM32自举程序通过SCIC接口交互,通过配置STM32的BOOT0、BOOT1引脚以及RESET引脚,将STM32切换到自举模式。DSP软件向STM32自举程序发送0x7F;自举程序向DSP软件应答0x79,表明STM32已准备好接收命令;之后便可进行数据擦除和数据写入操作。DSP软件与STM32自举程序交互使用的基本命令如表3所示。
4 结语
本文提出了一种基于TMS320F28335的STM32应用软件在线升级方法,在不拆卸嵌入式模块的外壳、不使用仿真器连接芯片情况下,该方法可实现在线升级STM32芯片的应用程序,升级成功后上位机软件界面会弹出烧写成功的窗口。通过实际项目的验证,该方法具有良好的可行性、稳定性和可靠性,使STM32应用程序升级更加便捷高效,既减少了嵌入式模块硬件结构的磨损,又降低了软件维护的成本,提升了工作效率。
参考文献
[1]王涛,钱昀莹,张铆,等.基于DSP28335的FPGA软件在线升级方法[J].电子设计工程,2024(3):17-21.
[2]赵飞.一种基于DSP+FPGA架构的软件在线升级实现[J].现代导航,2021(6):462-465.
[3]龚行梁,周强,赵天恩,等.CAN总线实现的ZYNQ-7000程序在线升级方法[J].单片机与嵌入式系统应用,2018(11):63-66.
[4]倪庆生,倪云龙,潘晓洋,等.基于CAN总线的TMS320F28335远程在线升级方法设计[J].电子与封装,2021(11):31-35.
[5]吕春燕,靳占军,张乐君,等.STM32单片机在线升级设计及实现[J].信息通信,2017(6):462-465.
[6]罗成娥,任海强.基于CAN总线的在线升级系统设计与实现[J].数字通信,2013(6):28-32.
(编辑 王永超编辑)
Online upgrade method of STM32 application software based on TMS320F28335
WU Bixia, XU Liang, WU Jiajia
(Nanjing Panda Handa Technology Co., Ltd., Nanjing 210001, China)
Abstract: It is inconvenient for embedded modules in airborne satellite communication cabine to remove the module shell, and it is difficult to upgrade STM32 application program through external emulators. In order to solve this problem, this paper proposes an online upgrade method of STM32 application software based on TMS320F28335. This method has good stability and reliability, and can realize the online upgrade of STM32 application software without disassembling the module shell.
Key words: TMS320F28335; STM32; online upgrade