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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Размещение функции в RAM, LPC2000, Keil
toweroff
сообщение Jun 9 2010, 21:38
Сообщение #16


Гуру
******

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



Цитата(aaarrr @ Jun 10 2010, 01:31) *
__rt* - компоненты стандартных библиотек, к RL-ARM никакого отношения не имеют.

понял, спасибо
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 10 2010, 05:48
Сообщение #17


Гуру
******

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



Цитата(sonycman @ Jun 10 2010, 00:08) *
А это зря, делать Вам нечего в дебрях стандартного сишного стартапа.
Как будто в самом начале main() есть много чего делать smile.gif Сразу точку останова в проблемное место и побежали, без пит-стопа в main(). Да и железная точка останова освобождается.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jun 10 2010, 11:36
Сообщение #18


Гуру
******

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



Протестил софт (занимается передачей по USB данных, полученных через static EMC) с USB функциями, работающими в RAM
Результат - ноль прироста и ноль падения производительности. Как была передача ~950 Кбайт/сек, так и осталась. Конечно, размещение в RAM - дело полезное, но мне не помогло
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 10 2010, 12:52
Сообщение #19


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

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



950 кб/сек. - практически потолок для Full Speed USB.
Какую скорость Вы бы хотели получить?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jun 10 2010, 12:55
Сообщение #20


Гуру
******

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



Цитата(sonycman @ Jun 10 2010, 16:52) *
950 кб/сек. - практически потолок для Full Speed USB.
Какую скорость Вы бы хотели получить?

в том-то и дело, что "практически". Хотелось максимум того, что возможно smile.gif
Поэтому придется все-таки ставить High-speed интерфейсы
Go to the top of the page
 
+Quote Post
alt3857
сообщение Dec 9 2011, 11:18
Сообщение #21


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

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



Подскажите каким образом создать секции допустим fast и slow, все, что в секции fast будет выполняться из RAM, а все, что в секции slow - из флеш. А в программе где нужно обрамлять pragma. Как это сделать? Примеры, которые удалось найти требуют помещения в нужный участок памяти всего модуля *.o - в scatter-файле. А как сделать через pragma, т.е. чтобы в любом месте кода прагмой можно было определить откуда он должен выполняться?

Сообщение отредактировал alt3857 - Dec 9 2011, 11:21
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 9 2011, 11:30
Сообщение #22


Гуру
******

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



Цитата(alt3857 @ Dec 9 2011, 15:18) *
Подскажите каким образом создать секции допустим fast и slow, все, что в секции fast будет выполняться из RAM, а все, что в секции slow - из флеш. А в программе где нужно обрамлять pragma. Как это сделать? Примеры, которые удалось найти требуют помещения в нужный участок памяти всего модуля *.o - в scatter-файле. А как сделать через pragma, т.е. чтобы в любом месте кода прагмой можно было определить откуда он должен выполняться?


Вот здесь

И про структуру скаттер-файла почитайте, внизу есть ссылка
Go to the top of the page
 
+Quote Post
alt3857
сообщение Dec 9 2011, 11:45
Сообщение #23


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

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



toweroff, как секцию обрамить прагмой я понимаю, как ее (секцию) правильно в 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 0x10000000 0x00004000 { ; RW data
.ANY (+RW +ZI)
}
ER_FAST 0x10004000 0x8000 {
*(fastcode)
}
}

Не работает.

Сообщение отредактировал alt3857 - Dec 9 2011, 11:45
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 9 2011, 11:48
Сообщение #24


Гуру
******

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



примерно так
Код
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x20000000 0x00010000  { ; load region size_region
  RO_IRAM1 0x20000000 0x00010000  {; RO data
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM2 0x80000000 0x0000E000  {; RW data
   *.o (RAMFUNC)
   .ANY (+RW, +ZI)
  }
}


потом проверьте в map-файле, куда что легло
Go to the top of the page
 
+Quote Post
alt3857
сообщение Dec 9 2011, 11:56
Сообщение #25


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

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



Сделал:

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 0x10000000 0x00004000 { ; RW data
.ANY (+RW +ZI)
}
ER_FAST 0x10004000 0x8000 {
*.o (fast)
.ANY (+RW, +ZI)
}
}
Код функции такой (делаю в симуляторе):
#pragma arm section code = "fast"
int func2(int a)
{
return (a*a*a);
}
#pragma arm section code

В map-файле все норм. разместилось в секции fast, но программа не работает.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 9 2011, 12:03
Сообщение #26


Гуру
******

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



а в стартапе что?
Go to the top of the page
 
+Quote Post
alt3857
сообщение Dec 9 2011, 13:20
Сообщение #27


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

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



В стартапе ничего не менял - на сайте arm-а ничего про стартап не пишут
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 9 2011, 13:28
Сообщение #28


Гуру
******

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



ну как... startup.s в проекте есть? или что-то, где настраиваются вектора, стеки и т.д.
Go to the top of the page
 
+Quote Post
alt3857
сообщение Dec 9 2011, 15:11
Сообщение #29


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

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



Цитата
ну как... startup.s в проекте есть? или что-то, где настраиваются вектора, стеки и т.д.

Есть конечно, там я ничего не менял, подскажите если там тоже нужно что-то добавить?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 9 2011, 15:17
Сообщение #30


Гуру
******

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



Цитата(alt3857 @ Dec 9 2011, 19:11) *
Есть конечно, там я ничего не менял, подскажите если там тоже нужно что-то добавить?

ну так выкладывайте sm.gif

Цитата(alt3857 @ Dec 9 2011, 15:56) *
Код функции такой (делаю в симуляторе):

В map-файле все норм. разместилось в секции fast, но программа не работает.

так в симуляторе не работает или в железке?
Go to the top of the page
 
+Quote Post

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

 


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


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