STM32N6 KEIL IDE 调试XIP 应用的一种方法 LAT1575
关键字:STM32N6,KEIL,XIP,Debug
1. 引言
客户在STM32N6开发时选择使用了KEIL IDE。大家知道STM32N6没有内部 Flash,对于XIP应用,系统启动过程中,首先会由BootRom加载FSBL,由FSBL设置 XIP 模式,然后在外部Flash上直接运行应用。(本文未涉及其它启动模式,仅以外部 Flash 启动模式为例)。如果直接使用KEIL IDE 调试XIP 应用,由于FSBL未执行,XSPI 尚未设置memory map模式,此时读取外部Flash不会成功,即不能直接进行debug。 我们使用STM32N6570-DK板时,常用的调试方法是将FSBL与应用均烧录到外部Flash 中,在Dev模式下上电(此时N6 DBG模块是打开的),再切换模式至外部Flash启 动,按下reset按钮(该reset为系统复位,不会关闭DBG模块),系统会有BootRom 加载并执行FSBL,由FSBL跳转到应用。由于执行过了FSBL,在不复位情况下可以使用 IDE 进行debug,注意该调试方法需要将Boot管脚引出以便切换Boot模式。本文我们 以STM32Cube_FW_N6_V1.1.0 包中Template_FSBL_XIP 为例,介绍一种在Dev模式 下直接调试应用的方法,不需要切换Boot 模式。
2. KEIL IDE 调试 Template_FSBL_XIP 应用
2.1. Step1 : 修改 FSBL
用KEIL打开STM32N6570-DK\Templates\Template_FSBL_XIP 工程。我们首先修 改一下FSBL工程,正常情况下FSBL 在配置好XIP模式后,会跳转到Application, 我们 这里屏蔽跳转,仅做配置与内存映射。具体修改需要修改ST Middlewares 中的 STM32_ExtMem_Manager 中的stm32_boot_xip.c 文件,具体如下:
修改完成后保存,然后编译,会在Template_FSBL_XIP\MDK-ARM\FSBL\Objects 目录下生成FSBL.axf, FSBL.bin等文件。
2.2. Step2 : 创建并使用App.ini文件
在\Template_FSBL_XIP\MDK-ARM\Appli目录下创建App.ini文件,编辑并加入下 面脚本。该脚本首先加载FSBL,然后设置内核PC寄存器为FSBL入口地址 0x34180400+4,运行FSBL后,可以通过暂停Debugger再次加载应用进行调试。
添加App.ini文件后,如下图1进行应用工程设置,使用该App.ini,在Startup阶段 执行, 并去掉勾选Load Application at Startup。
图1. Application设置Debug使用初始化文件
2.3. Step3 : 编译应用并烧录
由于原有的应用设置中使用-O3进行了编译优化,为了设置断点方便演示,我们将该 选项改为了-O0,如下图2所示。该步骤并非必须。
图2. Application设置编译选项-O0
然后我们编译Appliction工程,并将生成的Appli.bin烧录到外部FLASH,如下图3 所示。注意我们这里是为了加快调试速度,烧录前没有进行签名,实际工程中需要对 FSBL与Application进行签名。
图3.烧录Appli.bin到外部Flash
2.4 Step4 : 调试应用
烧录Appli.bin 完成后,就可以回到KEIL IDE对Application进行调试了。可以按下 面步骤进行:
1. STM32N6570-DK板设置启动模式为Dev模式,上电。
2. 点击Start Debug Session 按钮,开始Debug, Debugger 会加载FSBL.axf,并执行FSBL, 如下图4所示状态。点击Stop,进入 下一步;
图4. Application 调试加载执行FSBL
3. 此时KEIL Debugger会停在Application工程 main函数的入口。可以正常设置 断点,及使用其它Debug功能,如下图5所示。
图5. Application 调试界面(KEIL)正常
3. 小结
本文介绍了STM32N6使用KEIL Debug XIP 应用的一种方法,使用KEIL IDE可以相 对比较方便地调试XIP应用。对分模块加载内存与外部Flash的应用,提供了一种相对简 洁的调试手段,供有需要的客户参考。
意法半导体公司及其子公司 (“ST”)保留随时对 ST 产品和 / 或本文档进行变更的权利,恕不另行通知。买方在订货之前应获取关于 ST 产 品的最新信息。 ST 产品的销售依照订单确认时的相关 ST 销售条款。 买方自行负责对 ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任。 ST 不对任何知识产权进行任何明示或默示的授权或许可。 转售的 ST 产品如有不同于此处提供的信息的规定,将导致 ST 针对该产品授予的任何保证失效。 ST 和 ST 徽标是 ST 的商标。若需 ST 商标的更多信息,请参考 www.st.com/trademarks。所有其他产品或服务名称均为其 各自所有者的财 产。 本文档是ST中国本地团队的技术性文章,旨在交流与分享,并期望借此给予客户产品应用上足够的帮助或提醒。若文中内容存有局限或与ST 官网资料不一致,请以实际应用验证结果和ST官网最新发布的内容为准。您拥有完全自主权是否采纳本文档(包括代码,电路图等)信息, 我们也不承担因使用或采纳本文档内容而导致的任何风险。 本文档中的信息取代本文档所有早期版本中提供的信息。 © 2020 STMicroelectronics - 保留所有权利