打印
[STM32F1]

SD卡Bootloader离线升级

[复制链接]
400|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gygp|  楼主 | 2024-4-10 20:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这里使用STM32F103RCT6的[color=var(--comiis-color)]芯片制作[color=var(--comiis-color)]sd卡Bootloader。

一.硬件
这里使用的原子mini[color=var(--comiis-color)]开发板,芯片为STM32F103RCT6,带SPI驱动的SD卡槽。

二.软件(寄存器编码,为的是减少Bootloader的代码占用空间)
1. SD卡使用的是SPI驱动。SPI1_Init()初始化,SPI1_ReadWriteByte读写。


2. SD卡驱动和[color=var(--comiis-color)]FATFS文件系统。读SD卡、写SD卡、初始化SD卡等等,都是写好的驱动程序,直接可以用。这里也是用到了FATFS文件系统,需要移植两个文件。

3. 芯片Flash的操作。由于升级APP程序片需要用到Flash的操作,所以Flash的擦除,写入不能少。


4. APP程序跳入。当Flash里面写入了更新后的程序,需要跳转到Flash的起始地址,所以有一个函数需要。


5. 应用部分:
首先选择一个起始地址,是需要刷写程序的起始地址。只要大于Bootloader程序的总长度,并且APP程序的长度不能超过(芯片大小 - Bootloader程序大小)即可。
然后Flash中选取一个地址作为标志位,用于判断是否需要更新程序。
最后就是读取SD卡里的文件,把读取的写入到对应的Flash里面,完成跳转。

Main函数,先检测0x08002FFE这个地址的标志位,如果是0x02,说明有应用APP程序,不需要进行升级,所以直接iap_load_app(FLASH_APP_ADDR)跳转到APP的起始地址,开始运行程序,BOOT程序就到这里结束。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

184

主题

8184

帖子

15

粉丝