梧桐uuu 发表于 2025-7-1 22:46

STM32CubeIDE Debug 选项

用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以外的地址,同时还能正常调试吗?

页: [1]
查看完整版本: STM32CubeIDE Debug 选项