stm32使用SD卡IAP固件升级笔记

        最近开发了stm32用SD卡进行IAP固件升级用的bootloader,特整理一下笔记:

        首先说一下升级原理,固件升级需要有2套程序,1套就是加载引导程序,也就是所谓的bootloader。另一套就是APP程序。

主要的难点就是bootloader程序了。下面讲解如何写基于SD卡的bootloader程序。

编写基于SD卡的固件升级bootloader,需要做一下几项工作:

  • 编写移植能驱动SD卡的SDIO驱动bsp
  • 移植能读写SD卡的文件系统
  • 对flash程序存储区进行分区
  • 移植能进行stm32的片内flash读写的驱动
  • 从SD卡加载读取APP程序,以及写flash,跳转
  • Keil编译出.bin文件

(1) SD卡SDIO驱动 && 文件系统移植

首先,要想能支持从SD卡进行固件升级,首先MCU需要能从SD卡进行读写。操作SD卡对于stm32有集成的硬件SDIO接口,然后还需要移植能读写SD卡的文件系统。说到移植SD卡的文件系统,这里有个小插曲不得不说,一开始我移植的文件系统,发现太大了,编译出来的bootloader足足有180多kB,占据了stm32的flash的半壁江山。后来对文件系统进行了裁剪后之后不到30k了。

1.1 SDIO驱动:

SDIO驱动我也是没时间自己去写,而是直接移植的官方的sdio驱动部分,里面集成了基于SDIO的读写擦操作的API接口,移植好后可以直接调用。说到SDIO驱动,我就再多说两句吧,请看下面的电气连接:

你可能感兴趣的:(stm32单片机类)