最近看到一项开源活动,要求基于 N32G45x 系列 MCU 实现 通过 SD 卡完成 IAP 升级。正好我手头有块 N32G45x 开发板,加上之前做过一些 BootLoader 项目,就决定参加这次活动,顺便提升下自己。
目标功能如下:
插入 SD 卡后检测是否有固件更新
支持自动升级 & 按键触发升级
升级过程用 LED 和串口反馈状态
设计思路 & 升级流程规划
今天花了点时间思考整体架构:
BootLoader 与 APP 分区:
BootLoader 地址:0x08000000 ~ 0x08007FFF
APP 起始地址:0x08008000
升级流程草图如下:
arduino
复制
编辑
[启动] → 检测 SD 卡 → 检查是否存在 "FW.BIN" 文件 → 校验 → Flash 擦除 → 写入新固件 → 跳转 APP
SD 卡模块调通
这一步是重头戏。我选用的是 SPI 模式访问 SD 卡,文件系统用的是 FatFs(官方例程中已有封装)。
c
复制
编辑
f_mount(&fs, "", 1); // 挂载
f_open(&file, "FW.BIN", FA_READ); // 打开固件
调了两个小时,才发现我的 SD 卡格式是 exFAT,不支持!重格式化为 FAT32,成功识别 |