Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: задание адреса функции
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
simpsen
Весь проект размещается в динамической памяти, хочу конкретную функцию оттуда переместить в sram для ускорения обработки прерываний. Можно ли это сделать исходя из возможностей самого компилятора (имеется iar 5.11) или какие существуют способы?
demiurg_spb
Изучайте линкер и то как помещать код в заданную пользователем секцию.
simpsen
спасибо, совет прекрасен
smile3046.gif
demiurg_spb
Для какого семейства проект?
про __ramfunc читали?
simpsen
читали, пробовали, но код как грузился целиком в sdram, так и грузится, выходит что-то делаю не так (( и если сделать секцию в SRAM, то все равно туда мне не удалось поместить функцию
проект для ARM9
demiurg_spb
Цитата(simpsen @ Jul 26 2010, 11:31) *
проект для ARM9
Я тут, к сожалению, Вам не советник.
KRS
QUOTE (simpsen @ Jul 26 2010, 11:31) *
читали, пробовали, но код как грузился целиком в sdram, так и грузится

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

Или нужные функции поместить в определенную секцию при помощи #pragma location/@
А в icf файле использовать initialize by copy или manually
aaarrr
Возможно, не совсем в тему, но: далеко не факт, что желаемое ускорение будет получено просто при переносе кода в SRAM. Гарантированный результат можно получить, если "залочить" в кэш процедуру обработки прерывания.

И к совету из #2 настоятельно рекомендую прислушаться.
simpsen
спасибо, KRS,с помощью initialize by copy сделала секцию и все получилось 08.gif

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

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


конкретно AT91SAM9RL64

столкнулась с тем, что функции, описанные в *.c файлах размещаются в sram указанным выше способом, а вот как быть с функциями, написанными на ассемблере в *.s файлах? вижу что по образу и подобию их перекинуть не удается
simpsen
ой, этот вопрос снимается, с ним все стало понятно
KRS
Может ускорение не заметно потому что функция в кеш попадает, например если это цикл расчета и т.п.
Вы во внутренню память TCM запихали функцию?
Там еще надо TCM насторить чтобы память была доступна через ITCM.
К тому же TCM идет мимо кеша, т.к.сама по себе быстрая. В TCM имеет смысл прерывания запихивать и критические функции, только не циклы - потому что цикл из кеша прекрасно будет работать! Может поэтому и разницу в производительности не заметили?
simpsen
да, действительно, запихнув именно прерывания в TCM, ускорение стало заметным. Ваша теория подтверждается нашей практикой smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.