打印
[应用相关]

AN0066—出厂BootLoader地址区域设置为用户区域(AP模式)

[复制链接]
3779|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
084425|  楼主 | 2020-7-10 23:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 084425 于 2020-7-18 19:30 编辑

AN0066—出厂BootLoader地址区域设置为用户区域(AP模式)

这篇应用笔记主要阐述在AT32F415系列上设定系统存储器为主存扩展的方法及范例程序。


支持型号
AT32F415xx
AT32F421xx

目录
1 概述 ............................ 5
2 范例程序 .................... 6
2.1 使用Artery ICP Programmer 将系统存储器作为主存扩展使用 .... 6
2.2 run_in_SysMem:在系统存储器执行应用程序 ......................... 6
2.3 IAP_APP_Demo:系统存储器程序IAP+APP 应用 ..................... 8
3 版本历史 .................... 11


1 概述
系统存储器 (System Memory) 默认是作为BOOT模式用来存放原厂固化的启动代码。不过,在
AT32F415系列产品上,添加了新功能,系统存储器也可以选择作为主存的扩展区(AP模式)用来存放
用户自定义代码。
注意:系统存储器AP模式只能设置一次不可逆,设置后原系统存储器BOOT模式功能不可恢复。
本应用指南将介绍主存扩展的使用范例,其中:
  • 章节2.1介绍使用Artery ICP Programmer将系统存储器开启AP模式,作为主存扩展的步骤。
  • 章节2.2介绍项目run_in_SysMem:在系统存储器执行应用程序的示例。
  • 章节2.3介绍项目IAP_APP_Demo:硬件电路从系统存储器启动,系统存储器程序作为用户

      IAP,主存储器程序用作用户APP的示例。
  • 例程放在标准库AT32F4xx_StdPeriph_Lib_V1.x.x\Utilities\AT32F415_SysMem_AP_Demo目

      录。


2 范例程序
2.1 使用Artery ICP Programmer 将系统存储器作为主存扩展使用
要使用ICP Programmer,请参照以下步骤:
  • 连接J-Link或AT-Link仿真器到AT-START-F415板子上并上电;
  • 开启ICP programmer,选择用J-Link或AT-Link做连接;
  • 通过菜单栏:“设备操作” - “系统存储区AP模式” ,如下图:
图1. ICP 操作界面




  • 为防止误操作,需按照提示手动输入启用秘钥0xA35F6D24,操作后“存储器信息”表格中会有

      成功或失败的提示信息。
  • 关于ICP Programmer的详细说明,请参阅ICP Programmer用户手册。

2.2 run_in_SysMem:在系统存储器执行应用程序

在此项目中,硬件从主存储器启动,主存储器的代码会从串口(USART1)输出信息,系统存储器中的
代码会让LED灯(LED2)闪烁。要在系统存储器执行应用程序,需对Keil进行如下设置:

  • 本范例程序把要载入系统存储器的应用代码编写成单独的c文件与h文件,并放在同一个群组
      中。范例中是把LED灯闪烁的相关代码run_in_SysMem.c与run_in_SysMem.h放在SysMem群组。
图2. SysMem 群组


  • 设置系统存储器的起始位置及范围。

图3. 设置SysMem 地址范围到IROM2

  • 修改分散加载描述文件(scatter file),本范例的scatter file在\run_in_SysMem目录下。本范例新

      添加了名为LR_IROM2的加载区,起始位置与范围和系统存储器一致,并将需要放到系统存储器
      的代码的目标文件(object file) run_in_SysMem.o放置其中。
图4. 分散加载描述文件


  • 添加系统存储器flash算法。
图5. FLASH 算法文件添加


  • 下载并运行后可以看到对应执行结果LED闪烁。

2.3 IAP_APP_Demo:系统存储器程序IAP+APP 应用
在此项目中,硬件从系统存储器启动,整个demo分为两个项目工程,系统存储器程序作为用户
IAP,主存储器程序用作用户APP。
  • IAP工程(SYSMEM_IAP_Bootloader)

整个工程代码运行在系统存储器,运行后从串口(USART1)输出信息,然后执行跳转程序,跳转到主
存储器。
工程的配置及flash算法需要选择对应系统存储器参数,如下图:

图6. IAP 工程配置


图7. IAP FLASH 算法文件添加


  • APP工程(SYSMEM_APP_LED_Toggle):

整个工程代码运行在主存储器,当IAP运行并跳转过来后,运行从串口(USART1)输出信息,并且会
让LED灯(LED2/3/4)轮流闪烁。
工程的配置及flash算法需要选择对应主存储器参数,如下图:
图8. APP 工程配置


图9. APP FLASH 算法文件添加


3 版本历史

2019.07.29 1.0.0 最初版本
AN0066_Config_system_memory_as_extension_of_main_memory(AP_mode)_ZH_V1.0.0.pdf (640.98 KB)









使用特权

评论回复
沙发
wsnsyy| | 2021-4-9 18:28 | 只看该作者
这个范例程序在哪里下载啊

使用特权

评论回复
板凳
muyichuan2012| | 2021-4-9 19:23 | 只看该作者
bsp 里utility文件夹

使用特权

评论回复
地板
别看我照片| | 2021-4-10 18:39 | 只看该作者
感谢楼主的分享,不错的,是不是,不错的。

使用特权

评论回复
5
明天真的好| | 2021-4-10 19:25 | 只看该作者
这个资料确实很详细,感谢楼主的分享。

使用特权

评论回复
6
imdx| | 2021-4-10 20:33 | 只看该作者
出厂的bootloader还是留着比较好。

使用特权

评论回复
7
weifeng90| | 2021-4-12 07:24 | 只看该作者
感谢楼主的讲解,学习了。

使用特权

评论回复
8
自己造声卡| | 2021-4-12 08:38 | 只看该作者
这个资料太重要了。感谢楼主的分享,不错的。

使用特权

评论回复
9
oyster7487| | 2021-8-12 14:06 | 只看该作者
我這邊使用 F421 測試 run_in_SysMem 完全沒有反應.(LED也沒有閃爍)
有大大遇過類似的問題嗎?

NOTE: 已使用 ICP 設定MCU為 AP模式.

使用特权

评论回复
10
oyster7487| | 2021-8-12 14:14 | 只看该作者
各位大大
我發現只要把 printf的兩行Mask,
程式就可以正常執行了.
有人知道為什麼嗎?

F421_issue.png (31.21 KB )

printf造成錯誤

printf造成錯誤

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

225

帖子

0

粉丝