当前位置: 首页 > news >正文

单片机OTA升级:高效无线更新的秘密

目录

一、概念与意义

二、工作原理

1.服务器端:

2.设备端:

三、流程步骤

1.OTA 升级过程概述

2.APP 阶段

(一)下载固件到A区域

(二)计算校验和与配置 Flag

3.Bootloader 阶段

(一)检查Flag值

(二)解密与转移固件

(三)备份当前 APP

(四)搬移固件到片上 Flash

(五)跳转与确认

四、总结

五、应用场景

六、优势与局限性

1.优势:

2.局限性:

七、注意事项


一、概念与意义

基于单片机的OTA(Over-the-Air)升级是指通过无线通信的方式,对单片机中的程序或数据进行更新,而无需将单片机从设备中拆卸下来进行有线连接的升级方式。

其意义在于:

1.方便快捷:可以在不接触硬件的情况下实现程序更新,大大提高了升级的效率。

2.降低本:减少了因人工拆卸和重新安装单片机所带来的时间和人力成本。

3.实时更新:可以及时修复程序中的漏洞、添加新功能,提高设备的性能和稳定性。

二、工作原理

1.服务器端:

-开发人员在服务器上准备好新的程序固件。

-服务器将固件进行打包,并通过无线通信网络(如Wi-Fi、蓝牙、GPRS等)推送给设备。

2.设备端:

-单片机通过无线模块接收服务器推送的固件更新信息。

-对接收的固件进行校验,确保其完整性和正确性。

-将新固件写入到特定的存储区域。

-完成写入后,重新启动单片机,使新的程序生效。

三、流程步骤

以下是对上述OTA升级过程的详细分析:

1.OTA 升级过程概述

OTA 升级在带有外挂flash(W25Q64)和EEPROM的系统中进行,利用两个512KB区域(A区域和B区域)实

现安全可靠的固件升级。整个升级过程分为APP阶段和Bootloader阶段,确保在不影响设备正常使用的情况下完

成升级,并提供备份和恢复机制。

2.APP 阶段

(一)下载固件到A区域

1.在APP中的一个线程进行OTA操作,用户可以在手表等设备正常使用的同时进行后台升级,提高了用户体验的

便利性。

2.首先将固件下载到外挂flash的A区域。这个过程需要确保下载的稳定性和完整性,可以采用断点续传等技术来

应对网络不稳定的情况。

(二)计算校验和与配置 Flag

1.下载完成后,计算固件的校验和,以确认固件的完整性。校验和算法可以选择常见的CRC(循环冗余校验)等,

确保固件在传输过程中没有被损坏或篡改。

2.如果校验和正确,表明固件完整,将升级的Flag(存储在EEPROM上)进行配置,以通知 Bootloader 阶段有完

整的固件可供升级。

结果就是:外挂Flash的A区域暂存了最新接受的固件包,注意此时的固件包是被加密的。此时如果通过了固件的完

整性验证,则会对标志位进行置位

3.Bootloader 阶段

(一)检查Flag值

1.在Bootloader 启动过程中,首先检查EEPROM上的Flag值。如果Flag 值表示固件已经完整地存放在外部

Flash的A区域,那么Bootloader 开始执行升级操作。

2.这个检查过程确保了只有在有合法的升级请求时才进行后续的复杂操作,提高了系统的稳定性和安全性。

(二)解密与转移固件

1.Bootloader将A区域的固件一部分一部分地解密并放到B区域。由于SRAM一般很小,不可能装下一整个固

件,所以采用每次处理1K的方式,与Flash的擦除单位相匹配,提高了操作的效率和灵活性。

2.这个过程需要确保解密算法的正确性和安全性,防止固件被恶意篡改或窃取。

(三)备份当前 APP

1.将当前内部正常运行的APP存入A区域,覆盖掉原来的A区域,作为备份区域。这样在升级出现问题时,可以

恢复到之前的版本,提高了系统的可靠性和可恢复性。

2.备份过程需要确保数据的完整性和准确性,避免备份数据损坏导致无法恢复。

(四)搬移固件到片上 Flash

1.接着将B区域的已解密固件搬移到STM32的片上Flash的APP区域。这个过程需要确保数据的正确传输和存

储,避免出现数据丢失或错误。

2.搬移完成后,将Flag修改,表明可升级的固件已经迁移到内部Flash,防止下次重启再次进行不必要的迁移操

作。

(五)跳转与确认

1.最后,进行跳转至片上flash的APP区域,进入APP后,再次修改Flag,确认已经启动成功。这个过程确保了

系统能够正常启动并运行新的固件版本。

2.跳转和确认过程需要确保系统的稳定性和正确性,避免出现启动失败或异常情况。

复位后程序首先执行的是BootLoader程序,所以想要实现app切换需要进行一次复位。

在BootLoader中会检查外挂Flash中的标志位,若标志位表明当前有可更新的固件则BootLoader会执行固件升级的

