|
STM32. Собственный бутлоадер |
|
|
|
Nov 27 2012, 08:55
|
Участник

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

|
Работаю в Keil, микроконтроллер STM32F407ZGT. Хочу написать собственный бутлоадер. Как работает флешка и нужная мне связь, разобрался. Но столкнулся с одной проблемой: не могу найти, как разместить код, написанный на С в заранее известных областях встроенной флешки и это проконтролировать, чтобы бутлоадер не пытался перезаписать сам себя. В свое время писал на AVR на ассемблере, там такой проблемы не было, можно было точно указать, где размещать код, и загрузчик просто лежал в неизменяемой части программы.
Можно ли решить проблему именно так?
Или есть более простое решение?
|
|
|
|
|
 |
Ответов
(1 - 10)
|
Dec 13 2012, 11:44
|
Участник

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

|
Всем спасибо за советы! Разобрался с размещением в линкере Keil и сделал так: Через встроенный бутлоадер по UART на 115200 быстро заливаю маленькую программку для RAM, 4 кбайт (линкуется с адреса 0x20000000), стартую ее, связываюсь с ней на большой скорости по тому же UART (на 6 мбит) и уже на большой скорости записываю любую "пользовательскую" программу для FLASH. Вся операция вместе со стиранием занимает менее 15 секунд, Это уже близко к пределу по документации, в отличие 2-3 минутной прошивки через ULINK-2.
Другой МК (ATtiny13) мониторит UART RX и по специальной сигнатуре формирует RESET для STM32 в режиме флешки или встроенного бутлоадера. Tiny нужен и для других целей, поэтому все равно будет. Кстати у STM32 прога из RAM работает медленнее, чем из флешки, удивительно...
|
|
|
|
|
Dec 13 2012, 12:24
|
Местный
  
Группа: Участник
Сообщений: 218
Регистрация: 24-06-10
Пользователь №: 58 127

|
Цитата(Sidoroff @ Dec 13 2012, 15:44)  Кстати у STM32 прога из RAM работает медленнее, чем из флешки, удивительно... Физические шыны команд и данных разные. Приходится перебрасывать код с одной шыны на другую. Соответственно требуется лишний такт. :-)
|
|
|
|
|
Dec 13 2012, 13:53
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(vlad_new @ Dec 13 2012, 16:24)  Физические шыны команд и данных разные. Приходится перебрасывать код с одной шыны на другую. Соответственно требуется лишний такт. :-) Жуткая ересь. Читаем мануал: Цитата The CPU can access the system SRAM through the System Bus or through the I-Code/D-Code buses when boot from SRAM is selected or when physical remap is selected (Section 7.2.1: SYSCFG memory remap register (SYSCFG_MEMRMP) in the SYSCFG controller). To get the max performance on SRAM execution, physical remap should be selected (boot or software selection). Если хотим быстро исполнять код из SRAM, то делаем remap. Иначе инструкции в проц пойдут через S-bus (2 такта на инструкцию), а не через I-bus (1 такт на слово).
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|