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

 
 
> Размещение функции в 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
Ответов
toweroff
сообщение Jun 9 2010, 19:53
Сообщение #2


Гуру
******

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



Посмотрел *.map
модуль расположился в адресах IRAM, вроде ок
отложим до завтра линковку, проверю работоспособность и скорость

пока по коду - собственно, кто конкретно расположит мой модуль в RAM? механизьмаф не знаю, потому спрашиваю smile.gif просто надобности не было
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 9 2010, 20:01
Сообщение #3


Гуру
******

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



Цитата(toweroff @ Jun 9 2010, 23:53) *
пока по коду - собственно, кто конкретно расположит мой модуль в RAM? механизьмаф не знаю, потому спрашиваю smile.gif просто надобности не было

__main разложит после startup'а.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jun 9 2010, 20:34
Сообщение #4


Гуру
******

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



Цитата(aaarrr @ Jun 10 2010, 00:01) *
__main разложит после startup'а.

спасибо, завтра протестирую

Цитата(aaarrr @ Jun 10 2010, 00:01) *
__main разложит после startup'а.

и, все-таки, пока не завтра...
в стартапе

Код
                IMPORT  __main
                LDR     R0, =__main
                BX      R0


далее все стартует на мой код в main() бред

В стартапе:
до того - настройка слоков и EMC, все лишнее отключено/поудалено... да и не было там ранее вроде копирования никакого областей никуда

так кто же копирует код из flash в RAM для выполнения? неверно

как отследить __main?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 9 2010, 20:42
Сообщение #5


Гуру
******

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



Цитата(toweroff @ Jun 10 2010, 00:34) *
и, все-таки, пока не завтра...
в стартапе

Код
                IMPORT  __main
                LDR     R0, =__main
                BX      R0


далее все стартует на мой код в main()
до того - настройка слоков и EMC, все лишнее отключено/поудалено... да и не было там ранее вроде копирования никакого областей никуда

__main != main. И кто же тогда ранее инициализировал переменные, __user_initial_stackheap вызывал?
Стартует оно потому что галочка "Run to main()" стоит.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jun 9 2010, 21:03
Сообщение #6


Гуру
******

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



Цитата
__main != main.

знаю.. теперь smile.gif

Цитата
И кто же тогда ранее инициализировал переменные, __user_initial_stackheap вызывал?

копаюсь...

Цитата
Стартует оно потому что галочка "Run to main()" стоит.

навсегда off...

Цитата( @ Jun 10 2010, 00:42) *
__user_initial_stackheap вызывал?

нет

там начался _scatterload_*
разбираюсь опять... но, похоже, должно быть оно... по крайней мере, по названию
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 9 2010, 21:08
Сообщение #7


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(toweroff @ Jun 10 2010, 01:03) *
навсегда off...

А это зря, делать Вам нечего в дебрях стандартного сишного стартапа.
Он всё разложит в соответствии с "галочками", ну или с "ручками", если они достаточно прямые smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- toweroff   Размещение функции в RAM   Jun 9 2010, 19:23
- - aaarrr   Цитата(toweroff @ Jun 9 2010, 23:23) испо...   Jun 9 2010, 19:30
|- - 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   Цитата(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 Текстовая версия Сейчас: 21st July 2025 - 13:26
Рейтинг@Mail.ru


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