外观
踩坑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 卡。
解决办法
- 在芯片中划分两个程序区域:
bootloader和应用程序,并尽量对bootloader区域写保护。 - 若
bootloader空间足够,可让其直接与外部通信,接收固件并写入应用区。 - 若空间不足,可由旧应用负责通信并把固件写到外部 SD 卡,重启后进入
bootloader,再由bootloader读取 SD 卡文件并写入 Flash。 bootloader启动后应设置超时、退出命令,或检查是否存在待刷写固件;没有则跳转到应用程序。- 需要处理刷写中断电、固件损坏等情况;可保留只读的原始稳定固件,并用按钮等方式通知
bootloader恢复原始应用。 - 使用外部 SD 卡时,可通过取出 SD 卡、用电脑写入正确固件、再插回设备来恢复。
原问题作者:user2967920;采纳答案作者:Shahbaz。原内容依 CC BY-SA 4.0 授权,本页摘要同样依 CC BY-SA 4.0 授权。
来源
本页事实对应的公开页面,以原文为准。