首页 新闻 工控搜 论坛 厂商论坛 产品 方案 厂商 人才 文摘 下载 展览
中华工控网首页
  P L C | 变频器与传动 | 传感器 | 现场检测仪表 | 工控软件 | 人机界面 | 运动控制
  D C S | 工业以太网 | 现场总线 | 显示调节仪表 | 数据采集 | 数传测控 | 工业安全
  电 源 | 嵌入式系统 | PC based | 机柜箱体壳体 | 低压电器 | 机器视觉
单片机控制板OTA远程升级的Bootloader设计与实践
苏州永节电子科技有限公司
收藏本文     查看收藏

越来越多的工业和家电控制板在出厂后还需要远程升级:家电类要修bug、加新功能;工业设备部署在现场,拆机升级成本高。OTA(Over-The-Air)远程升级已经从高端IoT产品下放到普通单片机控制板。本文分享一套在STM32/GD32等Cortex-M MCU上验证过的Bootloader+OTA方案。

一、为什么必须做双区备份

最朴素的做法是Bootloader收到新固件后,直接写正在运行的App所在Flash。一旦传输中断、掉电、或者新固件本身有bug,板子就变砖了,必须拆机用仿真器重刷。工业现场这种事故的代价远高于省下来的Flash成本。

更稳妥的做法是双区(A/B partition):Flash划分为Bootloader区、A区、B区、参数区四个部分。Bootloader启动时读参数区里的"当前运行区"标志,跳转到对应分区启动新App。下载新固件时写到备用分区,写完校验通过后,把"待启动区"标志切到备用分区,下次重启就切到新固件;如果新固件跑飞、或者Bootloader在规定时间内没收到App发的"启动成功"心跳,就自动回滚到旧分区。这样任何一步断电都不会变砖。

二、Bootloader最小职责

Bootloader本身要做到两件事:上电判断是否需要升级;需要升级时通过通信通道接收固件并写入备用分区。它不做业务、不接传感器、不处理复杂协议,代码越小越可靠。

启动流程建议:上电先关外设→读参数区的升级标志和CRC→如果标志要求升级,进入接收模式→通过UART/CAN/4G/WiFi接收固件包→按页写入备用Flash→写完算整包CRC和签名→校验通过则切换启动标志,否则保留旧标志→然后跳转到用户App。

三、固件分包与校验

一份完整固件动辄几十到几百KB,通过不稳定的无线链路一次性传完不现实。必须分包传输:每包512字节或1KB,包头包含总包数、包序号、目标地址、包CRC;接收端按序号写Flash,缺包就请求重传。整包传完后Bootloader再算一次全片CRC-32或者SHA-256,和云端下发的固件摘要对比,不一致就丢弃。

产品量大、面向C端时建议加签名验证:云端用私钥对固件签名,Bootloader里固化公钥,只校验通过的固件才能写入。这样即使通信通道被中间人篡改,恶意固件也刷不进去。

四、通信通道怎么选

- 家电类(带WiFi/蓝牙):走MQTT或自定义TCP长连接,服务器推送升级通知,设备端拉取固件分片;

- 工业4G类:走运营商网络,注意升级流量费,可以分批次灰度推送;

- CAN总线设备:主控板作为网关,整车或整线升级时通过CAN把固件分发给从节点;

- 纯UART小设备:Bootloader预留串口升级协议,现场工程师用一根USB-TTL线本地刷,也算兜底方案。

五、几个容易踩的坑

1)中断向量表重定位:App跳转前必须把SCB->VTOR指向新分区的中断向量偏移,否则一进中断就跑飞;

2)栈顶指针:Bootloader跳App前要手动把MSP设置成App中断向量表的第一个字;

3)看门狗:升级过程要定期喂狗,否则传输慢一点就被看门狗复位;

4)Flash擦写时间:大块擦除可能几十毫秒,期间必须关中断或关闭高优先级中断源;

5)App要回传启动心跳:App启动后几秒内通过标志位通知Bootloader"我活了",否则Bootloader判定升级失败自动回滚;

6)参数区和固件区物理隔离:升级不能动校准参数、设备唯一ID、联网配置。

六、成本权衡

双区备份会多用一份Flash容量,对小容量MCU(如64KB Flash)要精打细算。如果产品定位极简、现场有人值守、拆机可接受,也可以用单区+断点续传+CRC校验的折中方案,但高端产品和工业设备强烈建议双区+回滚。

我们在二十年的单片机控制板定制项目中,给家电、物联网、工业自动化客户做过多种OTA方案,从UART本地升级到4G远程双区升级都有成熟落地。关于Bootloader移植、分区表划分、签名校验的更多细节,可参考www.yjeie.com了解控制板定制服务。


 

状 态: 离线

公司简介
产品目录

公司名称: 苏州永节电子科技有限公司
联 系 人: 章永节
电  话: 0512-65782473
传  真: 0512-65782473
地  址: 苏州市相城区澄阳路888号
邮  编: 215000
主  页:
 
该厂商相关技术文摘:
控制板装进机柜后的六个布线自查点:供电分路、PE 与信号地、端子扭矩与图纸对齐
控制板与 PLC 对接的六个自查点:漏电流、环路预算、终端电阻与点表
控制板看门狗与掉电时序的六个自查点:喂狗位置、长分支裸等与掉电落盘
控制板对外接口的防护器件怎么配:TVS、ESD 与共模扼流的分工
控制板做 EMC 预测试前,先在原理图解决三处
单片机 ADC 采样总在跳,先查基准、滤波和走线这三处
看门狗经常形同虚设,问题不在看门狗本身
RS-485 总线在现场跑不稳,多半是这四个原因
定制控制板交付时,接口定义表常见的五个漏项
控制板继电器输出的工程细节:触点保护、互锁与寿命核算
4-20mA采集板的精度怎么分:从采样电阻到校准的六步
工业控制板RS-485通信:隔离、终端匹配与接地的落地做法
更多文摘...
立即发送询问信息在线联系该技术文摘厂商:
用户名: 密码: 免费注册为中华工控网会员
请留下您的有效联系方式,以方便我们及时与您联络

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 不良信息举报
工控网客服热线:0755-86369299
版权所有 中华工控网 Copyright©2022 Gkong.com, All Rights Reserved