[STM32F4] STM32CubeIDE Debug 选项

[复制链接]
325|0
 楼主| 梧桐uuu 发表于 2025-7-1 22:46 | 显示全部楼层 |阅读模式
用STM32F401RE芯片,并在STM32CubeIDE上进行开发。
由于我在地址0x08000000处有一个Bootloader,因此需要将应用程序移到0x0800C000处,我修改了链接器文件:
MEMORY
{
RAM  (xrw)  : ORIGIN = 0x20000000,  LENGTH = 96K
/* FLASH  (rx)  : ORIGIN = 0x08000000,  LENGTH = 208K */
FLASH  (rx)  : ORIGIN = 0x0800C000,  LENGTH = 208K
}
在STM32CubeIDE下运行应用程序时,程序会崩溃,这似乎很明显是因为调试器需要正确初始化VTOR(向量表偏移寄存器)。
我已经注释掉了SystemInit()函数中初始化VTOR的那行代码。
void SystemInit(void)
{
/* FPU settings ------------------------------------------------------------*/
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
  SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
#endif
#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
SystemInit_ExtMemCtl();
#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */
/* Configure the Vector Table location add offset address ------------------*/
#ifdef VECT_TAB_SRAM
SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
#else
// SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
#endif
}
我想在“调试配置”|“启动”|“指定向量表(十六进制)”中直接填写0x0800C000,调试器就能初始化VTOR……
下载程序并在Reset_Handler设置断点后,发现VTOR的值仍然是0。
有人知道如何将应用程序的地址更改为0x08000000以外的地址,同时还能正常调试吗?


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

本版积分规则

56

主题

58

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部