|
Как скомпилировать сишный код в RAM? |
|
|
|
 |
Ответов
|
Nov 24 2012, 08:56
|

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

|
QUOTE (AndyDev @ Nov 24 2012, 02:28)  Подскажите плиз, как под Keil'ом скомпилировать сишный код в RAM? Да. Настройки линкера - Ваша цель QUOTE (Alexey Belyaev @ Nov 24 2012, 15:06)  Раз уж такая тема пошла. подскажите, а возможно загрузить в память самостоятельную прошивку и полностью перейти на нее? Да. У меня так работает мой загрузчик. При старте МК получает ip от DHCP сервера (можно и статический), и представляется FTP сервером. Затем, я "захожу" туда Total Commander'ом и "заливаю" бинарник. Чтобы сообщить загрузчику, что код можно исполнять, нужно "дозалить" файл с именем done. Полуив его, загрузчик проверяет, загружен ли до этого файл *.bin, и если да, то передает ему управление. Если нет - в моем случае ничего не делает. Ждет)
--------------------
Выбор.
|
|
|
|
|
Nov 24 2012, 10:38
|
Частый гость
 
Группа: Участник
Сообщений: 163
Регистрация: 17-11-07
Пользователь №: 32 406

|
Подскажите тогда заодно, как в Кейле передаются параметеры в функцию, написанную на асме? Через стек, регистры? Какие регистры можно в этой функции использовать? Где вообще почитать инфу о соглашении на счет регистров в подобном случае? Цитата(Allregia @ Nov 24 2012, 01:52)  В Кейле - вынести эти функции в отдельный файл, и в опциях для этого файла указать размещение в ОЗУ. В IAR вроде можно просто перед функцией написать __ramfunction или как-то так.
Не всегда. Например для STM32F407 -"Z", это практически ничего не дает. Что-то я не нашел, где устанавливается размещение ОЗУ для файла. У меня NXP1114, у него флешка слабенькая, на 50Мгц много тормозов дает.
|
|
|
|
|
Nov 24 2012, 11:52
|
Частый гость
 
Группа: Участник
Сообщений: 163
Регистрация: 17-11-07
Пользователь №: 32 406

|
Цитата(_Артём_ @ Nov 24 2012, 15:47)  Какой выигрыш получится от переноса функций в ОЗУ? Есть такие данные? Зависит от конкретного микроконтроллера. Если, допустим, у вас от 20-30Мгц задержка на доступ во флеш 1, от 30 до 40 - 2, 40 до 50 - 3, то на каждую считанную команду вместо одного такта будет тратиться 2, 3 и 4, соответственно. Сами прикиньте.
|
|
|
|
|
Nov 24 2012, 20:15
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (AndyDev @ Nov 24 2012, 13:52)  Сами прикиньте. Шина к флешке у него, насколько помню, 32-битная, команды 16-битные, значит за один цикл чтения вынимаются 2 команды. На переходах это, конечно, не спасает, но код состоит не из одних переходов. Далеко не все команды исполняются за 1 такт, значит во время их исполнения достаточно времени для чтения следующей команды. Прикидка показывает, что не все так страшно. Поэтому вас и спрашивали о реальных данных.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Nov 25 2012, 11:34
|
Частый гость
 
Группа: Участник
Сообщений: 163
Регистрация: 17-11-07
Пользователь №: 32 406

|
Цитата(Сергей Борщ @ Nov 25 2012, 00:15)  Прикидка показывает, что не все так страшно. Поэтому вас и спрашивали о реальных данных. Замеряю - напишу.
|
|
|
|
|
Nov 26 2012, 13:55
|
Частый гость
 
Группа: Участник
Сообщений: 163
Регистрация: 17-11-07
Пользователь №: 32 406

|
Цитата(AndyDev @ Nov 25 2012, 15:34)  Замеряю - напишу. Перенес несколько критичных к скорости функций в ОЗУ, и вся программа стала работать примерно на 50-60% быстрее. А сами критичные функции, как-то ДПФ и т.д. - ускорились почти в два раза. Микроконтроллер LPC1114, тактовая частота 48МГц. Делитель тактовой частоты FlashClock = 3 (как и положено для скоростей от 40 до 50МГц).
|
|
|
|
Сообщений в этой теме
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  SyncLair Цитата(AndyDev @ Nov 24 2012, 14:38) Подс... Nov 24 2012, 11:12       _Артём_ Цитата(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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|