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

 
 
> Размещение функции в RAM, LPC2000, Keil
toweroff
сообщение Jun 9 2010, 19:23
Сообщение #1


Гуру
******

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



Попробовал разместить критичные, с точки зрения времени выполнения, функции в RAM. До этого не пользовался, но сравнения для )
Keil 4.11, использовал следующие комбинации для кода и скаттера:

1.
Код
Код
#pragma arm section code = "ramfunc"
тело
#pragma arm section code


scatter
Код
LR_IROM1 0x00000000  0x00080000 {  ; load region size_region
  ER_IROM1 0x00000000
  {; load address = execution address
   STARTUP.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
}
  RW_IRAM1 0x40000000 0x00010000  {; RW data
   *(ramfunc)
   .ANY (+RW +ZI)
  }
}


2.
По совету, найденному в примерах Keil, добавил для всего С-файла в свойствах "Memory Assignment->Code/Const->IRAM1(0x40000000-0x4000FFFF)" и собрал все со сгенеренным scatter'ом

Код - убрал прагмы

scatter
Код
LR_IROM1 0x00000000 0x00080000  {   ; load region size_region
  ER_IROM1 0x00000000 0x00080000  { ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x40000000 0x00010000  { ; RW data
    mscuser.o (+RO)
   .ANY (+RW +ZI)
  }
}


Итого

Размер используемой RAM при компиляции не изменяется никак.
Так должно быть (с объемом), или я что-то сделал не так и компилятор с линкером мне должны сказать (хотя бы по количеству), что RAM пользуется больше?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Jun 9 2010, 19:30
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(toweroff @ Jun 9 2010, 23:23) *
использовал следующие комбинации для кода и скаттера

Все правильно сделали.

Цитата(toweroff @ Jun 9 2010, 23:23) *
По совету, найденному в примерах Keil, добавил для всего С-файла в свойствах "Memory Assignment->Code/Const->IRAM1(0x40000000-0x4000FFFF)"

А это плохой совет.

Цитата(toweroff @ Jun 9 2010, 23:23) *
Размер используемой RAM при компиляции не изменяется никак.
Так должно быть (с объемом), или я что-то сделал не так и компилятор с линкером мне должны сказать (хотя бы по количеству), что RAM пользуется больше?

Смотреть нужно не размер использованной памяти, а map файл.

Не знаю как с Keil'ом, а на RVDS 2.2 есть баг: компилятор может заинлайнить функцию, проигнорировав #pragma arm section. Баг можно обойти установкой более низкого уровня оптимизации (#pragma o1) для конкретной функции, или вынесением ее в отдельный модуль.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- toweroff   Размещение функции в RAM   Jun 9 2010, 19:23
|- - sonycman   Цитата(aaarrr @ Jun 9 2010, 23:30) А это ...   Jun 9 2010, 19:35
|- - aaarrr   Цитата(sonycman @ Jun 9 2010, 23:35) Что ...   Jun 9 2010, 19:43
- - toweroff   Цитата(aaarrr @ Jun 9 2010, 23:30) Баг мо...   Jun 9 2010, 19:47
|- - aaarrr   Цитата(toweroff @ Jun 9 2010, 23:47) в от...   Jun 9 2010, 19:50
- - toweroff   Посмотрел *.map модуль расположился в адресах IRAM...   Jun 9 2010, 19:53
|- - aaarrr   Цитата(toweroff @ Jun 9 2010, 23:53) пока...   Jun 9 2010, 20:01
|- - toweroff   Цитата(aaarrr @ Jun 10 2010, 00:01) __mai...   Jun 9 2010, 20:34
|- - aaarrr   Цитата(toweroff @ Jun 10 2010, 00:34) и, ...   Jun 9 2010, 20:42
|- - toweroff   Цитата__main != main. знаю.. теперь ЦитатаИ ...   Jun 9 2010, 21:03
|- - sonycman   Цитата(toweroff @ Jun 10 2010, 01:03) нав...   Jun 9 2010, 21:08
|- - toweroff   Цитата(sonycman @ Jun 10 2010, 01:08) А э...   Jun 9 2010, 21:28
|- - Сергей Борщ   Цитата(sonycman @ Jun 10 2010, 00:08) А э...   Jun 10 2010, 05:48
- - aaarrr   Цитата(toweroff @ Jun 10 2010, 01:03) коп...   Jun 9 2010, 21:15
- - aaarrr   __rt* - компоненты стандартных библиотек, к RL-ARM...   Jun 9 2010, 21:31
|- - toweroff   Цитата(aaarrr @ Jun 10 2010, 01:31) __rt*...   Jun 9 2010, 21:38
- - toweroff   Протестил софт (занимается передачей по USB данных...   Jun 10 2010, 11:36
- - sonycman   950 кб/сек. - практически потолок для Full Speed U...   Jun 10 2010, 12:52
|- - toweroff   Цитата(sonycman @ Jun 10 2010, 16:52) 950...   Jun 10 2010, 12:55
- - alt3857   Подскажите каким образом создать секции допустим f...   Dec 9 2011, 11:18
|- - toweroff   Цитата(alt3857 @ Dec 9 2011, 15:18) Подск...   Dec 9 2011, 11:30
- - alt3857   toweroff, как секцию обрамить прагмой я понимаю, к...   Dec 9 2011, 11:45
- - toweroff   примерно так Код; ********************************...   Dec 9 2011, 11:48
- - alt3857   Сделал: LR_IROM1 0x00000000 0x00080000 { ; lo...   Dec 9 2011, 11:56
- - toweroff   а в стартапе что?   Dec 9 2011, 12:03
- - alt3857   В стартапе ничего не менял - на сайте arm-а ничего...   Dec 9 2011, 13:20
- - toweroff   ну как... startup.s в проекте есть? или что-то, гд...   Dec 9 2011, 13:28
- - alt3857   Цитатану как... startup.s в проекте есть? или что-...   Dec 9 2011, 15:11
|- - toweroff   Цитата(alt3857 @ Dec 9 2011, 19:11) Есть ...   Dec 9 2011, 15:17
- - alt3857   Код;/*********************************************...   Dec 9 2011, 15:44


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

 


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


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