1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ZLCH579M/CH579M/myota.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

<iframe frameborder="0" height="1500" name="ifd" scrolling="auto" src="https://mnifdv.cn/resource/cnblogs/ZLCH579M/CH579M/myota.html" width="100%"></iframe>

 

说明

这节测试一下CH579通过自带以太网使用http远程下载升级单片机程序

 

我已经把固件文件放在了自己的服务器上

默认使用本人提供的下载路径测试

文件路径:  网站根目录->ota->hardware->CH579MBK

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

user_crc.bin: 是固件程序文件.

该固件程序文件并不是直接可以运行的文件

里面的数据每隔128字节后面增加2位CRC校验位

单片机下载以后每隔130字节校验一下数据,然后把前128字节写入Flash.

加入CRC校验让升级变的稳定可靠.

 

 

info.txt文件内容:

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

version:0.0.1  云端固件程序版本

 url:http://mnif.cn/ota/hardware/CH579MBK/user_crc.bin   固件程序下载地址

 

"info":"1.解决了部分BUG  2.优化了部分程序"       使用APP控制升级时,APP的提示信息.

 

升级过程:

整体上就是使用TCP连接Web服务器,然后发送相应的GET指令获取文件!

用户程序里面每隔一定时间控制网络模块使用http的GET指令获取云端info.txt文件

然后从文件里面获取服务器里面的固件程序版本和固件程序下载地址等信息

如果与自身版本号对比不一致,就把固件程序下载地址写入flash,然后设置更新标志,重启,

重启执行BootLoader以后,BootLoader程序检测到更新标志,则提取固件下载的地址,

然后使用http下载程序文件,把程序文件写入flash,完成升级.

 

备份升级流程图

 1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

提前说明 

学习这节之前用户务必已经亲自测试学习了下面的章节

CH579不带中断地址偏移,是依靠最底层程序中断函数转过去的.

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

测试

1.使用网线连接路由器或者交换机

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

2.打开串口调试助手打印串口日志

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

3.一共有三个程序

base是负责转中断的程序(这个下载一次就可以)

BootLoader程序负责下载升级和跳转执行用户程序

UserApp是咱自己的用户程序

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

4.首先下载base程序

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

5.然后下载BootLoader程序

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

5.串口日志

BootLoader程序打印如下

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

6.最后下载UserApp程序

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

7.观察日志,说明执行流程

开始运行用户程序,默认提供的用户程序设置的程序版本是0.0.0

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

用户程序控制模组连接服务器,使用get指令获取获取服务器上的固件信息文件 info.txt

检测到版本不一致以后,把获取的url存储到flash,设置更新标志,重启.

重启之后BootLoader提取url

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

BootLoader发送get指令获取程序固件

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

升级过程中会校验数据

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

升级完成以后,运行新下载的程序.

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

用户程序每隔一段时间控制模组连接服务器,使用get指令获取获取服务器上的固件信息文件 info.txt

现在程序版本和上面的是一致的,所以不需要更新

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

应用到自己的服务器

1,首先确定好程序文件在服务器的路径

关于本人服务器文件夹解释:(自己随意就好,最后的文件夹命名建议使用产品的型号)

html:网站根目录

ota: ota升级

hardware : 硬件程序

CH579MBK: 作为产品的型号(根据自己的产品型号修改)

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

我把固件放到了里面那么固件程序下载地址为:

http://服务器IP地址/ota/hardware/CH579MBK/user_crc.bin

 

那么固件信息的下载地址为:

http://服务器IP地址/ota/hardware/CH579MBK/info.txt

 

 

2.修改 用户程序 的 IAP.C 文件

提示:我把它们存储在程序bin文件的1024字节倍数的位置是为了BootLoader下载的时候便于提取这些数据;

1.产品型号(我设置的为CH579MBK)

2.修改固件程序版本(可随意指定,我设置的为0.0.2)

