Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Почему IAR оптимизирует код для регистров ?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Zlumd
У меня из-за этого Watchdog не конфигурируется.
Нажмите для просмотра прикрепленного файла
Настройки оптимизации по-максимуму:
Нажмите для просмотра прикрепленного файла
Это же не должно влиять. Ведь IAR же не должен оптимизировать работу с регистрами ввода-вывода. Они же объявлены как __io.
Xenia
А вы не ставьте максимальную оптимизацию, поставьте среднюю и будет вам щастье sm.gif
SSerge
А работу с регистрами ввода-вывода он и не оптимизирует, это срабатывает common subexpression elimination.
Можно её отключить галкой или для одного файла или сразу для всей программы или прагмами только локально, для этих двух строчек.
Непомнящий Евгений
А из-за чего не конфигурится - не влезает в ограничение по циклам при записи?

Cross-call оптимизацию отключите, должно помочь...
KRS
похоже оптимизация по размеру включена!
обычно надо ставить по скорости, тогда код гораздо эффективнее работает.
к тому же оптимизацию с помощью прагмы можно менять по тексту.
zltigo
QUOTE (Xenia @ Aug 15 2011, 09:28) *
А вы не ставьте максимальную оптимизацию, поставьте среднюю и будет вам щастье sm.gif

Вы меня очень огорчили своим "советом" sad.gif.
Непомнящий Евгений
Цитата(zltigo @ Aug 15 2011, 15:20) *
Вы меня очень огорчили своим "советом" sad.gif.


А какие еще варианты?

По хорошему IAR должен сам отключать такую оптимизацию для регистров (объявлены с квалификатором __io), но он не настолько умный и не учитывает временные требования. Так что только руками...
zltigo
QUOTE (Непомнящий Евгений @ Aug 15 2011, 13:31) *
А какие еще варианты?

KRS уже написал - управлять оптимизацией через pragma.
demiurg_spb
В avr-gcc инициализация wdt и всё его хозяйство вынесено в отдельный модуль wdt.h и всё сгруппировано по инлайн-асм вставкам.
Можете посмотреть подход тут...
WHALE
При всем этом IAR молча съедает выражения типа a==b;
Выкидывает его при компиляции,конечно,
но ни каких сообщений при этом не выдает.
Мог-бы и родить какой-нибудь варнинг типа "выражение бессмысленно."
arttab
IAR4. положил он на прагму #pragma optimize=none
пришлось уровень оптимизации уменьшать. потом нашел еще вариант, но это для моего случая, а не универсальный
demiurg_spb
Цитата(WHALE @ Aug 15 2011, 23:36) *
При всем этом IAR молча съедает выражения типа a==b;
Выкидывает его при компиляции,конечно,
но ни каких сообщений при этом не выдает.
Мог-бы и родить какой-нибудь варнинг типа "выражение бессмысленно."
Всё он правильно сделал.
Он понял, что переменные не volatile и не будут меняться непредсказуемо и что условие всегда истинно...
WHALE
Цитата(demiurg_spb @ Aug 16 2011, 08:04) *
Всё он правильно сделал.
Он понял, что переменные не volatile и не будут меняться непредсказуемо и что условие всегда истинно...

Сделал он правильно,но почему молча?Другие компиляторы в такой ситуации варнинг выбрасывают.
demiurg_spb
Цитата(WHALE @ Aug 16 2011, 08:28) *
но почему молча?Другие компиляторы в такой ситуации варнинг выбрасывают.
Это стандартом не оговаривается...
zltigo
QUOTE (WHALE @ Aug 15 2011, 21:36) *
При всем этом IAR молча съедает выражения типа a==b;

Разумеется НЕТ. Просто Вы зачем-то этот или вообще все warnings отключили расставляя галочки sad.gif.


QUOTE (arttab @ Aug 16 2011, 03:09) *
IAR4. положил он на прагму #pragma optimize=none

Совершенно не верю. Игнорируется только установки более высоких уровней оптимизации, нежели в командной строке. А вообще-то было нужно просто чисто конкретно:
#pragma optimize=тo_cse
IgorKossak
Цитата(zltigo @ Aug 16 2011, 11:44) *
Разумеется НЕТ. Просто Вы зачем-то этот или вообще все warnings отключили расставляя галочки sad.gif.

Там ещё и ремарки есть. Тоже, небось, отключены.
WHALE
Цитата(IgorKossak @ Aug 16 2011, 12:46) *
Там ещё и ремарки есть. Тоже, небось, отключены.


Точно!Ремарки, были отключены.Включил,и сразу появилось
Warning[Pe174]: expression has no effect .
Спасибо!
Но одновременно появилось еще 6 crying.gif
Remark[Pe001]: last line of file ends without a newline на последнюю строчку в
всех моих хидерах. Смысла этой ремарки я не понял.. help.gif


Xenia
Цитата(WHALE @ Aug 16 2011, 13:31) *
Но одновременно появилось еще 6 crying.gif
Remark[Pe001]: last line of file ends without a newline на последнюю строчку в
всех моих хидерах. Смысла этой ремарки я не понял.. help.gif

А это потому, что у вас стиль такой - после последней строки возврат каретки (Enter) не ставить. В околокомпьютерных делах предполагается, что возврат каретки (он же "новая строка" или Enter) символизирует конец строки, независимо от вашего намерения вводить следующую. Т.е. Enter рассматривается не как разделитель строк, а как терминатор строки. По той же причине компьютер не выполнит введенную команду до тех пор, пока вы не нажмете Enter.
WHALE
Вставил везде в конце Enter.Появилось 30 ремарок на
все мой файлы проекта last line of file ends without a newline.
Че за хрень?
scifi
Цитата(WHALE @ Aug 16 2011, 14:44) *
Вставил везде в конце Enter.Появилось 30 ремарок на
все мой файлы проекта last line of file ends without a newline.
Че за хрень?

Именно то, что написано: последняя строка в файле не содержит перевод строки. Это чревато проблемами, если такие файлы включать через #include, поэтому компилятор и предупреждает.
zltigo
QUOTE (WHALE @ Aug 16 2011, 12:44) *
Че за хрень?

Таже, что раньше. Это сообщение выдается один раз. Посему выдавалось на включаемые файлы. Там убрали - вылезло на тех, куда включали.
Вообще-то вменяемые программерские редакторы файлы без пустой строки не создают, без отдельного на то приказа. Что за редактор-то?
Возможно наткнетесь еще на ругань на UNIX формат без CR. Это тогда давить в понкретных файлах прагмами.
WHALE
редактор родной яровский.и как лечить?открывать и сохранять все файлы в другом редакторе?

Все,вопрос снимается.Как всегда,сам дурак.Не поставил enter в хидере зависимостей.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.