STM32单片机在线升级设计及实现

系统结构

STM32单片机在线升级,一般通过USART串口将编译后的新代码数据发送到单片机实现,有线、无线方式均可。

可以采用边发送边更新的方式,也可以采用“发送、存储、验证、更新”的方式,后者将数据存储在Flash中备份存储,所有数据发送完并检查确认无误后再更新到单片机,安全性更高,更具有应用价值。

在这里插入图片描述

有线方式系统通过 RS232/485 总线直接和电脑连接,通过串口直接向单片机发送更新数据。在无线升级方式中配有 GPRS 模块,通过 GPRS 无线网络连接到上位机服务器,在远程即可实现升级操作,不需要到现场,更加便捷,适用于设备安装分散或远距离的场合。

Flash程序存储空间分配

STM32单片机在线升级需要编写两个项目程序,分别固化在Flash主存储区的不同区域,其中一个项目程序是真正的应用程序代码(APP);另一个项目程序是Boot引导程序,用于引导程序启动。
Boot程序一般放置在Flash基地址处(0x0800 0000),一般分配整个存储页。因Boot程序较小,分配前20KByetes即可。

在这里插入图片描述
系统启动时先从0x0800 0004取出IAP程序段的复位中断向量,在执行完IAP复位中断服务函数后跳转到IAP程序的main函数。在IAP的main函数中判断跳转到哪个区域并执行相应操作,然后跳转到APP的复位向量表,APP复位中断指向完后,最终跳转到APP的main函数。

但在APP的main函数执行过程中,若有中断发生,PC指针仍跳转到0x08000004地址中断向量表,然后根据APP设置的中断向量表偏移量跳转到APP对应中断服务程序执行,执行完后返回到APP的main函数,因此需要在APP程序中设置中断向量表偏移量,利用STM32库函数NVIC_SetVectorTable。
在升级时需要用到应用程序项目生成的.bin格式文件,可由.hex文件通过编译工具得到。

升级数据的接收在APP程序中完成,通过“升级标志”通知Boot程序,APP准备好升级数据后强制系统重启,在Boot中完成程序更新。因备份寄存器(BKP)在系统复位时不会改变,“升级标志”可使用BKP实现。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饼干饼干圆又圆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值