OTA 技术框架-AES加密-无感升级-固件备份 bootloader软件升级
本文介绍当前主流OTA固件升级的技术框架,功能:无感升级、固件备份、看门狗钩子APP检验,描述了硬件架构、软件架构、APP软件流程、BOOT软件流程等内容。
·

摘要
本文介绍当前主流OTA固件升级的技术框架,功能:无感升级、固件备份、看门狗钩子APP检验,描述了硬件架构、软件架构、APP软件流程、BOOT软件流程等内容。
硬件架构
需要用到的主要硬件设施
- 主芯片,待升级的硬件
- 片外flash芯片,用来存储新固件和备份固件
- EEPROM芯片,用于存储升级相关过程信息
- 无线通讯模块(WiFi或蓝牙),用于无线传输升级数据
- GUI,控制升级开始与停止

软件架构
用于升级部分的软件架构
- 升级管理,控制升级过程的状态、流程
- 中间件
- SFUD,一个开源的轻量级 串行 Flash 通用驱动库(Serial Flash Universal Driver),专为嵌入式系统设计,用于操作常见的Flash 芯片。支持自动识别 Flash 芯片型号、读写操作、擦除操作、以及 Flash 的统一接口管理。
- Ymodem,一种串口文件传输协议,广泛用于嵌入式系统中通过串口(如 RS232、USB 虚拟串口等)进行固件升级(IAP)或文件传输,支持批量传输、文件名传输、文件大小传输等功能,适用于需要从 PC 向嵌入式设备发送固件、配置文件等场景。
- BSP,UART、SPI等驱动

APP软件流程
APP中固件升级流程,主要用于无感升级中的固件下载,具体过程见流程图
BOOT软件流程
主要用于固件的下载、解密、固件备份、固件检验等,其主要过程见流程图
内容补充
APP合法性检验机制
- CRC校验,使用CRC校验,对固件每包数据进行校验
- 看门狗钩子式APP校验,主要思路:新固件升级后,首次运行前,在boot中开启看门狗,跳转APP,APP运行修改存储区某特定区域数据,然后看门狗导致复位,重新恢复到boot状态,boot再次检查数据是否被修改,如果被修改则认为APP正常(大概率),如果没有修改成功,则认为APP异常(例如APP卡死)。这种方式就相当于向黑暗处扔个钩子,看门狗时间到后看钩子带回来的数据是否正常。
其他知识补充
AES密匙
固件加密的密匙可以由几部分构成:芯片UID+产品生产编号+随机号
- 芯片UID:将软件与硬件绑定,使软件盗版者无法将软件复制到复刻的板子上运行,检查到UID异常,可自毁程序。UID的获取不用手动挨个读取,方法见后续文章。
- 设备编号:使每个设备的密匙不同,软件中记录设备编号信息,配合其他功能检验该套软件及硬件是否属于某设备,防止盗用者将软件和硬件整体移动到某设备上。
- 随机编号:使用随机编号进一步加强密匙加密强度,高级大批量设备可以用此,以防止代工厂悄悄复制多下载程序,具体怎么实现,下回见分晓。
程序加密的攻击与防御
没有绝对可靠的程序防御措施,各种加密仅仅能使盗版更加麻烦,防止顺手牵羊。例如做了AES加密传输,到APP升级好后,攻击者可用一小段程序替代boot,该程序可以将所有flash内容从串口中打印出,前面种种加密,在各种攻击手段下也会显得苍白无力。
更多推荐



所有评论(0)