从零实现 IAP远程升级(从物联网到F407到F103)

IAP就是在线升级程序,有一个前提,就是程序分为两部分,从bootloader启动,跳转到APP部分。

分三步:

1.APP从串口或者网络接收升级的bin文件,然后先放在一个地方。这个地方可以是flash某个位置,也可以是norflash。

2.完成后,校验一下整段程序CRC看是否正确。若正确则重启。

3.bootloader把这个bin文件复制到APP的位置上,覆盖原先的APP,跳转到APP位置上。

 

U盘升级功能就类似这种:

1.bootloader检测到U盘连接,然后查找U盘中有bin文件。若有则进行第二步,若没有则直接跳转到APP。

2.可以是触屏选择要升级的bin,也可以是默认升级某文件名的bin。校验正确后,放入到除APP外的某处flash或norflash中。

3.第二步成功后,再把该处bin覆盖到APP处,并跳转到APP处。

 

那么需要注意什么呢?

1.bootloader的配置,分配给bootloader 0x4000大小

2.APP程序的配置,接着bootloader的位置,分配给0xE000大小

3.修改APP的中断向量表偏移量

 

再复杂一点,如果是要给从设备进行升级,那么思路是一样的。先把从设备的升级bin放在主设备的一个地方,然后再分次传输给从设备,而从设备也要先放在一个地方,再用从设备的bootloader去具体升级了。

结语:

IAP看起来很简单,但是落实到细节处并不简单。由于涉及到程序升级,如果覆盖APP的是错误的代码,那么设备就废了,这就是重大事故了。所以对IAP过程的安全把控是非常严的。

难点在于流程需要严丝合缝,主板如何分辨是给自己升级的程序还是从设备升级的程序?FLASH如何划分?中间断了怎么办?CRC校验失败怎么办?bootloader跳转后程序卡死怎么办?

采用USB驱动的过程流处理方式处理从设备IAP升级,在每个过程结束后都保存处理结果至铁电中,因此,掉电、升级过程中断、设备重启后都能断点续传。

因为是项目使用,故不分享具体代码,请谅解,但仍然欢迎讨论。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F407是一款32位ARM Cortex-M4微控制器,具有丰富的外设和高性能特点。远程升级程序IAP(In-Application Programming)是指通过网络或其他通信方式对STM32F407的固件进行无需连接到电脑等设备的在线升级实现STM32F407远程升级程序IAP的过程如下: 1. 确定通信接口:选择合适的通信接口,如以太网、Wi-Fi、蓝牙等。这些通信接口可以连接到远程服务器或其他设备。 2. 设计升级文件格式:设计一种合适的文件格式,该格式应包含用于升级的必要信息,如固件版本号、校验和等。一般采用二进制文件格式。 3. 编写升级程序:在STM32F407中添加相应的升级功能,包括接收升级文件、验证升级文件的完整性、更新固件等。 4. 配置通信协议:根据所选通信接口,配置相应的通信协议,实现STM32F407远程服务器或其他设备之间的通信。 5. 通信连接与数据传输:建立通信连接,将升级文件通过所选的通信接口传输到STM32F407。在传输过程中要保证数据的完整性和安全性。 6. 校验升级文件:在STM32F407中对接收到的升级文件进行校验,确保文件的完整性和正确性。可以使用CRC校验等方法。 7. 更新固件:如果校验通过,将升级文件中的固件保存到STM32F407的存储器中,覆盖原有固件。在更新期间需要保证固件的一致性和可靠性。 8. 重启系统:在固件更新完成后,对STM32F407进行重启操作,使新的固件生效。 STM32F407远程升级程序IAP可以方便快捷地对设备进行固件更新,提高了系统的可维护性和可扩展性。同时,需要注意网络安全和数据传输的可靠性,确保升级过程的稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值