Все таки можно на этапе линковки сместить таблицу векторов прерываний.
Просто за ради теста
проверил, полет нормальный.
Изменения в BOOTstm32f100xB.icf
Код
define symbol __ICFEDIT_intvec_start__ = 0x08000000 + 0x400;
define symbol __ICFEDIT_region_ROM_start__ = 0x08000000 + 0x400;
Изменения в system_stm32f10x.c
Код
#define VECT_TAB_OFFSET 0x400
теперь можно смело писать 2 независимых приложения загрузчик и рабочий код, правда думаю перед выходом с загрузчика нужно остановить все прерывания, иначе можно улететь не туда
переключение таблицы выполняет void SystemInit(void) кому интетесно
Код
#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
Цитата(KRS @ May 28 2013, 22:47)

Так достаточно просто обрезать флешь указав что начинается с 0x08000000 + 0x400;
Спасибо за помощь. Ваша ссылка разкоментила много пробелов относительно работы прерываний.