Идея такова: Бутлоадер находится в Bank 1(тот, который 32К), основная программа в Bank 0 (имеет размер 512K). При подаче питания контроллер должен грузится с Bank 1. Для этого в при прошивке бутлоадера надо в утилите Caps установить At power up, CPU boot from Secondary flash, а также в поле secondary flash установить адрес записи 0-7FFF и прописать бинарник с бутлоадером. Помимо этого, бутлоадер должен быть скомпилирован с init.s-файлом в котором соответственно настроен FMI: так как загрузочный у нас Bank 1 и размер у него 32к то получим примерно такое:
Код
;Boot bank size = 32k, start_addr = 0x0000
LDR R6, =FMI_BBSR_AHB_UB
LDR R7, =0x0
STR R7, [R6]
LDR R6, =FMI_BBADR_AHB_UB
STR R7, [R6]
Bank 0 располагается сразу после Bank 1, поэтому получаем такое:
Код
;non boot bank size=512K, start_addr=32k
LDR R6, =FMI_NBBSR_AHB_UB
LDR R7, =0x6 ; 512K = 8 * 2^6
STR R7, [R6]
LDR R6, =FMI_NBBADR_AHB_UB
LDR R7, =(0x8000 >> 2)
STR R7, [R6]
Если я ничего не упустил, то перечисленного будет достаточно. Для полноты картины крайне необходимо почитать STR9 Flash Programming Manual.