реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Бутлоадер для STR912FAW44, Как сделать remap ?
Thunderbird
сообщение Jun 22 2010, 11:52
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 18-09-07
Пользователь №: 30 613



Копаю проект бутлоадера для 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, но с ним тоже не понятно как это сделать....
Go to the top of the page
 
+Quote Post
Aprox
сообщение Jun 30 2010, 07:54
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Цитата(Thunderbird @ Jun 22 2010, 15:52) *
А как собственно это сделать. Пробовал с помощью Flash Link записать прошивку в Bank1 и сделать загрузку с него - не работает :-( Есть также J-link, но с ним тоже не понятно как это сделать....
Если используете ST-библиотеку, то надо править 91x_conf.h на предмет, какой банк станет загрузочным. По-моему, но точно не уверен, в JTAG-загрузчике автоматом будет проставлен бит ремэппинга. Если не используете ST-библиотеку, то придется ручками править .XCL файл линкеру и ручками устанавливать бит ремэпа в отладчике. Когда у вас получится, обязательно напишите здесь, я тоже озабочен данной проблемой.
Go to the top of the page
 
+Quote Post
Kane
сообщение Jun 30 2010, 11:40
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 10-02-06
Пользователь №: 14 185



Частично использую библиотеку st, в файле 91x_conf.h ничего не правлю. Единственно надо настроить правильно 91x_init.s. Для переключения использую функцию FMI_BankRemapConfig с соответствующими параметрами. :-) Когда шьется бутлоадер указываю утилитой caps загрузку контроллера с банка 2. Перед запуском главной программы, в бутлоадере, вызываю FMI_BankRemapConfig и все. Единственно, функция запуска у меня сделана ram_loc. Главная программа компилится без дополнительных настроек в xcl-файле.

Сообщение отредактировал Kane - Jun 30 2010, 11:49
Go to the top of the page
 
+Quote Post
Aprox
сообщение Jun 30 2010, 12:37
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Цитата(Kane @ Jun 30 2010, 15:40) *
Частично использую библиотеку st, в файле 91x_conf.h ничего не правлю. Единственно надо настроить правильно 91x_init.s.
Подробнее можно про настройку 91x_init.s?
Go to the top of the page
 
+Quote Post
Kane
сообщение Jul 1 2010, 11:53
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 10-02-06
Пользователь №: 14 185



Идея такова: Бутлоадер находится в 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
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 08:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01392 секунд с 7
ELECTRONIX ©2004-2016