Всем спасибо. Может кому пригодится, сделал так: МК 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.