17-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(单片机升级程序部分说明)

https://www.cnblogs.com/yangfengwu/p/10891914.html

为了让大家会用我写的程序,而且敢用,所以我详细介绍一下我的单片机程序流程

这里只说明稳定精简版的STM32程序,因为所有的都是在此基础上增加的.

很基础的东西自行修炼:

空闲接收数据: http://www.cnblogs.com/yangfengwu/p/8912072.html

环形队列:        https://www.cnblogs.com/yangfengwu/p/6822984.html 

单片机IAP:     https://www.cnblogs.com/yangfengwu/p/6921832.html

1-2节服务器:  https://www.cnblogs.com/yangfengwu/category/1383497.html  

以这一节为例:我只是感觉这一节应该通用性比较强,AT指令版控制升级,而且回复的数据需要剔除网络模块自身增加的数据

https://www.cnblogs.com/yangfengwu/p/10888037.html

注:

程序启动先检查上次更新的状态:

上次刚写完用户程序;写入数据头地址不对;数据接收有误;用户程序没运行起来

 

 关于那个0x04:

更新完成是0x01,然后写入0x04,更新完成会执行咱更新的用户程序,咱用户程序里面再把这个标志修改为0x00

如果执行了

 到下面就会进入

 自己的模块已经链接上TCP了,现在就是发http协议,下载数据

 

 然后根据http获取的云端版本号,判断是不是需要升级

 然后看串口接收:

我写的串口接收就是确定接收到HTTP的头数据,同时解析出来HTTP发过来的数据个数

然后判断如果 Status == 2,下次的数据就写入环形队列

 

 如果自己的模块是http发过来什么就打印什么,直接可以

 如果模块自行添加了数据就需要剔除(只要保证往环形队列里面写的是用户程序就可以)

 在往环形队列里面写的时候,主函数里面同时读出来往Flash里面写

 写完,修改写的状态,复位重启

其实需要用户修改的只是

 

还有一点 ,64K到256K(不包括)用此程序没有问题,,256K及其以上的还没测试,正在做一块STM32F103RET6的板子,512KB Flash  将用这块板子测试

我用的64K的

可以自行更改,

 我为了大家方便修改用户程序

大家修改完,IAP程序会打印一下两个用户程序的配置

 然后配置下

只看一下用户程序1

 

 用户程序生成BIN就可以了,然后放到云端

升级篇就先到这里.....学海无涯.

https://www.cnblogs.com/yangfengwu/p/10991907.html

猜你喜欢

转载自blog.csdn.net/qq_14941407/article/details/93321633