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

 
 
> Как скомпилировать сишный код в RAM?
AndyDev
сообщение Nov 23 2012, 17:28
Сообщение #1


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

Группа: Участник
Сообщений: 163
Регистрация: 17-11-07
Пользователь №: 32 406



Подскажите плиз, как под Keil'ом скомпилировать сишный код в RAM?
На сколько я понимаю, если такое возможно, то код из ROM должен при старте каким-то загрузчиком быть перенесен в RAM.

Зачем это нужно? Очень просто - из ОЗУ код выполняется гораздо быстрее, чем из медленной Flash. И чем выше тактовая частота, тем эта разность заметнее.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
haker_fox
сообщение Nov 24 2012, 08:56
Сообщение #2


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

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



QUOTE (AndyDev @ Nov 24 2012, 02:28) *
Подскажите плиз, как под Keil'ом скомпилировать сишный код в RAM?

Да. Настройки линкера - Ваша цель rolleyes.gif

QUOTE (Alexey Belyaev @ Nov 24 2012, 15:06) *
Раз уж такая тема пошла. подскажите, а возможно загрузить в память самостоятельную прошивку и полностью перейти на нее?

Да. У меня так работает мой загрузчик. При старте МК получает ip от DHCP сервера (можно и статический), и представляется FTP сервером. Затем, я "захожу" туда Total Commander'ом и "заливаю" бинарник. Чтобы сообщить загрузчику, что код можно исполнять, нужно "дозалить" файл с именем done. Полуив его, загрузчик проверяет, загружен ли до этого файл *.bin, и если да, то передает ему управление. Если нет - в моем случае ничего не делает. Ждет)


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
AndyDev
сообщение Nov 24 2012, 10:38
Сообщение #3


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

Группа: Участник
Сообщений: 163
Регистрация: 17-11-07
Пользователь №: 32 406



Подскажите тогда заодно, как в Кейле передаются параметеры в функцию, написанную на асме? Через стек, регистры? Какие регистры можно в этой функции использовать? Где вообще почитать инфу о соглашении на счет регистров в подобном случае?

Цитата(Allregia @ Nov 24 2012, 01:52) *
В Кейле - вынести эти функции в отдельный файл, и в опциях для этого файла указать размещение в ОЗУ.
В IAR вроде можно просто перед функцией написать __ramfunction или как-то так.


Не всегда. Например для STM32F407 -"Z", это практически ничего не дает.


Что-то я не нашел, где устанавливается размещение ОЗУ для файла.

У меня NXP1114, у него флешка слабенькая, на 50Мгц много тормозов дает.
Go to the top of the page
 
+Quote Post
SyncLair
сообщение Nov 24 2012, 11:12
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 209
Регистрация: 6-01-12
Пользователь №: 69 197



Цитата(AndyDev @ Nov 24 2012, 14:38) *
Подскажите тогда заодно, как в Кейле передаются параметеры в функцию, написанную на асме? Через стек, регистры? Какие регистры можно в этой функции использовать? Где вообще почитать инфу о соглашении на счет регистров в подобном случае?


В кейле как и везде передаюстся согласно стандарту АРМ на вызовы процедур.
AASPC-- так вроде называется. Если коротко, то через регистры с нулевого по третий.



--------------------
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AndyDev   Как скомпилировать сишный код в RAM?   Nov 23 2012, 17:28
- - Allregia   Цитата(AndyDev @ Nov 23 2012, 19:28) Подс...   Nov 23 2012, 21:52
- - Alexey Belyaev   Раз уж такая тема пошла. подскажите, а возможно за...   Nov 24 2012, 06:06
|- - Сергей Борщ   QUOTE (Alexey Belyaev @ Nov 24 2012, 08:0...   Nov 24 2012, 08:27
||- - Allregia   Цитата(AndyDev @ Nov 24 2012, 12:38) Что-...   Nov 24 2012, 11:11
||- - _Артём_   Цитата(AndyDev @ Nov 24 2012, 12:38) У ме...   Nov 24 2012, 11:47
||- - AndyDev   Цитата(_Артём_ @ Nov 24 2012, 15:47) Како...   Nov 24 2012, 11:52
||- - Сергей Борщ   QUOTE (AndyDev @ Nov 24 2012, 13:52) Сами...   Nov 24 2012, 20:15
||- - AndyDev   Цитата(Сергей Борщ @ Nov 25 2012, 00:15) ...   Nov 25 2012, 11:34
||- - AndyDev   Цитата(AndyDev @ Nov 25 2012, 15:34) Заме...   Nov 26 2012, 13:55
||- - Сергей Борщ   QUOTE (AndyDev @ Nov 26 2012, 15:55) А са...   Nov 26 2012, 21:56
||- - _Артём_   Цитата(AndyDev @ Nov 26 2012, 15:55) Пере...   Nov 26 2012, 22:50
||- - AndyDev   Цитата(_Артём_ @ Nov 27 2012, 02:50) Про ...   Nov 27 2012, 22:40
|- - SyncLair   Цитата(haker_fox @ Nov 24 2012, 12:56) Да...   Nov 24 2012, 11:07
|- - haker_fox   QUOTE (SyncLair @ Nov 24 2012, 20:07) Изв...   Nov 24 2012, 11:35
- - Вячик13   Как поместить при компилировании, допустим, подпро...   Nov 29 2012, 06:16
|- - Сергей Борщ   QUOTE (Вячик13 @ Nov 29 2012, 08:16) как ...   Nov 29 2012, 07:03
- - редактор   За это отвечает стартап файл. Изначально тело подп...   Nov 29 2012, 07:05
- - Вячик13   Спасибо, понял.   Nov 29 2012, 07:26
- - AndyDev   Не совсем по теме, но в том же проекте. Использую...   Feb 12 2013, 18:10
- - -JonnS-   ЦитатаВ стандартных типа stdio и stdlib ее нету. s...   Feb 12 2013, 18:51
- - AndyDev   Цитата(-JonnS- @ Feb 12 2013, 22...   Feb 13 2013, 09:18
- - Lotor   Цитата(AndyDev @ Feb 13 2013, 13:18) Боль...   Feb 13 2013, 09:42
- - AndyDev   Цитата(Lotor @ Feb 13 2013, 13:42) Можно....   Feb 13 2013, 09:46
- - Lotor   Цитата(AndyDev @ Feb 13 2013, 13:46) У ме...   Feb 13 2013, 09:52
- - AndyDev   Цитата(Lotor @ Feb 13 2013, 13:52) Как-то...   Feb 13 2013, 12:03


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

 


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


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