Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Keil программа в RAM
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Xeon
Раскажите,плиз, по подробней как это всё дело работает, для чего нужно. Камень stm32f407vg.
haker_fox
QUOTE (Xeon @ Feb 13 2012, 18:42) *
Раскажите,плиз, по подробней как это всё дело работает, для чего нужно. Камень stm32f407vg.

Я, конечно, далеко не спец. Но маленько сталкивался с этим делом

По сути, не важно, где размещена программа (в ОЗУ или РПЗУ). Микроконтроллеру все равно. Другое дело, что нужно правильно слинковать программу, т.е. указать ее реальный стартовый адрес. Для FLASH, как правило, это 0, для ОЗУ - самый различный вариант.
Также, необходимо правильно организовать таблицу (вектора) прерываний. Т.е., например, разместить их в ОЗУ, либо из FLASH сделать соответствующие переходы.


Также, в ОЗУ можно разместить либо всю программу, либо ее фрагмент (вроде считается, что код из ОЗУ исполняется быстрее, это может быть полезно для вычислительных функций).

Для чего нужно? Мне вот лично, имея на борту 32 Мб ОЗУ, проще "прошивать" (правильнее загружать) их как раз туда, не "портя" FLASH. Мой загрузчик как раз это может, принимая файлы либо по последовательному порту, либо через Ethernet (пока в стадии дописывания). Считаю, что это помогает при отладке, т.к. программу хоть каждые 5 секунд меняй, ОЗУ-то на такой режим работы расчитано, чего не скажешь о ФЛЕШ (вот тут я могу ошибаться, ФЛЕШ тоже можно очень часто перепрошивать). Ну, и в конце концов, программу в ОЗУ загрузить быстрее, чем во FLASH...

Как-то так... спонтанный поток мыслей... rolleyes.gif
Xeon
haker_fox спасибо!)

А как всё это дело настраивается в Кейле? И как физически, например часть кода (какая либо функция) оказывается в RAM, ведь както-ктото должен её туда загрузить?
sparcmaster
Цитата(Xeon @ Feb 14 2012, 09:13) *
А как всё это дело настраивается в Кейле? И как физически, например часть кода (какая либо функция) оказывается в RAM, ведь както-ктото должен её туда загрузить?

\Keil\ARM\Examples\RAM_Function
haker_fox
QUOTE (Xeon @ Feb 14 2012, 13:13) *
И как физически, например часть кода (какая либо функция) оказывается в RAM, ведь както-ктото должен её туда загрузить?

Полагаю, что этим start-up код занимается rolleyes.gif
toweroff
Цитата(haker_fox @ Feb 14 2012, 12:51) *
Полагаю, что этим start-up код занимается rolleyes.gif

почему "полагаю"?
стартап копирует RAM функции туда, где написано в скаттере.
В любом случае, код функции изначально во flash, но собран с учетом размещения в RAM
я вот начал бодаться с перемещаемым кодом, чтобы, по мере необходимости, размещать код там, где придется... пока только на этапе чтения мануалов biggrin.gif
haker_fox
QUOTE (toweroff @ Feb 15 2012, 01:14) *
почему "полагаю"?

А потому что за GCC уверен, а с Keil'ом плотно не работал, поэтому решил быть осторожным rolleyes.gif
Хотя действительно, ну кто еще будет из флеши что-то в RAM копировать, как не startup rolleyes.gif Ведь к вызову "главной" функции "main" все должно быть "готово".
Xeon
Цитата(toweroff @ Feb 14 2012, 21:14) *
почему "полагаю"?
стартап копирует RAM функции туда, где написано в скаттере.
В любом случае, код функции изначально во flash, но собран с учетом размещения в RAM
я вот начал бодаться с перемещаемым кодом, чтобы, по мере необходимости, размещать код там, где придется... пока только на этапе чтения мануалов biggrin.gif

А можешь поделиться манами? Пожалуйста!)

И можно по подробней о скаттер файле...
_Pasha
Цитата(toweroff @ Feb 14 2012, 21:14) *
В любом случае, код функции изначально во flash, но собран с учетом размещения в RAM
я вот начал бодаться с перемещаемым кодом

А кто-нить бодался в ГЦЦ таким образом? Какие рекомендации?
haker_fox
QUOTE (Xeon @ Feb 15 2012, 17:36) *
А можешь поделиться манами? Пожалуйста!)

И можно по подробней о скаттер файле...

Если Вы о Кейле, так там же справка встроенная есть...
QUOTE (_Pasha @ Feb 15 2012, 20:50) *
А кто-нить бодался в ГЦЦ таким образом? Какие рекомендации?

Я нет, я "сам" копировал код в ОЗУ...
toweroff
Цитата(Xeon @ Feb 15 2012, 13:36) *
А можешь поделиться манами? Пожалуйста!)

И можно по подробней о скаттер файле...

да чем делиться-то... читаем все у производителя sm.gif
Keil
там и ищем, например, scatter
редактор
В Keil можно и штатными средствами все сделать. Функции, которые необходимо в RAMе исполнять, надо собрать в один файл.Далее правой кнопкой вызвать свойства для файла и установить размещение кода в области RAM (MEMORY ASSIGMENT поле Code/Const)
Xeon
Спасибо... буду разбираться sm.gif
sparcmaster
Цитата(редактор @ Feb 17 2012, 12:18) *
В Keil можно и штатными средствами все сделать. Функции, которые необходимо в RAMе исполнять, надо собрать в один файл.Далее правой кнопкой вызвать свойства для файла и установить размещение кода в области RAM (MEMORY ASSIGMENT поле Code/Const)

Что и было показано в штатном примере компилятора, на который я давал ссылку. Но почему-то эти примеры редко кто смотрит, сразу бегут создавать темы. sm.gif
PS Кстати у Тревора Мартина этот вариант тоже показан в книжке.
toweroff
Цитата(редактор @ Feb 17 2012, 12:18) *
В Keil можно и штатными средствами все сделать. Функции, которые необходимо в RAMе исполнять, надо собрать в один файл.Далее правой кнопкой вызвать свойства для файла и установить размещение кода в области RAM (MEMORY ASSIGMENT поле Code/Const)

Можно. Но иногда нужно разместить какие-то вещи в определенном месте RAM, и огульно весь файл отдавать в одну область не комильфо
MK2
я так понимаю создание и редактирование scatter-файла не доступно в лайт версии кейла?
toweroff
Цитата(MK2 @ Feb 18 2012, 15:26) *
я так понимаю создание и редактирование scatter-файла не доступно в лайт версии кейла?

почему? ограничение только на размер кода в 32К вроде как
MK2
здесь http://www.keil.com/demo/limits.asp
не очень четко написано:
"The linker does not accept scatter-loading description files for sophisticated memory layouts. The --scatter command line option is disabled."
я так понял свои комбинации загружать нельзя, только то что кейл генерит
toweroff
Цитата(MK2 @ Feb 19 2012, 14:56) *

хмм.. действительно... спасибо, буду иметь ввиду
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.