STM32基于GPRS模组使用HTTP协议单片机固件在线升级(IAP)

一、前言

    最近有朋友让我帮忙开发基于GPRS模组的单片机固件在线升级,这样的远程升级就两种方式:

   1.自己定义协议,服务器端进行bin文件拆包,一包包下发。优点:可以每包一校验还可以断点续传,不需要考虑Flash学入占用的时间,缺点:需要服务器端和节点设备都要进行协议解析。

  2.基于HTTP协议进行文件传输。优点:不需要服务器端进行过多的操作,只需要下发URL链接即可。缺点:不能断点续传,只能一整包下发,而且bin文件是一次性下发,串口既要缓存还要进行写入Flash操作,STM32在读写Flash时不能进行取指操作,处理不当会发生字节丢失。
在这我采用的是第2中方式,主要是简化服务器端的操作。

二、Flash分配

                                      

三、串口数据处理方式

    由于升级包(40K)bin 文件是一次发送到单片机的,单片机进行写Flash时不能进行取指,所以串口中断无法进行。在这采用DMA方式。DMA加缓冲区可以很好的解决这个问题

具体可参考:https://blog.csdn.net/zn2016/article/details/79049687

具体功能已经全部实现,代码不方便贴出,如果有项目需求可以留言

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
基于STM32的Bootloader远程固件升级IAP)系统是一种用于更新嵌入式设备固件的解决方案。以下是关于该系统的300字中文回答。 基于STM32的Bootloader远程固件升级系统,通过在设备上安装一个独立的Bootloader程序,实现了远程固件升级的功能。这意味着无需物理接触设备,可以通过网络或其他通信方式,远程更新设备的固件。 这个系统主要有以下几个关键组成部分: 1. Bootloader程序:这是一个低级别的固件,直接烧录到设备的Flash存储器中。该Bootloader程序具有读取、擦除和写入设备Flash存储器的能力,能够启动设备并跳转到用户固件。 2. 通信接口:Bootloader和远程固件升级软件之间的通信是通过串口、以太网、无线通信或其他通信接口实现的。远程固件升级软件通过这个接口与设备上的Bootloader进行通信,发送固件升级命令和数据。 3. 固件升级算法:设备上的Bootloader使用一种特殊的算法来确保固件升级的正确性和完整性。通常,这些算法会检查固件的完整性,验证固件的签名,并在升级过程中进行数据校验,以确保升级的正确性。 整个远程固件升级的过程如下: 1. 远程固件升级软件通过通信接口与设备上的Bootloader建立连接。 2. 远程固件升级软件发送固件升级命令和数据给Bootloader。 3. Bootloader接收固件升级命令和数据后,根据固件升级算法进行验证和校验。 4. 如果固件升级验证和校验通过,Bootloader将新的固件写入设备的Flash存储器,并更新设备的固件版本号。 5. Bootloader重新启动设备,并跳转到新的固件。 基于STM32的Bootloader远程固件升级系统为嵌入式设备的固件升级提供了方便和灵活性。它可以减少固件升级的时间和成本,并提供远程设备管理的能力。同时,它还能增加设备的安全性,确保固件升级的完整性和正确性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值