以 AT32F403 开发板为例, 具体实现方法如下:
1、 IAP 程序可以放在闪存任何页的起始地址, 当放在非 page0 的起始地址时, 需要在 page0 增加一个引导程序,由引导程序跳转到 IAP, 在 IAP 中跳转到 APP。
Guide 为引导程序例程, 起始地址 0x08000000, 预留空间大小 4KB, 用户引导程序根据实际占用空间设置对应的大小。 程序在引导程序运行时 LED2 闪烁。
2、 设置 IAP 的起始地址 FLASH_BOOT_ADDR = 0x0807C000, 即 page248 起始。IAP 为 IAP 例程, 起始地址 0x0807C000, 预留空间大小 16KB, 用户 IAP 程序根据实际占用空间设置对应的大小。 程序在 IAP 运行时 LED3 闪烁。
IAP 的中断向量映射地址需要设置为 IAP 的起始地址, 即 IROM1 的 Start 值与 SCB->VTOR 值要一致。
3、 设置 APP 的起始地址 FLASH_APP1_ADDR = 0x08001000, 即 page2 起始。 因开启读保护后, 闪存的前 4KB 默认为写保护, 如果需要开启读保护, APP 的起始地址不能在前 4KB 内。LED 为 APP 例程, 起始地址 0x08001000, 预留空间大小 492KB, 用户 APP 程序根据实际占用空间设置对应的大小。 程序在 APP 运行时 LED4 闪烁。
APP 的中断向量映射地址需要设置为 APP 的起始地址, 即 IROM1 的 Start 值与 SCB->VTOR 值要一致
测试方法:
烧录引导程序前将闪存全部擦除, 使用 ICP、 ISP 或编译器烧录引导程序, 烧录成功后 LED2 闪烁。
使用 ICP、 ISP 或编译器烧录 IAP 程序, 烧录成功后 LED3 闪烁。
使用 ICP、 ISP、 编译器或者 IAP 升级软件(IAP_APP_Release 文件内) 烧录 APP 程序, 烧录成功后 LED4 闪烁。
类型: MCU 应用
适用型号: AT32F4xx 全系列
主功能: FLASH
次功能: 无
|