Използвам STM32F746ZG и FreeRTOS. Началният адрес на флаш е 0x08000000. Но искам да го променя на 0x08040000. Търсих този проблем в Google, но не намерих решението.
Промених скрипта за свързване по следния начин.
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.
Моля, уведомете ме, ако знаете решението. Благодаря ви предварително за отговора.