coolibin 0 29 мая, 2009 Опубликовано 29 мая, 2009 · Жалоба Мой ИАР матюкается на строчку кода из __ramfunc функции: if((iBit_Count > 0) && ((iBit_Count % 5) == 0)){ вот таким сообщением: Warning[Ta021]: Library call (??div32_a) from within a __ramfunc function походу ему не нравится деление по модулю, т. е. происходит вызов НЕ __ramfunc функции из __ramfunc функции. Как это можно обойти? сделать свою __ramfunc функцию деления по модулю или как то заставить разместить в RAM стандартную, если это возможно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 29 мая, 2009 Опубликовано 29 мая, 2009 · Жалоба В соседней теме обсуждается вычисление кратности числа, без использования библиотечных функций вычисления остатка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
coolibin 0 29 мая, 2009 Опубликовано 29 мая, 2009 · Жалоба Благодарю! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Waso 1 21 августа, 2010 Опубликовано 21 августа, 2010 · Жалоба Добрый день, уважаемые форумчане! У меня вопрос немного офтопик, но проблема та-же. Когда объявляю функцию __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; // такая запись компилится в арме, но смотрится криво ... } Что делать? На асме писать не хотелось бы... Заранее благодарен! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться