一种基于Mqtt协议的STM32的远程升级方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一种基于Mqtt协议的STM32的远程升级方法
发布时间:2023-01-31T07:39:06.971Z 来源:《中国科技信息》2022年第18期作者:潘思宇,赵洪山,殷博闻,卫彪[导读] 针对嵌入式系统远程升级过程中暂停运行
潘思宇,赵洪山,殷博闻,卫彪
四创电子股份有限公司安徽省合肥市 230088
摘要: 针对嵌入式系统远程升级过程中暂停运行、升级的安全性无法保障及升级失败等问题,设计了基于STM32F407ZG处理器的远程升级系统。

系统通过LAN8720A接收远程的系统升级代码,并将升级代码存储在内部 Flash 存储器; 升级代码接收结束后,设置系统升级标志位,并重新启动系统。

系统重启检测到升级标志位后,由系统代码升级程序将升级代码写入程序存储区后,跳转到升级后的应用程序运行。

该远程升级技术满足了升级过程中系统的实时性要求,提高了远程升级的可靠性。

关键词: 远程升级在应用编程升级程序引导加载程序实时性
1 远程系统升级原理
在微处理器中,程序存储器的编程方法通常有 3 种: 并行编程模式、通过串口或JTAG 等接口进行编程的在系统编程( in system programming,ISP) 模式,以及在应用程序控制下的在应用编程( in application programming,IAP) 模式。

并行编程是较早单片机的编程方式。

该模式通过专用的编程器对单片机进行程序的烧写,需要额外的编程器,且花费较多的开发时间,这种单片机已被淘汰。

ISP 编程模式由于其调试的方便性得到众多厂家的广泛支持。

IAP 是应用 Flash 程序存储器的一种编程模式。

IAP 模式是将 Flash 程序存储区化分为两个不同程序区域( 程序区域 1 和程序区域 2) 。

运行于程序区域 1 的应用程序为引导加载程序,即Bootloader 程序; 运行于程序区域 2 的应用程序为用户应用程序。

Bootloader 程序是一段引导程序,它驻留在处理器的程序存储器,当处理器上电或复位后在用户应用程序之前运行。

Bootloader 程序检测升级标志位确定是否需要对用户应用程序进行升级。

如果不需要升级应用程序时,直接运行用户应用程序; 如果需要升用户级应用程序时,Bootloader 程序通过 Flash 存储器的擦除、读、写机制对程序区域 2 进行擦除,并将需要更新的程序写入程序区域 2,即写入应用程序区域。

当程序区域 2的应用程序更新完毕后,跳转到程序区域 2 运行新用户程序,从而实现程序的升级。

2 远程升级功能的实现
本文针对意法半导体( ST)公司所开发的基于ARM Cortex-M4内核的STM32F407ZG 处理器,研究远程升级功能的实现方法。

该方法将STM32F407ZG 处理器的 Flash存储器分为 4 个区: 升级引导程序( Bootloader) 区、用户应用程序区、升级代码 + 升级标志区以及本地化配置区。

每次上电后Bootloader 根据升级标志判断是否需要升级用户程序。

当需要升级应用程序时,Bootloader 将接收的升级代码写入用户程序区,并删除升级标志并运行用户应用程序; 当不需要升级应用程序时,直接运行用户应用程序。

STM32F407ZG 处理器通过 LAN8720A模块与远程控制中心实现有线连接,并通过LAN8720A模块接收控制中心的控制命令和升级代码。

远程升级的连接框图如图 1 所示。

2. 1 STM32F407ZG 处理器
STM32F407ZG 处理器是意法半导体公司生产的基于ARM 32 位 Cortex-M4 内核的处理器,其自适应实时加速器使Flash存储器的程序无等待执行,时钟频率高达168 MHz。

支持串行线调试 ( serial wire debug,SWD) 和联合测试测试行动小组 ( joint test action group,JTAG)接口协议。

该处理器具有1024kB 程序存储器和192 kB SRAM,支持I2C、SPI、CAN 等通信方式。

2.2 Flash 程序存储器的划分
STM32F407ZG 处理器有1片统存储器区,地址为: 0x8000000 ~ 0x8100000。

该存储器区域为处理器的引导空间,即通过串口下载用户程序的内置引程序。

处理器的引导模式选择读取flash中的标志位,决定处理器的启动模式。

当flash中的标志位为false时,运行用户程序; 当flash中的标志位为true时,运行内置引导程序实现应用程序的下载。

为实现应用系统的远程升级,将 STM32F407ZG 处理的程序分为用于实现用户应用程序升级的 Bootloader 程序和用户应用程序。

在升级应用程序前,需要接收用于系统升级的程序代码。

因此,实现远程升级功能涉及Bootloader 程序、用户应用程序的设计和升级代码的存储。

充分考虑 STM32F407ZG 存储器内置了 1024kB 的 Flash存储器,将 Flash 存储器划分为 Bootloader 程序存储区、用户程序存储区、升级代码存储区和本地化配置区。

STM32F407ZG 将 Flash存储器将存储区划分为12 个扇区,存储地址从 0x80000000 开始,第 0 ~ 3 扇区分别为 16 kB,第 4 扇区为 64 kB,第5 ~ 11扇区为128 kB。

扇区的擦除是以扇区为单位进行的。

为此,根据Bootloader 和用户程序的大小,将 Flash 存储器空间进行分配,分配值如表1 所示。

4 结束语
本文所设计的基于 STM32F407ZG 的远程升级技术,通过 Flash 存储器的合理划分、抗掉电设计、抗误码设计和程序合法性检查等手段,保证了该升级技术的高度稳定性和可靠性。

该设计方案巧妙地将升级代码接收程序作为系统应用程序的一部分并通过中断方式启动,在升级代码接收结束后运行 Bootloade 实现系统的升级,解决了升级过程中系统长时间不能工作的难题,满足了系统实时性的要求。

该远程升级技术可以应用于其他控制系统,具有广泛的应用前景和较高的使用价值。

参考文献
[5]田日才,王国鹏,梁学东. ATMEGA128 单片机的软件远程升级[J].电子技术应用,2003( 11) : 23 -25.[6]李卫红,张凌云,陈天喜,等.基于 IAP 程序远程更新设计在车载乘客信息显示中的应用[J].机车电传动,2012( 2) : 79 - 81.[7]尹恒,严华.一种针对嵌入式远程升级安全的存储解决方案[J].计算机应用,2011,。

相关文档
最新文档