逻辑。此时首要的任务是将外挂Flash中A区域的加密固件解密,将解密后的固件转存到外挂Flash的B区域中。

需要注意两点:

  1. 1.固件较大、SRAM内存受限,所以是分段取出A区域中的固件放入SRAM中进行解密的,每次处理1K正好和Flash

    的擦除单位匹配。

    2.这些逻辑都是BootLoader程序的逻辑,也就是说当前运行的是BootLoader程序,并非片上Flash中的app

    结果为:

    现在就可以将解密后的最新固件加载到片上Flash中了。另外,为了防止最新固件无法正常运行,还需要做一个版本

    回溯机制,即将当前片上Flash中的可正常运行的app暂存起来,存储到已完成使命的外挂Flash中A区域。

    四、总结

    整个OTA升级过程设计合理,充分考虑了系统的稳定性、安全性、可靠性和可恢复性。通过利用外挂Flash的两

    个区域、EEPROM和Bootloader的协同工作,实现了在不影响设备正常使用的情况下进行安全可靠的固件升级。

    同时,采用分块处理和备份机制,提高了升级过程的灵活性和可恢复性,为设备的持续优化和改进提供了有力支

    持。

    五、应用场景

    1.智能家居设备:如智能插座、智能灯泡、智能门锁等,可以通过OTA升级不断添加新功能,提高用户体验。

    2.工业自动化设备:可以远程更新程序,提高设备的稳定性和可靠性,减少维护成本。

    3.医疗设备:可以及时修复程序中的漏洞,确保设备的安全性和准确性。

    4.物联网设备:可以实现大规模设备的远程升级,提高管理效率。

    六、优势与局限性

    1.优势:

    -灵活性高:可以随时进行升级,不受时间和地点的限制。

    -可扩展性强:可以方便地添加新功能和修复漏洞。

    -提高设备的使用寿命:通过不断升级,可以使设备始终保持最新的性能和功能。

    2.局限性:

    -依赖无线通信:如果无线通信不稳定,可能会导致升级失败。

    -安全风险:如果固件被篡改或恶意攻击,可能会导致设备故障或安全问题。

    -对存储容量要求高:需要一定的存储容量来存储新固件和备份旧固件。

    七、注意事项

    1.确保无线通信的稳定性:在进行OTA升级时,要确保设备与服务器之间的无线通信稳定,避免因通信中断导致

    升级失败。

    2.校验固件的完整性和正确性:在下载和写入固件之前,要对固件进行严格的校验,确保其完整性和正确性,防止

    因固件损坏导致设备故障。

    3.备份旧固件:在写入新固件之前,最好备份旧固件,以便在升级失败时可以恢复到旧版本。

    4.注意安全问题:要采取一定的安全措施,如加密通信、验证数字签名等,防止固件被篡改或恶意攻击。

    5.测试升级过程:在实际应用中,要对OTA升级过程进行充分的测试,确保升级的稳定性和可靠性。

    http://www.dtcms.com/a/423630.html

    相关文章:

  2. 社区平安建设基层网站重庆企业网站建设官网
  3. 嵌入式学习笔记4.STM32中断系统及外部中断EXTI
  4. 手机网站模板大全上海市公共招聘网官网
  5. Python爬虫实战:获取国家天文数据中心公开的观测信息与数据分析
  6. 中核西北建设集团网站苏州手机社区网站建设
  7. 网站建设皿金手指谷哥壹柒小米发布会2022
  8. 实战:用Scrapy框架搭建第一个爬虫项目
  9. Kubernetes 的本质:一个以 API 为中心的“元操作系统”
  10. 网站设计的公司选哪家陕西建设网官网登录
  11. 基于EasyExcel、FastExcel封装spring boot starter
  12. Arpg第五节——方法
  13. 太原网站搭建推广服装设计网站模板下载
  14. 人工智能-机器学习day3
  15. 第四部分:VTK常用类详解(第113章 vtkTensorGlyph张量符号化类)
  16. 中国平安官方网站心态建设课件做网站的学校
  17. 翻译插件分享
  18. 网页设计广州网站购物型网站用dw做
  19. 水平扩展与垂直扩展
  20. React基础到进阶
  21. cvat使用
  22. 东莞小学网站建设空间设计说明怎么写
  23. 万网网站后台管理系统网站策划招聘
  24. 网站首页静态化代码网站建设架构选型
  25. Stable Diffusion DALL-E Imagen背后共同套路
  26. 网上商城html模板无锡seo关键词排名
  27. 天津 网站策划湛江专门做网站
  28. 【Linux】进程的概念和状态
  29. 【完整源码+数据集+部署教程】无人机场景城市环境图像分割系统: yolov8-seg-timm
  30. 鸿蒙NEXT WLAN服务开发指南:从STA模式到多设备联网实战
  31. 网站建设开票项目是什么意思昭通做网站