Vict59 0 24 ноября, 2005 Опубликовано 24 ноября, 2005 · Жалоба Использую IAR C 2.28 (написания кода) + AVRstudio (для отладки, проверки временных интервалов). ИМХО очень хорошая "парочка". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeorgeV 0 24 ноября, 2005 Опубликовано 24 ноября, 2005 · Жалоба А есть ли какая-то литература (желательно русская) по IAR? По чему лучше его освоить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka2001 0 24 ноября, 2005 Опубликовано 24 ноября, 2005 · Жалоба Лучше всего codevision!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба А есть ли какая-то литература (желательно русская) по IAR? По чему лучше его освоить? К сожалению не находил, когда пытался освоить IAR. Но к тому времени я уже немного знал английский (очень не много) и потихоньку разбирал мануал пользователя. Там все доходчиво сказано. Если у Вас возникнут вопросы, я думаю на них смогут ответить на этом форуме, потому, что там (в IAR) все на самом деле очень просто. На счет освоить... Я сначала открыл и скомпилировал пример, который прилагается к дистрибутиву IAR, затем с нуля начал свой проект, по пути знакомясь с особенностями IAR EWAVR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeorgeV 0 25 ноября, 2005 Опубликовано 25 ноября, 2005 (изменено) · Жалоба Спасибо. Видимо, пока у меня будет наоборот, быстрые проекты - на ассемблере, когда время не поджимает - на Си. Вопрос возник. Когда пробовал WinAvr, он выдавал полный листинг с сишными кодами и ассемблерной реализацией всего проекта в целом. А IAR уменя выдает листинги только по модулям, а цельную картину не могу получить. Это он в принципе не может или я что-то не доделываю? Изменено 25 ноября, 2005 пользователем Георгий Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 25 ноября, 2005 Опубликовано 25 ноября, 2005 (изменено) · Жалоба ...Вопрос возник. Когда пробовал WinAvr, он выдавал полный листинг с сишными кодами и ассемблерной реализацией всего проекта в целом. А IAR уменя выдает листинги только по модулям, а цельную картину не могу получить. Это он в принципе не может или я что-то не доделываю? Цельная картина складывается после сборки проекта, но в IAR-овском линкере не предусмотрена такая возможность (а может я ей просто не пользуюсь ;) ). Если бы Вы сказали зачем оно нужно, то может можно было бы поискать обходные манёвры, например: - загрузить проект в отладчик IAR и вызвать окно дизассемблера; - загрузить проект в AVRStudio и далее так же. Изменено 25 ноября, 2005 пользователем IgorKossak Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeorgeV 0 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба В WinAVR-е было удобно контролировать, что компилится и как реализуются какие-то куски программы (после чего я его и покинул). Просто у меня начались временные расхождения в программах, отлаживаемых в разных системах, вот и хотелось бы иметь этот ассемблереый код. Но похоже такого вообще нет. Перерыл все что идет с IAR, все установки поперепробовал, но увы мне :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeorgeV 0 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба Столкнулся с непоняткой компиляции IAR-а. Исходник: void delay20mks(void) { char j,k; for (j=0; j< 6; j++) for (k=0; k<176; k++); } В Debug режиме: 21 void delay20mks(void) \ delay20mks: 22 { 23 char j,k; 24 25 for (j=0; j< 6; j++) \ 00000000 E010 LDI R17, 0 \ 00000002 C004 RJMP ??delay20mks_0 26 for (k=0; k<176; k++); \ ??delay20mks_1: \ 00000004 9503 INC R16 \ ??delay20mks_2: \ 00000006 3B00 CPI R16, 176 \ 00000008 F3E8 BRCS ??delay20mks_1 \ 0000000A 9513 INC R17 \ ??delay20mks_0: \ 0000000C 3016 CPI R17, 6 \ 0000000E F410 BRCC ??delay20mks_3 \ 00000010 E000 LDI R16, 0 \ 00000012 CFF9 RJMP ??delay20mks_2 27 } \ ??delay20mks_3: \ 00000014 9508 RET В Release режиме: 21 void delay20mks(void) \ delay20mks: 22 { 23 char j,k; 24 25 for (j=0; j< 6; j++) \ 00000000 E006 LDI R16, 6 26 for (k=0; k<176; k++); \ ??delay20mks_0: \ 00000002 950A DEC R16 \ 00000004 F7F1 BRNE ??delay20mks_0 27 } \ 00000006 9508 RET 28 Почему Релизовая версия напрочь отмела внутренний цикл фор? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба ...Почему Релизовая версия напрочь отмела внутренний цикл фор? Это результат оптимизации. Если нужно сделать временнУю задержку - применяйте __delay_cycles(long timeout); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeorgeV 0 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба А где она описана, какой хедер надо подключить? И если компилер так бездумно оптимизирует, получается его надо перепроверять?! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 56 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба А где она описана, какой хедер надо подключить? И если компилер так бездумно оптимизирует, получается его надо перепроверять?! Не нужно его постоянно проверят. Нужно немножко подучить язык. У Вас цикл ничего не делает и компилятор его выкидывает, т.к. с его точки зрения (с точки зрения языка) с циклом или без - результат работы программы один и тот же. Но без цикла она работает быстрее и ее размер меньше. Поэтому компилятор и выкидывает этот цикл. Напишите в цикле код, который делает полезную работу и компилятор ничего выкидывать не будет. Если хочется подавить подобные оптимизации, то можно использовать прямое указание компилятору не оптимизировать, объявив одну из переменных как volatile. Тогда компилятор не будет иметь права делать какие-либо предположения о поведении этой переменной и вынужден будет честно сгенерировать код для нее, даже если этот код ничего с точки зрения компилятора не делает. Формирование задержки этим способом имеет то неудобство, что сложно предсказать, во сколько тактов реально выльется цикл. Для задания точной задержки в пакете EWAVR имеется специальная intrinsic функцию __delay_cycles(). При ее вызове компилятор сам организует код, формирующий указанную задержку. Чтобы она работала, нужно подключить заголовок inavr.h, иначе компилятор не видит прототипа и ругается. Т.ч. почитайте, во-первых, доку по С, во-вторых, доку на компилятор - она очень внятная. Удачи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
G}{OST 0 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба А где она описана, какой хедер надо подключить? И если компилер так бездумно оптимизирует, получается его надо перепроверять?! Не нужно его постоянно проверять. Постоянно-то не надо, а вот время от времени - очень даже полезно :) Оптимизатор довольно корявый у ИАРа. И от версии к версии разные глюки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба ... Оптимизатор довольно корявый у ИАРа. И от версии к версии разные глюки. Предупреждать уже надоело :twak: Ещё один скоропалительный вывод - и буду банить. PS: если руки-не-оттуда, то причём тут компилятор! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
G}{OST 0 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба ... Оптимизатор довольно корявый у ИАРа. И от версии к версии разные глюки. Предупреждать уже надоело :twak: Ещё один скоропалительный вывод - и буду банить. Я имел в виду не применительно к данной ситуации, а вообще. Это не скоропалительный вывод, а плод 5 лет мучений с данным продуктом. Если надо - могу покопаться и для версий ИАРа, начиная от 2.20C до 4.10 перечислить все "огрехи" оптимизатора. Теперь вот дошёл до того, что всегда стараюсь ставить минимальную оптимизацию, если ресурсы позволяют. ЗЫ. Баньте сразу, что ж вы опять предупреждаете? :smile3009: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость MALLOY2 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба ... Оптимизатор довольно корявый у ИАРа. И от версии к версии разные глюки. Предупреждать уже надоело :twak: Ещё один скоропалительный вывод - и буду банить. Я имел в виду не применительно к данной ситуации, а вообще. Это не скоропалительный вывод, а плод 5 лет мучений с данным продуктом. Если надо - могу покопаться и для версий ИАРа, начиная от 2.20C до 4.10 перечислить все "огрехи" оптимизатора. Теперь вот дошёл до того, что всегда стараюсь ставить минимальную оптимизацию, если ресурсы позволяют. НЕ знаю помоему очень ничего у него компилятор, посравнению с другими, скажем с KEIL, и оболочка немного получше, а главное он простой как бробка. P.S. какие есть докозательства что он "корявый" ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться