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

 
 
> STM32. Собственный бутлоадер
Sidoroff
сообщение Nov 27 2012, 08:55
Сообщение #1


Участник
*

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



Работаю в Keil, микроконтроллер STM32F407ZGT.
Хочу написать собственный бутлоадер. Как работает флешка и нужная мне связь, разобрался.
Но столкнулся с одной проблемой: не могу найти, как разместить код, написанный на С
в заранее известных областях встроенной флешки и это проконтролировать,
чтобы бутлоадер не пытался перезаписать сам себя. В свое время писал на AVR на
ассемблере, там такой проблемы не было, можно было точно указать, где размещать код,
и загрузчик просто лежал в неизменяемой части программы.

Можно ли решить проблему именно так?

Или есть более простое решение?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Sidoroff
сообщение Dec 13 2012, 11:44
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 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 работает медленнее, чем из флешки, удивительно...
Go to the top of the page
 
+Quote Post
vlad_new
сообщение Dec 13 2012, 12:24
Сообщение #3


Местный
***

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



Цитата(Sidoroff @ Dec 13 2012, 15:44) *
Кстати у STM32 прога из RAM работает медленнее, чем из флешки, удивительно...

Физические шыны команд и данных разные. Приходится перебрасывать код с одной шыны на другую. Соответственно требуется лишний такт. :-)

Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 13 2012, 13:53
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 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 такт на слово).
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 11:55
Рейтинг@Mail.ru


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