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

本文探讨了基于GPRS模组的单片机固件远程升级方案,对比了自定义协议和HTTP协议传输两种方式,最终选择了简化服务器操作的HTTP协议,并详细介绍了采用DMA方式处理串口数据,确保在写Flash过程中不发生字节丢失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

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

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

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

二、Flash分配

                                      

三、串口数据处理方式

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

具体可参考:https://blog.youkuaiyun.com/zn2016/article/details/79049687

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

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值