Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Бутлоадер для STR912FAW44
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Thunderbird
Копаю проект бутлоадера для STR912FAW44 с сайта ST (AN2475), там в AN указано :

The IAP driver must be programmed by the user in the Flash Bank1 after being remapped in
hardware to address 0x00 (Bank0 is hardware remapped at address 0x80000 for
256 or 512 Kbytes devices and at address 0x200000 for 1 or 2 Mbytes devices).
Note: For 256K, Bank 0 must be at a 256K boundary (Bank 0 base addresses can be: 0x00,
ox40000, ox80000, etc.).
For 512K, Bank 0 must be at a 512K boundary (Bank 0 base addresses can be: 0x00,
ox80000, ox100000, etc.).
For 1M, Bank 0 must be at a 1M boundary (Bank 0 base addresses can be: 0x00,
0x100000, 0x200000, etc.).
For 2M, Bank 0 must be at a 2M boundary (Bank 0 base addresses can be: 0x00,
0x200000, 0x400000, etc.).
Programming is performed via JTAG using a Flasher toolset.

А как собственно это сделать. Пробовал с помощью Flash Link записать прошивку в Bank1 и сделать загрузку с него - не работает :-( Есть также J-link, но с ним тоже не понятно как это сделать....
Aprox
Цитата(Thunderbird @ Jun 22 2010, 15:52) *
А как собственно это сделать. Пробовал с помощью Flash Link записать прошивку в Bank1 и сделать загрузку с него - не работает :-( Есть также J-link, но с ним тоже не понятно как это сделать....
Если используете ST-библиотеку, то надо править 91x_conf.h на предмет, какой банк станет загрузочным. По-моему, но точно не уверен, в JTAG-загрузчике автоматом будет проставлен бит ремэппинга. Если не используете ST-библиотеку, то придется ручками править .XCL файл линкеру и ручками устанавливать бит ремэпа в отладчике. Когда у вас получится, обязательно напишите здесь, я тоже озабочен данной проблемой.
Kane
Частично использую библиотеку st, в файле 91x_conf.h ничего не правлю. Единственно надо настроить правильно 91x_init.s. Для переключения использую функцию FMI_BankRemapConfig с соответствующими параметрами. :-) Когда шьется бутлоадер указываю утилитой caps загрузку контроллера с банка 2. Перед запуском главной программы, в бутлоадере, вызываю FMI_BankRemapConfig и все. Единственно, функция запуска у меня сделана ram_loc. Главная программа компилится без дополнительных настроек в xcl-файле.
Aprox
Цитата(Kane @ Jun 30 2010, 15:40) *
Частично использую библиотеку st, в файле 91x_conf.h ничего не правлю. Единственно надо настроить правильно 91x_init.s.
Подробнее можно про настройку 91x_init.s?
Kane
Идея такова: Бутлоадер находится в 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. smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.