在内存中调试STM32 - IAR平台

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在内存中调试STM32 - IAR 平台
STM32 这颗Cortex-M3 控制器,与其他许多ARM 一样,提供了BOOT0 和BOOT1 两个管脚用于启动选择。

BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。

BOOT1=0 BOOT0=1 从系统存储器启动,这种模式启动的程序功能由厂家设置。

(用于串口ISP)
BOOT1=1 BOOT0=1 从内置SRAM 启动,这种模式可以用于调试。

在芯片上电复位时,BOOT0 和BOOT1 两个管脚的状态将决定芯片从何处启动。

1.当BOOT0 和BOOT1 均设置为逻辑1 时,系统将从内置SRAM 中启动,
这是代码内存调试的第一个条件。

2. 然后,我们需要在代码中设置正确的中断向量表位置。

中断向量表通常被放置在用户程序的开始,所以flash 中运行时,向量表位于0x08000000 处,而当代码被放置在SRAM 中运行时,他的位置就成了0x20000000。

在初始化NVIC 时,我们可以放置如下代码,定义向量表的位置
NVIC_SetVectorTable(0x20000000 , 0x0);

NVIC_SetVectorTable(0x08000000 , 0x0);
3. 在编译器中,要进行正确的设置。

这里以IAR 5.4 为例说明。

3.1. 工程选项中Linker 项,Config 选项卡中,指定Linker Configuration File 为stm32f10x_ram.icf,该文件在FWLIB 安装包中可以获得,IAR4 和5 分别有不同的配置文件。

3.2. 同样是工程选项中Debug 项,Download 选项卡中,去掉所有钩子,。

相关文档
最新文档