跳转至

43. 修改、编译、烧录与回滚固件

43.1 学习目标

为一次固件变更建立完整闭环:确认适用控制板、保存出厂状态、构建、烧录、架空验收,并能恢复旧固件。

这里的构建是用编译器和链接器把源码转换成控制板可执行文件,烧录是把该文件写入微控制器的非易失存储器,回滚是写回已验证的旧固件和参数。三步解决的问题不同:构建成功只能说明工具链生成了文件,烧录成功也不能证明该文件与当前硬件匹配。

43.2 适用范围

C30D、C50A/B/C 等 STM32 控制板。不同下载器、芯片和工程需使用对应工具链。

43.3 操作前检查

没有回滚文件,不开始烧录

错误固件可能改变车型、轮号、编码器类型和舵机零位。先备份可运行固件或取得与实机完全匹配的出厂文件。

必须记录:控制板与硬件版本、底盘类型、编码器类型、源码/固件日期、编译器、下载器、当前 TYPE、阿克曼舵机零位和恢复文件路径。

43.4 工作原理

编译、烧录与回滚边界

源码工程决定编译时功能,.hex 和 .bin 是常见的构建结果。兼容性要根据控制板、芯片、车型、编码器和接口配置逐项确认,不能根据文件名判断。下载工具显示“烧录成功”时,只能确认数据已经写入芯片;车型、参数和接线仍需单独验收。

43.5 操作步骤

备份与编译

  1. 检查待编译工程的控制板、车型和编码器配置,三项必须与实机完全匹配。
  2. 复制原工程到新目录,不在归档原件中直接修改。
  3. 检查芯片型号、时钟、下载地址和车型宏。
  4. 不改代码先构建一次,记录告警、输出文件和哈希。
  5. 只做计划中的单一修改,再构建并比较输出。
  6. 连接 ST-Link、USB 或无线下载工具时保持电源稳定,确认目标芯片。
  7. 烧录后先让电机失能或轮子架空,观察 OLED、TYPE、自检、串口和编码器。
  8. 低速逐轮验收。阿克曼先确认舵机零位,避免顶住机械限位。
  9. 失败时断电,烧回出厂文件,恢复参数并重复基线检查。

43.6 验收标准

  • 适用控制板、车型和编码器有证据。
  • 原工程不改动,构建环境和输出哈希已记录。
  • 烧录后自检、接口、轮号和方向正确。
  • 急停、使能、通信超时和零速停止可靠。
  • 回滚过程至少演练一次,旧固件能恢复基线。

43.7 故障排查

表中的 EEPROM 指电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory)。控制板常把车型、纠偏值等掉电后仍需保留的参数写在这一类非易失存储区;回滚程序不一定会同时清除这些参数。

现象 处理
下载器找不到芯片 供电、SWD 线序、驱动、复位和芯片选型
烧录成功但 OLED/接口异常 工程或板卡版本不匹配,立即回滚
轮子方向乱 车型、轮号、编码器类型或线束不匹配
阿克曼上电顶死 断电,恢复舵机零位和正确车型固件
回滚后仍异常 参数 EEPROM、接线或机械状态也被改变

章节导航

上一章:电机控制与 PID 实现 · 返回本篇 · 下一章:ROS 2 与 STM32 联调