Skip to content

踩坑Robotics Stack Exchange2015-12-22

STM32F103RG 能否通过 SD 卡自刷固件? ​

本文由 AI 根据公开内容整理,可能有误,请以原文为准:Microcontroller flashing itself(Robotics Stack Exchange #8722)

状态:已解决

问题 ​

提问者希望远程通过 UART 无线发送 .HEX 或 .BIN 固件到 STM32F103RG,校验后保存到 SD 卡,再重启由单片机自行从 SD 卡刷写自身 Flash。

环境 ​

STM32F103RG,1Mb Flash,UART 通信调制解调器,SPI 连接 SD 卡。

解决办法 ​

  1. 在芯片中划分两个程序区域:bootloader 和应用程序,并尽量对 bootloader 区域写保护。
  2. 若 bootloader 空间足够,可让其直接与外部通信,接收固件并写入应用区。
  3. 若空间不足,可由旧应用负责通信并把固件写到外部 SD 卡,重启后进入 bootloader,再由 bootloader 读取 SD 卡文件并写入 Flash。
  4. bootloader 启动后应设置超时、退出命令,或检查是否存在待刷写固件;没有则跳转到应用程序。
  5. 需要处理刷写中断电、固件损坏等情况;可保留只读的原始稳定固件,并用按钮等方式通知 bootloader 恢复原始应用。
  6. 使用外部 SD 卡时,可通过取出 SD 卡、用电脑写入正确固件、再插回设备来恢复。

原问题作者:user2967920;采纳答案作者:Shahbaz。原内容依 CC BY-SA 4.0 授权,本页摘要同样依 CC BY-SA 4.0 授权。

来源

本页事实对应的公开页面,以原文为准。

  1. Robotics Stack Exchange #8722:Microcontroller flashing itself访问 2026-10-22