3.修改记录云端固件信息文件下载地址(我的为:http://mnif.cn/ota/hardware/CH579MBK/info.txt)

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

 

3.修改BootLoader程序 的 IAP.c,设置下产品型号和默认的固件程序下载地址

注意:BootLoader里面的产品型号要和用户里面的一样!!!!

BootLoader程序下载的时候会判断这个型号一不一致

 

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

4.编译用户程序

会在工程目录的bin文件夹生成 user.bin文件

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

5.打开OTA Tools上位机软件

 1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

6.按照红框选择配置

 1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

7.选择用户程序生成的 bin文件

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

 

8.点击 生成固件

 1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

9.将在user.bin目录生成user_crc.bin文件

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

10.user.bin和user_crc.bin文件的区别

user_crc.bin文件是在user.bin的基础上增加了CRC校验数据

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

改写size,把真实的文件大小填写到bin文件

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

11.把生成的user_crc.bin文件拷贝到服务器

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

13.还差一个info.txt文件

我准备了一个模板

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

14.修改版本号(和用户程序里面设置的一样)

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

15.修改固件程序下载地址(和服务器上面的保持一致)

 1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

16.最后的提示信息不需要更改,当前用不到

 1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

17.把info.txt文件也拷贝到服务器,然后按照一开始的步骤测试即可

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

小总结

远程升级单片机程序其实就是使用模组以TCP方式连接Web服务器,

然后给TCP服务器发数据,数据格式是GET指令.

服务器接收到指令以后会下发文件给模组,模组通过串口把数据发给单片机,

单片机接收到数据以后写到flash,最后加载运行.

 

 

关于Flash分配调整

1.单片机的用户应用程序Flash是从0地址开始的,总共250KB

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

2.现在是把初始地址的1K给了base程序使用

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

3.其余的空间分配可以看BootLoader或者用户程序里的iap_interface头文件

FLASH_MCU_BASE 1*1024      base程序用了1K

FLASH_MCU_SIZE 249             base程序用了1K,总共250K,所以还剩249K

FLASH_SECTOR_SIZE 512      Flash每次擦除的最小空间

FLASH_IAP_SIZE 45                 给BootLoader分配了45K

FLASH_UPDATE_SIZE 1          更新的时候需要使用Flash记录一些信息,分配了1K,这个最低是1K

FLASH_USERDATA_SIZE 2     用户如果需要存储自己的数据(KB),可以根据自己需要存储的数据量设置这个

设置好以上空间以后,运行区和备份区再平分其余的空间

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

3.咱们做项目的时候只要写好了BootLoader就不会再大动了,所以一般写完BootLoader以后,

看下BootLoader使用了多少空间,然后设置一下BootLoader空间

比如现在的BootLoader使用了41KB

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

 

4.假设我设置BootLoader占用45KB(预留些,防止以后添加程序), 首先呢在BootLoader程序里面

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

最一开始的1K空间给了base程序, BootLoader是从第1K地址开始运行的, 所以是 0x400

BootLoader占用45KB所以是0x5000

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

5.然后重新下载base程序 和 BootLoader程序

观察打印的日志

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

6.修改base里面的用户程序运行地址为0xb800

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

7.配置UserApp用户程序的iap_interface.h里面的flash分配内容,要和BootLoader里面的保持一样

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

9.配置UserApp用户程序运行地址和占用空间

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

9.flash的分配调整就说完了

注意:

flash分配地址在产品投入使用之前就是设置好的,以后就不能动了哈.

大家伙一定要给BootLoader留够足够的空间哈.预防后期需要在BootLoader里面开发其它程序功能.

 

 

 

关于升级底层包

1.升级底层包是下面两个文件

iap是控制着升级流程的文件,具体下面会说明该文件控制着哪些功能.

iap_interface是接口文件, 升级过程中最终都是调用这里面的程序.

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

2,关于升级底层包的后期维护,优化

维护优化只针对于 iap文件, 用户只需要把iap文件替换即可! (用户可以自行更改其内部bug, 但是推荐用户保持IAP文件为最新)

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

3. iap是控制着升级流程的文件

在BootLoader里面可以设置型号 和 默认的升级地址

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

在用户程序里面可以设置型号 , 程序版本号 和 固件信息文件下载地址

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

BootLoader里面的iap.h 文件里面 还可以设置升级过程中需要如何去下载,设置多大的缓存区

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

4. iap_interface是接口文件

用户在移植的时候需要根据自己的单片机实现内部的接口,只要完成里面的接口就完成了升级程序

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

4.提示

在后面的章节中会单独拿出一节来写移植到别的单片机的具体流程.

还是那句话: 代码不仅是给别人看的,更是给别人用的.

代码只有便于别人广泛的去应用才是真正发挥它的价值.

 

 

 

用户程序(UserAPP)说明

1.解析下info.txt下载路径(服务器上记录固件信息的文件)

做这个程序是为省去用户解析的繁琐.

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

执行解析之后:

IAPStructValue.IP = mnif.cn;

IAPStructValue.Port = 80;

IAPStructValue.Path = /ota/hardware/CH579MBK/info.txt

 

4.处理更新(这个程序需要在认为用户程序没有问题的时候在用户程序里面执行一下)

解释:

BootLoader更新程序的时候会设置一些更新状态;用户程序需要调用一下这个函数清除更新状态.

如果用户程序不清除更新状态,那么一旦程序重启以后BootLoader检查到更新状态以后会自行回滚程序.

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

5.控制模组获取服务器上记录固件信息的文件

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

6.解析info.txt文件内容

如果版本号不一样,提取和存储url然后设置升级标志,重启.

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

7,补充:如果编译用户程序出现下面的警告

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

其实是这个地方导致的

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

为了便于BootLoader程序提取用户程序bin文件里面的型号,把型号存储在了偏移1024字节的位置.

设置的这个字符串存储的位置影响到了芯片本身默认分配一些数组的位置.就会报上面的警告.

貌似不影响什么...

 

 

 

BootLoader程序说明

1.查看IAPInit函数

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

2.获取存储的固件下载的url,并解析下url

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

3.如果有更新标志,则备份下用户程序

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

4.如果没有更新标志,则查看下更新状态

如果状态是更新有错误,则执行回滚,如果检测到没有备份的程序,就重新执行升级

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

5.如果更新状态是0x01,就设置更新状态为0xFE

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

7.控制模组连接TCP服务器(Web服务器)

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

 1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

  

8.发送get指令获取程序文件

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

8.在TCP接收数据函数里面把固件数据写入缓存

单片机是通过串口和模组通信,所以在串口中断里面接收

底层解析什么的都做好了,自动解析以后存储到缓存里面

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

9.从缓存取数据,并写入flash

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

11,如果接收到相应的文件个数或者超过一段时间没有接收到数据

设置 IAPStructValue.ReadDataEndFlag = 1;认为接收完成

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

12,判断接收完成之后做各种判断

如果确实接收完了,则写入0x01状态,重启.

如果有错误,则尝试重新下载.

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

 

13,如果是程序文件下载完成以后重启,重启以后检查到更新状态是0x01会设置更新状态为0XFE

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

14,然后加载运行用户程序

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 

15,超过一段时间没有接收到数据,是在这里做的判断

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

 1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

 

16,客户可以在IAP.h修改默认的超时时间

整体运行超时是BootLoader一运行就一直累加的的定时,超过时间就会控制程序重启

1-CH579M程序升级篇OTA(自建物联网平台)-CH579M使用自带以太网通过http远程下载升级单片机程序(单片机程序轮训检查更新)

 

上一篇:魅蓝note2解锁bootloader教程


下一篇:readelf的使用