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

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

你可能感兴趣的:(GPRS)