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

 
 
> Bootloader в RAM у STM32F103, Никто не занимался?
Spider
сообщение Dec 24 2014, 11:46
Сообщение #1


В поисках истины
***

Группа: Свой
Сообщений: 431
Регистрация: 7-01-06
Из: Россия
Пользователь №: 12 923



Всем привет!

Никто не пробовал загружать бутлоадер в RAM и уже от туда "править балом"?
Думаю написать код, который бы загружал по доступному каналу (в частности у меня USB устройство, так по USB и буду грузить) в память загрузчик и передавал бы ему управление.
Всё понятно, вот только ни разу даже не пытался исполнять код из RAM на STM32. Может есть какие примеры? По сути в памяти будет "программа" целиком с таблицей вектором и всем прочим. Только вот не могу ещё определиться всегда ли в одних и тех же адресах памяти или "как получится", но то что непрерывно это точно sm.gif
Кто что скажет? Отговорите может от затеи?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 14)
toweroff
сообщение Dec 24 2014, 12:10
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



То есть изначально неизвестно расположение в памяти?
Какая среда разработки?
Go to the top of the page
 
+Quote Post
Spider
сообщение Dec 24 2014, 12:53
Сообщение #3


В поисках истины
***

Группа: Свой
Сообщений: 431
Регистрация: 7-01-06
Из: Россия
Пользователь №: 12 923



Ну пока ещё всё видами по воде, и не могу с уверенностью сказать где оно будет.
Среда... ну есть и IAR и Keil, но как-то так получилось что пишу в Eclipse+GCC (видать привычка с Linux...)
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 24 2014, 13:03
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Копать в сторону "Position independence", http://infocenter.arm.com/help/index.jsp?t...cc_bcfjjdfj.htm
Go to the top of the page
 
+Quote Post
Spider
сообщение Dec 24 2014, 13:34
Сообщение #5


В поисках истины
***

Группа: Свой
Сообщений: 431
Регистрация: 7-01-06
Из: Россия
Пользователь №: 12 923



Цитата(toweroff @ Dec 24 2014, 16:03) *
Копать в сторону "Position independence", http://infocenter.arm.com/help/index.jsp?t...cc_bcfjjdfj.htm

Спасиб. Нашёл что-то похожее, но наоборот sm.gif
https://gitorious.org/miosix-kernel/miosix-...otloaders/stm32
Тут как я понял ребята сделали загрузчик и выполняют код из памяти, у меня же всё наоборот, но реализация пригодится sm.gif
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 24 2014, 13:42
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Вообще грузить откуда-то загрузчик - уже странно звучит, загрузчик как раз для того, чтобы что-то загружать sm.gif
Он для того и есть, чтобы девайс в любом случае не превратился в кирпич, чтобы с его помощью можно было шнурком загрузить приложение (или загрузчик 2-го уровня, с наличием рабочих интерфейсов)
Go to the top of the page
 
+Quote Post
Spider
сообщение Dec 24 2014, 14:01
Сообщение #7


В поисках истины
***

Группа: Свой
Сообщений: 431
Регистрация: 7-01-06
Из: Россия
Пользователь №: 12 923



Ну раньше у меня всегда так и было. А тут хочу чего-нить эдакого! Захотел изменить что-нить в алгоритме загрузки - на тебе, взял да поменял!
Ну да странно, но вот хочется cranky.gif
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 24 2014, 14:48
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(Alexey Belyaev @ Dec 24 2014, 17:01) *
Ну раньше у меня всегда так и было. А тут хочу чего-нить эдакого! Захотел изменить что-нить в алгоритме загрузки - на тебе, взял да поменял!
Ну да странно, но вот хочется cranky.gif

так это делается как раз заменой бута 2-го уровня wink.gif
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Dec 24 2014, 17:57
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(Alexey Belyaev @ Dec 24 2014, 14:46) *
Никто не пробовал загружать бутлоадер в RAM и уже от туда "править балом"?


В STM32F4xx загружал основной код в RAM. Работает именно так, как и должно, граблей не обнаружено. В тот момент - keil, но ничего не мешает обучить линкер любого другого компилятора.

