[综合信息] 基于国民技术 N32G45x 的 SD 卡 IAP 升级方案

[复制链接]
356|0
l63t89 发表于 2025-8-31 00:21 | 显示全部楼层 |阅读模式
一、原理讲解
IAP(In-Application Programming)即应用内编程,是一种允许在应用程序运行过程中更新固件的技术。基于 SD 卡的 IAP 升级方案主要通过以下步骤实现:
存储结构划分:将 MCU 的 Flash 划分为 Bootloader 区和 App 区
Bootloader 区:负责固件校验和升级
App 区:存放用户应用程序
升级流程:
系统启动时先运行 Bootloader
Bootloader 检测升级条件(如 SD 卡存在新固件)
若需要升级,则读取 SD 卡中的固件文件
校验固件合法性(CRC 校验或 MD5 校验)
擦除 App 区 Flash 并写入新固件
升级完成后跳转到 App 区执行新程序
硬件交互:
通过 SPI 接口与 SD 卡通信
使用 LED 指示升级状态(如闪烁表示升级中,常亮表示成功)
可通过 USART 输出调试信息
二、测试环境
硬件环境:
国民技术 N32G45x 开发板
SD 卡模块(SPI 接口)
LED 指示灯(至少 2 个,用于状态指示)
串口调试器
电源适配器
计算机(用于编译程序和调试)
软件环境:
Keil MDK 5 或 IAR Embedded Workbench
国民技术 N32G45x 芯片支持包
SD 卡格式化工具(FAT32 格式)
串口调试助手
三、操作流程
前期准备:
将固件文件(如 firmware.bin)复制到 FAT32 格式的 SD 卡根目录
确保固件文件已正确编译并符合 N32G45x 的格式要求
自动升级流程:
插入含有新固件的 SD 卡到开发板
上电或复位开发板
系统自动检测到 SD 卡中的新固件
LED 开始闪烁,表示正在升级
升级完成后,绿色 LED 常亮(成功)或红色 LED 常亮(失败)
系统自动重启并运行新固件
手动升级流程:
上电启动开发板,进入正常工作模式
插入含有新固件的 SD 卡
通过按键触发升级流程
后续升级过程与自动升级相同
四、代码配置
1. Flash 分区配置
需要在链接脚本中配置 Flash 分区,以下是示例:
c
// 在分散加载文件(.sct)中配置
LR_IROM1 0x08000000 0x00008000  {    ; Bootloader区,32KB
  ER_IROM1 0x08000000 0x00008000  {
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00008000  {  ; RAM配置
   .ANY (+RW +ZI)
  }
}

LR_IROM2 0x08008000 0x00078000  {    ; App区,480KB
  ER_IROM2 0x08008000 0x00078000  {
   app_code.o (+RO)
  }
}



您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

1077

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部