|
Keil программа в RAM |
|
|
|
Feb 14 2012, 02:19
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
QUOTE (Xeon @ Feb 13 2012, 18:42)  Раскажите,плиз, по подробней как это всё дело работает, для чего нужно. Камень stm32f407vg. Я, конечно, далеко не спец. Но маленько сталкивался с этим делом По сути, не важно, где размещена программа (в ОЗУ или РПЗУ). Микроконтроллеру все равно. Другое дело, что нужно правильно слинковать программу, т.е. указать ее реальный стартовый адрес. Для FLASH, как правило, это 0, для ОЗУ - самый различный вариант. Также, необходимо правильно организовать таблицу (вектора) прерываний. Т.е., например, разместить их в ОЗУ, либо из FLASH сделать соответствующие переходы. Также, в ОЗУ можно разместить либо всю программу, либо ее фрагмент (вроде считается, что код из ОЗУ исполняется быстрее, это может быть полезно для вычислительных функций). Для чего нужно? Мне вот лично, имея на борту 32 Мб ОЗУ, проще "прошивать" (правильнее загружать) их как раз туда, не "портя" FLASH. Мой загрузчик как раз это может, принимая файлы либо по последовательному порту, либо через Ethernet (пока в стадии дописывания). Считаю, что это помогает при отладке, т.к. программу хоть каждые 5 секунд меняй, ОЗУ-то на такой режим работы расчитано, чего не скажешь о ФЛЕШ (вот тут я могу ошибаться, ФЛЕШ тоже можно очень часто перепрошивать). Ну, и в конце концов, программу в ОЗУ загрузить быстрее, чем во FLASH... Как-то так... спонтанный поток мыслей...
--------------------
Выбор.
|
|
|
|
|
Feb 14 2012, 08:37
|
Частый гость
 
Группа: Свой
Сообщений: 93
Регистрация: 13-01-12
Из: Гатчина
Пользователь №: 69 333

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

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

|
Цитата(haker_fox @ Feb 14 2012, 12:51)  Полагаю, что этим start-up код занимается  почему "полагаю"? стартап копирует RAM функции туда, где написано в скаттере. В любом случае, код функции изначально во flash, но собран с учетом размещения в RAM я вот начал бодаться с перемещаемым кодом, чтобы, по мере необходимости, размещать код там, где придется... пока только на этапе чтения мануалов
|
|
|
|
|
Feb 15 2012, 09:36
|
Частый гость
 
Группа: Участник
Сообщений: 140
Регистрация: 21-04-11
Пользователь №: 64 524

|
Цитата(toweroff @ Feb 14 2012, 21:14)  почему "полагаю"? стартап копирует RAM функции туда, где написано в скаттере. В любом случае, код функции изначально во flash, но собран с учетом размещения в RAM я вот начал бодаться с перемещаемым кодом, чтобы, по мере необходимости, размещать код там, где придется... пока только на этапе чтения мануалов  А можешь поделиться манами? Пожалуйста!) И можно по подробней о скаттер файле...
|
|
|
|
|
Feb 15 2012, 14:04
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
QUOTE (Xeon @ Feb 15 2012, 17:36)  А можешь поделиться манами? Пожалуйста!)
И можно по подробней о скаттер файле... Если Вы о Кейле, так там же справка встроенная есть... QUOTE (_Pasha @ Feb 15 2012, 20:50)  А кто-нить бодался в ГЦЦ таким образом? Какие рекомендации? Я нет, я "сам" копировал код в ОЗУ...
--------------------
Выбор.
|
|
|
|
|
Feb 17 2012, 08:36
|
Частый гость
 
Группа: Свой
Сообщений: 93
Регистрация: 13-01-12
Из: Гатчина
Пользователь №: 69 333

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