需求

需要在 STM32 芯片上,使用 uart 接口,通过 ymodem 协议,进行 IAP 升级。

解决

想用 IAP 升级,芯片上的程序需要分为两个部分,bootloader 和 app. 上位机需要一个软件通过接口,把新版本的软件发送给芯片。

bootloader

bootloader 可以参考 STM32 提供的 IAP demo 进行修改。其中写 flash 的地方需要注意,不同芯片支持的写 flash 不一样,主要是支持的单次写入长度不一样,那么相关的写入次数等等都要跟着修改。

app

app 部分需要改动的比较少,主要是两个地方:

  • link: 这里需要修改 flash 起始地址,需要和 bootloader 中最后跳转的地址一致。gcc 编译器在 ld 文件中修改。
  • 中断向量: VECT_TAB_OFFSET 也需要修改为新地址对应的偏移。

上位机

上位机软件最简单的就是使用 windows 自带的超级终端 hypertrm. 当然也可以自己写一个支持 YMODEM 协议的软件。

参考