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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Keil программа в RAM
Xeon
сообщение Feb 13 2012, 10:42
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 140
Регистрация: 21-04-11
Пользователь №: 64 524



Раскажите,плиз, по подробней как это всё дело работает, для чего нужно. Камень stm32f407vg.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Feb 14 2012, 02:19
Сообщение #2


Познающий...
******

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



QUOTE (Xeon @ Feb 13 2012, 18:42) *
Раскажите,плиз, по подробней как это всё дело работает, для чего нужно. Камень stm32f407vg.

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

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


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

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

Как-то так... спонтанный поток мыслей... rolleyes.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Xeon
сообщение Feb 14 2012, 05:13
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 140
Регистрация: 21-04-11
Пользователь №: 64 524



haker_fox спасибо!)

А как всё это дело настраивается в Кейле? И как физически, например часть кода (какая либо функция) оказывается в RAM, ведь както-ктото должен её туда загрузить?
Go to the top of the page
 
+Quote Post
sparcmaster
сообщение Feb 14 2012, 08:37
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 93
Регистрация: 13-01-12
Из: Гатчина
Пользователь №: 69 333



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

\Keil\ARM\Examples\RAM_Function
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Feb 14 2012, 08:51
Сообщение #5


Познающий...
******

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



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

Полагаю, что этим start-up код занимается rolleyes.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Feb 14 2012, 17:14
Сообщение #6


Гуру
******

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



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

почему "полагаю"?
стартап копирует RAM функции туда, где написано в скаттере.
В любом случае, код функции изначально во flash, но собран с учетом размещения в RAM
я вот начал бодаться с перемещаемым кодом, чтобы, по мере необходимости, размещать код там, где придется... пока только на этапе чтения мануалов biggrin.gif
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Feb 15 2012, 00:53
Сообщение #7


Познающий...
******

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



QUOTE (toweroff @ Feb 15 2012, 01:14) *
почему "полагаю"?

А потому что за GCC уверен, а с Keil'ом плотно не работал, поэтому решил быть осторожным rolleyes.gif
Хотя действительно, ну кто еще будет из флеши что-то в RAM копировать, как не startup rolleyes.gif Ведь к вызову "главной" функции "main" все должно быть "готово".


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Xeon
сообщение Feb 15 2012, 09:36
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 140
Регистрация: 21-04-11
Пользователь №: 64 524



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

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

И можно по подробней о скаттер файле...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 15 2012, 12:50
Сообщение #9


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



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

А кто-нить бодался в ГЦЦ таким образом? Какие рекомендации?
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Feb 15 2012, 14:04
Сообщение #10


Познающий...
******

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



QUOTE (Xeon @ Feb 15 2012, 17:36) *
А можешь поделиться манами? Пожалуйста!)

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

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

Я нет, я "сам" копировал код в ОЗУ...


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Feb 16 2012, 08:08
Сообщение #11


Гуру
******

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



Цитата(Xeon @ Feb 15 2012, 13:36) *
А можешь поделиться манами? Пожалуйста!)

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

да чем делиться-то... читаем все у производителя sm.gif
Keil
там и ищем, например, scatter
Go to the top of the page
 
+Quote Post
редактор
сообщение Feb 17 2012, 08:18
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



В Keil можно и штатными средствами все сделать. Функции, которые необходимо в RAMе исполнять, надо собрать в один файл.Далее правой кнопкой вызвать свойства для файла и установить размещение кода в области RAM (MEMORY ASSIGMENT поле Code/Const)


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
Xeon
сообщение Feb 17 2012, 08:29
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 140
Регистрация: 21-04-11
Пользователь №: 64 524



Спасибо... буду разбираться sm.gif
Go to the top of the page
 
+Quote Post
sparcmaster
сообщение Feb 17 2012, 08:36
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 93
Регистрация: 13-01-12
Из: Гатчина
Пользователь №: 69 333



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

Что и было показано в штатном примере компилятора, на который я давал ссылку. Но почему-то эти примеры редко кто смотрит, сразу бегут создавать темы. sm.gif
PS Кстати у Тревора Мартина этот вариант тоже показан в книжке.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Feb 17 2012, 10:48
Сообщение #15


Гуру
******

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



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

Можно. Но иногда нужно разместить какие-то вещи в определенном месте RAM, и огульно весь файл отдавать в одну область не комильфо
Go to the top of the page
 
+Quote Post

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

 


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


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