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

 
 
 
Reply to this topicStart new topic
> задание адреса функции, вся прога sdram, конкретную ф-ю нужно засунуть в sram
simpsen
сообщение Jul 1 2010, 07:21
Сообщение #1





Группа: Участник
Сообщений: 8
Регистрация: 11-05-10
Пользователь №: 57 190



Весь проект размещается в динамической памяти, хочу конкретную функцию оттуда переместить в sram для ускорения обработки прерываний. Можно ли это сделать исходя из возможностей самого компилятора (имеется iar 5.11) или какие существуют способы?
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jul 2 2010, 12:58
Сообщение #2


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Изучайте линкер и то как помещать код в заданную пользователем секцию.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
simpsen
сообщение Jul 20 2010, 11:42
Сообщение #3





Группа: Участник
Сообщений: 8
Регистрация: 11-05-10
Пользователь №: 57 190



спасибо, совет прекрасен
smile3046.gif
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jul 21 2010, 11:00
Сообщение #4


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Для какого семейства проект?
про __ramfunc читали?


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
simpsen
сообщение Jul 26 2010, 07:31
Сообщение #5





Группа: Участник
Сообщений: 8
Регистрация: 11-05-10
Пользователь №: 57 190



читали, пробовали, но код как грузился целиком в sdram, так и грузится, выходит что-то делаю не так (( и если сделать секцию в SRAM, то все равно туда мне не удалось поместить функцию
проект для ARM9
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jul 27 2010, 17:54
Сообщение #6


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(simpsen @ Jul 26 2010, 11:31) *
проект для ARM9
Я тут, к сожалению, Вам не советник.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
KRS
сообщение Jul 27 2010, 21:02
Сообщение #7


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



QUOTE (simpsen @ Jul 26 2010, 11:31) *
читали, пробовали, но код как грузился целиком в sdram, так и грузится

А вы map файл смотрели?
все функции __ramfunc попадают в определенную секцию - вот ее в icf файле и надо разместить в срам.

Или нужные функции поместить в определенную секцию при помощи #pragma location/@
А в icf файле использовать initialize by copy или manually
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 27 2010, 21:33
Сообщение #8


Гуру
******

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



Возможно, не совсем в тему, но: далеко не факт, что желаемое ускорение будет получено просто при переносе кода в SRAM. Гарантированный результат можно получить, если "залочить" в кэш процедуру обработки прерывания.

И к совету из #2 настоятельно рекомендую прислушаться.
Go to the top of the page
 
+Quote Post
simpsen
сообщение Jul 28 2010, 13:02
Сообщение #9





Группа: Участник
Сообщений: 8
Регистрация: 11-05-10
Пользователь №: 57 190



спасибо, KRS,с помощью initialize by copy сделала секцию и все получилось 08.gif

правда как и предупреждал aaarrr, желаемое ускорение мною получено не было crying.gif
Go to the top of the page
 
+Quote Post
KRS
сообщение Jul 28 2010, 20:14
Сообщение #10


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(simpsen @ Jul 28 2010, 17:02) *
правда как и предупреждал aaarrr, желаемое ускорение мною получено не было crying.gif

А какой конкретно чип (и архитектура) 9 ARM много разных.
Go to the top of the page
 
+Quote Post
simpsen
сообщение Jul 29 2010, 05:24
Сообщение #11





Группа: Участник
Сообщений: 8
Регистрация: 11-05-10
Пользователь №: 57 190



Цитата(KRS @ Jul 29 2010, 00:14) *
А какой конкретно чип (и архитектура) 9 ARM много разных.


конкретно AT91SAM9RL64

столкнулась с тем, что функции, описанные в *.c файлах размещаются в sram указанным выше способом, а вот как быть с функциями, написанными на ассемблере в *.s файлах? вижу что по образу и подобию их перекинуть не удается
Go to the top of the page
 
+Quote Post
simpsen
сообщение Jul 29 2010, 07:33
Сообщение #12





Группа: Участник
Сообщений: 8
Регистрация: 11-05-10
Пользователь №: 57 190



ой, этот вопрос снимается, с ним все стало понятно
Go to the top of the page
 
+Quote Post
KRS
сообщение Jul 29 2010, 10:16
Сообщение #13


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Может ускорение не заметно потому что функция в кеш попадает, например если это цикл расчета и т.п.
Вы во внутренню память TCM запихали функцию?
Там еще надо TCM насторить чтобы память была доступна через ITCM.
К тому же TCM идет мимо кеша, т.к.сама по себе быстрая. В TCM имеет смысл прерывания запихивать и критические функции, только не циклы - потому что цикл из кеша прекрасно будет работать! Может поэтому и разницу в производительности не заметили?
Go to the top of the page
 
+Quote Post
simpsen
сообщение Jul 29 2010, 10:28
Сообщение #14





Группа: Участник
Сообщений: 8
Регистрация: 11-05-10
Пользователь №: 57 190



да, действительно, запихнув именно прерывания в TCM, ускорение стало заметным. Ваша теория подтверждается нашей практикой smile.gif
Go to the top of the page
 
+Quote Post

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

 


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


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