ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
3 июля
1221720 Топик полностью
Nikolaev_Aleksey (08.07.2022 09:52, просмотров: 315) ответил Nikolaev_Aleksey на KEIL: Если я сместил адрес ПО с 0x08000000 на 0x08010000, поменял в scatter файле адреса. Затем поменял VECT_TAB_OFFSET на 0x80 (0x200*0x80=0x00010000). Что нужно еще сделать, чтобы ПО запустилось?
Всем спасибо. Может кому пригодится, сделал так: 

МК AT32F403AVGT7

загрузчик 0x08000000 - 0x0800FFFF со своим VECT с адреса 0x08000000

приложение 0x08010000 - 0x080FFFFF со своим VECT с адреса 0x08010000


вJLinkSettings.ini добавил в начале файла следующее (именно вначале файла, по другому не работает) по совету Aleksey_75:

FUNC void Setup (void) {
SP = _RDWORD(0x08010000); // Setup Stack Pointer
PC = _RDWORD(0x08010000 + 4); // Setup Program Counter
_WDWORD(0xE000ED08, 0x0801080); // Setup Vector Table Offset Register
}
// executes upon software RESET
FUNC void OnResetExec (void) {
Setup(); // Setup for Running}


Обязательно должна остаться в файле такая секция, иначе не работает

[FLASH]
CacheExcludeSize = 0x00
CacheExcludeAddr = 0x00
MinNumBytesFlashDL = 0
SkipProgOnCRCMatch = 1
VerifyDownload = 1
AllowCaching = 1
EnableFlashDL = 2
Override = 1
Device="Cortex-M4"

Переопределил в приложении (именно 0x10000, по другому не работает)

#define VECT_TAB_OFFSET 0x10000

После этого работает отладка приложения с чистого МК. Причем работает с J-Link, ULink2. Даже заработало с китайским CMSIS-DAP-Debuger на стартките от Artery.