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

 
 
> stm32 embedded SRAM boot mode
igorle
сообщение May 8 2013, 22:03
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 338
Регистрация: 14-07-12
Пользователь №: 72 753



На моем учебном борде (stm32f103c8) я умею загружать программу через SWD или через UART.
Хочу освоить загрузку из памяти, но не могу найти информацию ни на русском, ни на английском.

Про bootloader (который с boot0=1 boot1=0) много говорят, а про SRAM (который boot0 = boot1 =1) только упоминают, что есть такой. И все.

Работаю с Keilом.
Я догадываюсь, что на закладке target в свойствах проекта надо начальный адрес с 0x08000000 на 0x20000000 поменять, и соответственно начало РАМ сдвинуть с 0x20000000 на 0x20002800, но этого не достаточно.
Еще в настройках дебагера по умолчанию разрешалось использовать РАМ начиная с 20000000. Я это изменил на 20002800.

Когда я пытаюсь забежать программу - получаю сообщение "Flash Download Filed". Логично, мы же должны грузить в РАМ, а не во флэш. Но где и как сказать - не догоняю.

Кто-нибудь решал такую проблему?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Gorby
сообщение May 10 2013, 21:51
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 449
Регистрация: 28-10-04
Из: Украина
Пользователь №: 1 002



Цитата(igorle @ May 9 2013, 02:03) *
Хочу освоить загрузку из памяти, но не могу найти информацию ни на русском, ни на английском.

Когда я пытаюсь забежать программу - получаю сообщение "Flash Download Filed". Логично, мы же должны грузить в РАМ, а не во флэш. Но где и как сказать - не догоняю.

Кто-нибудь решал такую проблему?


К чему стартовать из памяти, если ее содержимое - нули или не определено?

Вот правильная последовательность:

- пишется основная программа и компилируется так, чтобы работала из ОЗУ.
- в стартапе (тот модуль, что на АСМе пишется) пишем маленькую процедурку, которая переписывает код из флеши в ОЗУ и затем передает ему управление. Возможно, включает Ремап.

А далее действуем так, как БУДТО имеем дело с программой для флеши. То есть программатором она должна записаться во флеш, оттуда вызваться, переписать себя в ОЗУ и передать управление туда. Теперь при рестарте и выборе ОЗУ, она сразу стартанет из ОЗУ. Зачем вам такое надо? В старые времена этим пользовались на АРМах с медленной внешней флеш-памятью, при холодном старте копируя всю программу в быстрое внутреннее ОЗУ.


--------------------
Умею молчать на 37 языках...
Go to the top of the page
 
+Quote Post



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

 


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


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