我正在使用 STM32F746ZG 和 FreeRTOS。
Flash的起始地址是0x08000000。但我想把它改成0x08040000。我通过谷歌搜索了这个问题,但没有找到解决方案。
我更改了链接器脚本,如下所示。
MEMORY
{
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 320K
/* FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 1024K */
FLASH (rx) : ORIGIN = 0x8040000, LENGTH = 768K
}
如果我只更改它并运行调试器,就会出现问题。
如果我将 VECT_TAB_OFFSET 从 0x00 更改为 0x4000,它就可以正常工作。
/* #define VECT_TAB_SRAM */
#define VECT_TAB_OFFSET 0x40000 /* 0x00 */
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;
但如果我不使用调试器,它就不起作用。
这意味着它仅在使用 ST-Linker 时有效。
如果您知道解决方案,请告诉我。
提前感谢您的回复。
引导地址可以在选项字节中设置。
您可以以 16k 为增量设置闪存中的任何地址。选项字节区域中有两个 16 位寄存器,一个在复位时引导引脚为低电平时使用,另一个在引脚为高电平时使用。写入所需地址右移 14 位,即除以 16384。
启动自0x08040000
, write 0x2010
进入寄存器中描述的选项字节编程参考手册的章节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)