|
Bootloader в RAM у STM32F103, Никто не занимался? |
|
|
|
Dec 24 2014, 11:46
|

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

|
Всем привет! Никто не пробовал загружать бутлоадер в RAM и уже от туда "править балом"? Думаю написать код, который бы загружал по доступному каналу (в частности у меня USB устройство, так по USB и буду грузить) в память загрузчик и передавал бы ему управление. Всё понятно, вот только ни разу даже не пытался исполнять код из RAM на STM32. Может есть какие примеры? По сути в памяти будет "программа" целиком с таблицей вектором и всем прочим. Только вот не могу ещё определиться всегда ли в одних и тех же адресах памяти или "как получится", но то что непрерывно это точно  Кто что скажет? Отговорите может от затеи?
|
|
|
|
|
 |
Ответов
(1 - 14)
|
Dec 25 2014, 04:53
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Alexey Belyaev @ Dec 24 2014, 17:46)  Всё понятно, вот только ни разу даже не пытался исполнять код из RAM на STM32. Может есть какие примеры? По сути в памяти будет "программа" целиком с таблицей вектором и всем прочим. Только вот не могу При отладке небольшого firmware, у меня обычно есть отдельная конфигурация (icf-файл IAR с RO-секциями в ОЗУ) для выполнения кода в ОЗУ. Для релизной сборки просто компилю тот же самый проект в другой конфигурации с icf-файлом с компоновкой RO-секций во флешь. Грузится в ОЗУ JTAG-ом гораздо быстрее, так что отлаживать удобнее. Да и флешь лишний раз не протирается. Никакой разницы в выполнении во флешь и ОЗУ не наблюдается (если конечно всё корректно написано). Для чего-то другого использовать код в ОЗУ смысла мало. Имхо...
|
|
|
|
|
Dec 25 2014, 10:48
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(toweroff @ Dec 25 2014, 13:30)  ну как.. скорость... реально на ARM9 код из TCM выполняется раза в два быстрее, чем из флеш. Критические по скорости секции можно туда складывать На ARM9 код редко выполняется из флешь. Обычно - из кеша. И что-то я сомневаюсь, что из TCM у вас будет в 2 раза быстрее чем из L1-кеша. У меня на ARM9 включение кеша кода практически уравнивает в скорости внутреннюю ОЗУ с внешней SDRAM. PS: Да и вообще-то в топике STM32F103 где TCM, как я понимаю, не пахнет.
|
|
|
|
|
Dec 26 2014, 15:53
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(Alexey Belyaev @ Dec 24 2014, 14:46)  ...Никто не пробовал загружать бутлоадер в RAM и уже от туда "править балом"?...Кто что скажет? Отговорите может от затеи? не стоит. не из озу, из флэша, но адреса не определены заранее. минусы: 1) отладиться на сях не прокатит. 2) при достижения некоторых размеров кода, компилятор иногда ставит явную адресацию, а иногда косвенную. всякие попытки явно сказать ему чтоб не умничал - не увенчалось успехом. выход нашёл , но достаточно кривой. 3) Прелопачивать стандартные библиотеки, оси. На предмет статик данных и допиливания до Ваших извратов. 4) Тратить достаточно времени для проверки всех мест, обращения к таким данным. на маленьких объёмах кода - в принципе не наблюдается.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|