Другой вопрос. Кто и как загрузит этот бутлоадер? Основной код? Так проблема обычно в том, что в самый нужный момент этот основной код сломался, и его срочно нужно заменить.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 25 2014, 04:53
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Alexey Belyaev @ Dec 24 2014, 17:46) *
Всё понятно, вот только ни разу даже не пытался исполнять код из RAM на STM32. Может есть какие примеры? По сути в памяти будет "программа" целиком с таблицей вектором и всем прочим. Только вот не могу

При отладке небольшого firmware, у меня обычно есть отдельная конфигурация (icf-файл IAR с RO-секциями в ОЗУ) для выполнения кода в ОЗУ.
Для релизной сборки просто компилю тот же самый проект в другой конфигурации с icf-файлом с компоновкой RO-секций во флешь.
Грузится в ОЗУ JTAG-ом гораздо быстрее, так что отлаживать удобнее. Да и флешь лишний раз не протирается.
Никакой разницы в выполнении во флешь и ОЗУ не наблюдается (если конечно всё корректно написано).

Для чего-то другого использовать код в ОЗУ смысла мало. Имхо...
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 25 2014, 07:30
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(jcxz @ Dec 25 2014, 07:53) *
Для чего-то другого использовать код в ОЗУ смысла мало. Имхо...

ну как.. скорость...
реально на ARM9 код из TCM выполняется раза в два быстрее, чем из флеш. Критические по скорости секции можно туда складывать
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 25 2014, 10:48
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(toweroff @ Dec 25 2014, 13:30) *
ну как.. скорость...
реально на ARM9 код из TCM выполняется раза в два быстрее, чем из флеш. Критические по скорости секции можно туда складывать

На ARM9 код редко выполняется из флешь. Обычно - из кеша.
И что-то я сомневаюсь, что из TCM у вас будет в 2 раза быстрее чем из L1-кеша.
У меня на ARM9 включение кеша кода практически уравнивает в скорости внутреннюю ОЗУ с внешней SDRAM.

PS: Да и вообще-то в топике STM32F103 где TCM, как я понимаю, не пахнет.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 25 2014, 17:23
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(jcxz @ Dec 25 2014, 13:48) *
На ARM9 код редко выполняется из флешь. Обычно - из кеша.
И что-то я сомневаюсь, что из TCM у вас будет в 2 раза быстрее чем из L1-кеша.
У меня на ARM9 включение кеша кода практически уравнивает в скорости внутреннюю ОЗУ с внешней SDRAM.

PS: Да и вообще-то в топике STM32F103 где TCM, как я понимаю, не пахнет.

я имел ввиду (флеш|AHB RAM) супротив TCM. А L1 там нет вообще (LPC2919)
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 26 2014, 05:05
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(toweroff @ Dec 25 2014, 23:23) *
я имел ввиду (флеш|AHB RAM) супротив TCM. А L1 там нет вообще (LPC2919)

В Вашем нет, а в моём - есть 32K (OMAP-L137). А у топикстартера вообще Cortex-M3.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Dec 26 2014, 15:53
Сообщение #15


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(Alexey Belyaev @ Dec 24 2014, 14:46) *
...Никто не пробовал загружать бутлоадер в RAM и уже от туда "править балом"?...Кто что скажет? Отговорите может от затеи?


не стоит.
не из озу, из флэша, но адреса не определены заранее.
минусы:
1) отладиться на сях не прокатит.
2) при достижения некоторых размеров кода, компилятор иногда ставит явную адресацию, а иногда косвенную. всякие попытки явно сказать
ему чтоб не умничал - не увенчалось успехом. выход нашёл , но достаточно кривой.
3) Прелопачивать стандартные библиотеки, оси. На предмет статик данных и допиливания до Ваших извратов.
4) Тратить достаточно времени для проверки всех мест, обращения к таким данным.

на маленьких объёмах кода - в принципе не наблюдается.

Go to the top of the page
 
+Quote Post

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

 


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


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