机器人、AGV等自动化设备,车身有大量嵌入式控制单元,开发及应用过程中有固件更新需求。需要探讨出一套通用的在应用编程模板。
其中涉及的通信链路有: 以太网 CAN UART
涉及应用层协议: TCP, UDP, TCP Modbus, CANopen, 485Modbus, 232Modbus以及一些开发者自定义的协议
在应用编程协议统一使用: ST IAP protocol
其中固件更新所使用的程序为python脚本。
其网络拓扑如下图
对于一级设备,可以直接由x86控制器或者交换机对外调试口进行固件更新。
对于二级设备,需要通过一级设备进行转发,完成固件更新功能。
本文主要讨论的是二级设备的固件更新方式。
更新固件的流程大致如下(以x86中运行pyscript,经一级设备,更新232Modbus设备的固件为例):
1. pyscript发送UDP指令,将一级设备的232Modbus任务模式切换为透传模式。
2. pyscript发送UDP报文模拟Modbus指令,使二级设备跳转到 bootloader
3. pyscript发送UDP报文模拟ST IAP Protocol, 对二级设备进行固件更新
4. pyscript发送UDP报文模拟ST IAP Protocol, 修改二级设备启动选项