admin 管理员组

文章数量: 1086019


2024年3月13日发(作者:mongodb集群的优缺点)

手把手教你写STM32的bootloader

(SDIO读取TF卡更新固件)

作者:谭建裕

1、bootloader的简介及作用

什么是bootloader?本人不知道该怎么说,反正会来看这篇都是知道自己要干嘛的。

不过bootloader的作用还是要提提的,bootloader最直观的作用就方便,比如你用单片

机给人家做了一款产品,后期你的产品固件需要更新的时候,你总不能带着电脑直接去客

户那里拆开产品给单片机下程序吧?也不能教客户怎么给单片机下程序吧?用户体验感太

差。

其实本质上bootloader的也是一个完整的程序,也有main函数,有自己的中断向

量表,栈顶指针,它可以检查有没有新的固件,如果有,则将新的固件的数据写入到我们

指定的flash地址中,之后跳到新的程序中去就OK了。此时bootloader的优势就来了,

bootloade更新固件有很多种方式,本人在这里只详细讲解一种,搞懂一种之后,其它的

都好办,因为它们的思路都是一样的。Bootloader的主体原理是:首先将bin文件的数据

复制到特定的地址。然后设置中断向量表,设置MSP主堆栈指针(具体请看CM3权威指

南),设置复位向量。然后就没有然后了。

2、bootloader涉及的知识

本人在此讲解的是STM32通过读取TF内的bin文件数据来更新固件。这里牵扯到

STM32的SDIO外设,FATFS文件系统,STM32的flash读写操作。

2.1 SDIO

SDIO是STM32的外设,需要注意的是只有100引脚及以上的才有。电路原理图如

图2-1-1所示。

图2-1-1

注意:在使用TF之前必须保证TF卡格式为FAT32,单元大小为2048。如图2-1-2所

示。


本文标签: 固件 设置 作用 产品 程序