📖 第 38 章:串口IAP实验(USART IAP)

🔧 正点原子《DMF407 开发指南》V1.0 · Chapter 38
🗨️ 「在线升级不再返厂:IAP 让 MCU 自我革命。」
这一章在干嘛? IAP 实验:IAP 原理(Bootloader + App)、bin 文件生成、串口 Ymodem 协议传输、App 跳转。从此固件远程升级。
38.1 IAP 简介38.2 硬件设计38.3 程序设计38.4 下载验证

38.1 IAP 简介

IAP(In Application Programming):在应用程序里更新 Flash。

IAP 必备条件:

原书图 38.1.1:IAP 工程 Flash 分区
原书图 38.1.1:IAP 工程 Flash 分区

常见协议:

关键:App 区基址和大小必须在 Bootloader 与 App 的链接脚本中保持一致。

38.2 硬件设计

USART1 + 按键进入 Bootloader / 跳转 App。

38.3 程序设计

38.3.1 工程组织

38.3.2 App 工程配置

38.3.3 Bootloader 主流程

main:
    if (KEY0 == 0) {       // 按键进 IAP
        delay_ms(20);
        if (KEY0 == 0) ymodem_receive_and_flash();
    }
    jump_to_app(0x08008000);   // 跳到 App

void jump_to_app(uint32_t addr) {
    uint32_t jump = *(__IO uint32_t *)(addr + 4);
    fn jump_fn = (fn)jump;
    __set_MSP(*(__IO uint32_t *)addr);   // 设置栈顶
    jump_fn();                              // 跳转
}

原书图 38.3.3.1:IAP 跳转流程
原书图 38.3.3.1:IAP 跳转流程

原书图 38.3.3.2:Ymodem 接收 Flash 写入流程
原书图 38.3.3.2:Ymodem 接收 Flash 写入流程

38.3.4 Ymodem 接收

串口接收 SOH/STX/EOT 等控制字符,按块写入 Flash。

原书图 38.3.4.1:Ymodem 帧格式
原书图 38.3.4.1:Ymodem 帧格式

38.4 下载验证

  1. 烧 Bootloader;
  2. 编译 App 为 bin;
  3. XCOM 用 Ymodem 协议发送 bin → 开发板接收 → 写入 Flash → 自动跳 App;
  4. App 中 LED 闪烁证明跳转成功。

App 大小限制:App 区必须预留至少 1 个扇区给 Bootloader。

🧠 小测验
IAP 是什么?
在 App 中更新自身 Flash 的技术。
App 区基址必须改什么?
链接脚本起始地址 + 中断向量表偏移。
跳转前要做什么?
设置 MSP(栈顶指针)。
← 上一篇🏠 顶层目录下一篇 →