4.处理更新(这个程序需要在认为用户程序没有问题的时候在用户程序里面执行一下)
BootLoader更新程序的时候会设置一些更新状态;用户程序需要调用一下这个函数清除更新状态.
如果用户程序不清除更新状态,那么一旦程序重启以后BootLoader检查到更新状态以后会自行回滚程序.
5.控制模组获取服务器上记录固件信息的文件
如果版本号不一样,提取和存储url然后设置升级标志,重启.
7,补充:如果编译用户程序出现下面的警告
为了便于BootLoader程序提取用户程序bin文件里面的型号,把型号存储在了偏移1024字节的位置.
设置的这个字符串存储的位置影响到了芯片本身默认分配一些数组的位置.就会报上面的警告.
2.获取存储的固件下载的url,并解析下url
3.如果有更新标志,则备份下用户程序
4.如果没有更新标志,则查看下更新状态
如果状态是更新有错误,则执行回滚,如果检测到没有备份的程序,就重新执行升级
5.如果更新状态是0x01,就设置更新状态为0xFE
7.控制模组连接TCP服务器(Web服务器)
8.发送get指令获取程序文件
8.在TCP接收数据函数里面把固件数据写入缓存
单片机是通过串口和模组通信,所以在串口中断里面接收
底层解析什么的都做好了,自动解析以后存储到缓存里面
9.从缓存取数据,并写入flash
11,如果接收到相应的文件个数或者超过一段时间没有接收到数据
12,判断接收完成之后做各种判断
如果确实接收完了,则写入0x01状态,重启.
如果有错误,则尝试重新下载.
13,如果是程序文件下载完成以后重启,重启以后检查到更新状态是0x01会设置更新状态为0XFE
14,然后加载运行用户程序
15,超过一段时间没有接收到数据,是在这里做的判断
16,客户可以在IAP.h修改默认的超时时间
整体运行超时是BootLoader一运行就一直累加的的定时,超过时间就会控制程序重启
}