硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3960|回复: 0
收起左侧

[客户分享] FAQ0049 将IAP放在非闪存起始地址的方法

[复制链接]

22

主题

16

回帖

82

积分

初级会员

积分
82
发表于 2021-5-13 20:13:37 | 显示全部楼层 |阅读模式
本帖最后由 tutu 于 2022-5-20 19:57 编辑

Questions:
AT32 部分型号有零等待闪存和非零等待闪存,零等待闪存的起始地址是0x08000000。为了将更多的 APP 程序放在零等待闪存内,可以将 IAP 程序放在非零等待闪存。或者其他原因也可以将 APP 程序放在非闪存起始地址,即 IAP 起始地址不是 0x08000000。
Answer:
IAP 程序可以放在闪存任何扇区的起始地址,当放在非 page0 的起始地址时,需要在 page0 增加一个引导程序,由引导程序跳转到 IAP,在 IAP 中跳转到 APP。

1. FAQ0049_SourceCode_V2.0.0\utilities\FAQ0049_demo\source_code\guide 为引导程序例程,起始地址0x08000000,预留空间大小 4KB,用户引导程序根据实际占用空间设置对应的大小。程序在引导程序运行时 LED4 闪烁
1.PNG
2. FAQ0049_SourceCode_V2.0.0\utilities\FAQ0049_demo\source_code\iap 为 IAP 例程,起始地址 为0x0807C000,预留空间大小 16KB,用户 IAP 程序根据实际占用空间设置对应的大小。程序在 IAP 运行时LED2 闪烁
2.PNG
注意设置中断向量表的起始地址和 IAP 起始地址相同:
/* config vector table offset */
nvic_vector_table_set(NVIC_VECTTAB_FLASH, 0x7C000);

3. FAQ0049_SourceCode_V2.0.0\utilities\FAQ0049_demo\source_code\app_led3_toggle 为 APP 例程,起始地址为 0x08001000,即 page2 起始。需要注意的是,开启读保护后,闪存的前 4KB 默认为写保护,如果需要开启读保护,APP 的起始地址不能在前 4KB 内。
3.PNG
注意设置中断向量表的起始地址和 APP 起始地址相同:
/* config vector table offset */
nvic_vector_table_set(NVIC_VECTTAB_FLASH, 0x1000);

测试方法:
烧录引导程序前将闪存全部擦除,使用 ICP、ISP 或编译器烧录引导程序,烧录成功后 LED4 闪烁。
使用 ICP、ISP 或编译器烧录 IAP 程序,烧录成功后 LED2 闪烁。
使用 ICP、ISP、编译器或者 IAP 升级软件(FAQ0049_SourceCode_V2.0.0\utilities\FAQ0049_demo\tool_release)烧录 APP 程序,烧录成功后 LED3 闪烁。

类型:MCU 应用
适用型号:AT32 全系列
主功能:FLASH
次功能:无

FAQ0049_将IAP放在非闪存起始地址的方法_V2.0.0.pdf

512.96 KB, 下载次数: 1

FAQ0049_将IAP放在非闪存起始地址的方法_V2.0.0.zip

7.72 MB, 下载次数: 0

回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-31 23:37 , Processed in 0.173404 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表