欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

备份远程升级程序 - 2. 升级程序

最编程 2024-10-15 15:49:17
...
  1. 升级方案是根据具体的硬件资源来确定
  2. 使用的芯片内部128K FLASH
  3. 其中BOOTloader为16K空间,APP为102K空间
  4. 外部存储器为W25Q16,分为两个区域,第一个区域为运行APP的备份区,第二个区域为升级固件的下载区
  5. BOOT的功能简述:
  6. 上电判断是否需要升级(1)不升级跳转APP,
  7. (2)升级先判断下载区的升级信息对不对,正确判断下载区的版本和运行区版本
  8. 如果下载区版本号高,第一步先把运行区的固件备份,第二步把下载区的固件搬运到运行区
  9. 第三步校验后开始运行
  10. APP的功能简述:
  11. 业务流程上报完成之后,请求一下最新的版本
  12. 发现线上有新的版本,请求平台开始升级
  13. 平台回复允许升级之后,开始下载固件代码
  14. 下载完成之后,写入固件升级的标志位,写入升级固件的信息
  15. 然后复位,等待BOOTloader处理
    问题1:
    下载固件方式,效率如何,
    答:使用TCP方式下载固件,固件分包大小和下载间隔做了测试,最终使用分包长度256字节和500毫秒做出平衡
    问题2:丢包率高吗?丢包如何处理
    答:100次样本实测440包丢包2-3包,可以说在100%以内,(TCP粘包的知识)
    丢包个数如果大于设定的值,那就重新开始一轮,这样比较快
    丢包个数如果小于设定的值,那就一包一包的开始请求补包
    问题3:此种方案缺点?
    答:下载固件的时间长,理论上需要4分钟左右时间,加上信号干扰等丢包因素,
    如果备份区的固件损坏,并且下载区固件也损坏呢,这时候需要备份两个固件了,
    但是实际情况硬件不可能这么多资源供你使用
    只有代码写的好,boot加单app也是游刃有余

推荐阅读