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

 
 
> Деление по модулю, IAR IDE 4.41A, ARM7
coolibin
сообщение May 29 2009, 10:16
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Мой ИАР матюкается на строчку кода из __ramfunc функции:
Код
if((iBit_Count > 0)  && ((iBit_Count % 5) == 0)){


вот таким сообщением:
Warning[Ta021]: Library call (??div32_a) from within a __ramfunc function

походу ему не нравится деление по модулю, т. е. происходит вызов НЕ __ramfunc функции из __ramfunc функции. Как это можно обойти? сделать свою __ramfunc функцию деления по модулю или как то заставить разместить в RAM стандартную, если это возможно?


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
rezident
сообщение May 29 2009, 10:55
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



В соседней теме обсуждается вычисление кратности числа, без использования библиотечных функций вычисления остатка.
Go to the top of the page
 
+Quote Post
coolibin
сообщение May 29 2009, 11:10
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Благодарю!


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
Waso
сообщение Aug 21 2010, 06:59
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 268
Регистрация: 4-11-05
Пользователь №: 10 470



Добрый день, уважаемые форумчане!
У меня вопрос немного офтопик, но проблема та-же. Когда объявляю функцию __arm __ramfunc ворчит: (IAR 440, ADuc7020)
Код
Warning[Ta021]: Library call (??ldr32h_a) from within a __ramfunc function

Если убрать директиву __arm то компилится нормально, но я так понимаю, что в режиме арм из ОЗУ работало бы еще быстрее.
Вот код:
Код

typedef struct
{
        int16_t Re;
        int16_t Im;
} cplx;

__ramfunc __arm
void Foo(cplx *x)
{
cplx T;
....
T  = x[j];    // на эту и подобные строчки ругается
/*-----------*/
T.Re  = x[j].Re;
T.Im  = x[j].Im; // такая запись компилится в арме, но смотрится криво
...
}
Что делать? На асме писать не хотелось бы...
Заранее благодарен!
Go to the top of the page
 
+Quote Post

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

 


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


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