Evgeny_CD 0 29 июля, 2005 Опубликовано 29 июля, 2005 · Жалоба Задумал я тут тулзы унифицировать окончательно. И понял, что альтернативы GNU / GCC нет - ибо, например, покупку IAR, считаю бессмысленной. Я просто понял, что оптимизация кода головой программера (и инвестирование денег в этого программера, и стимулирование оного (сделал хорошо - получи премию), разумеется, вздрачивание - куда же без него) дает больший эффект, чем выигрыш самого лучшего компилятора. Что касается среды - http://www.eclipse.org/ ок. С Армами все понятно. Там GCC рулит. Сами проверяли, инфы есть много на эту тему. Но вот для AVR (иногда надо делать "контроллеры светодиодов" за 1.5$) никогда не пробовал subj. Каково мнение народа? http://winavr.sourceforge.net/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pulsar-17 0 29 июля, 2005 Опубликовано 29 июля, 2005 · Жалоба Мнение хорошее. Компилятор делает хороший код, но иногда надо ему "помогать", писать исходник разбиваая сложные расчеты на несколько простых, явно перобразовывать типы (особенно char), учитывать, что AVR восьмиразрядный и лишние операции ненужны(по умолчанию int 16 бит). Причуды тоже есть, например иногда два ret в конце функции ставит... Но это компенсируется большим количеством всевозможных чисто GNUшных фич, морем всевозможных утилит, библиотек и хорошей документацией на все это. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 29 июля, 2005 Опубликовано 29 июля, 2005 · Жалоба Задумал я тут тулзы унифицировать окончательно. И понял, что альтернативы GNU / GCC нет - ибо, например, покупку IAR, считаю бессмысленной. Я просто понял, что оптимизация кода головой программера (и инвестирование денег в этого программера, и стимулирование оного (сделал хорошо - получи премию), разумеется, вздрачивание - куда же без него) дает больший эффект, чем выигрыш самого лучшего компилятора. Ага. Ковырялся недано в одних примерах к платке, поставляемых изготовителем. Скомпилировал, работает, пора рабочую программу писать, но... Не могу на те исходники смотреть, сердце кровью обливается. Слегка прошёлся - и выглядеть стали "читабельнее", и объём загрузочного файла сократился с 6 до 5.5К. Это при том, что там ещё куча строк для выдачи на отладочный терминал. Но вот для AVR (иногда надо делать "контроллеры светодиодов" за 1.5$) никогда не пробовал subj. Каково мнение народа? http://winavr.sourceforge.net/ <{POST_SNAPBACK}> Несколько лет только им и пользуюсь. Проигрывает ИАР-у по объёму кода где-то на 5--20% в зависимости от задачи, стиля, ... (хотя последняя пара, которую сравнивал - что-то типа gcc 3.0.2 и иар 2.27). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость impatt 16 августа, 2005 Опубликовано 16 августа, 2005 · Жалоба avr-gcc штука классная, причём не надо тырить у IAR ничего, и никаких лекарств от запоров - тоже не надо. Что мне не понравилось - в коде обработчика прерывания GCC разрешает эти самые прерывания. Ну, ладно бы отключаемая функция была... А то код получается не совсем совместимый с проектами под, например, IAR. Пример: обработчик прерывания по достижению некоего числа таймером №1. Один чел написал код на IAR для реализации ШИМ, и сперва разрешил прерывания, а потом взялся настраивать таймер. Когда в обработчике прерывания не разрешены (IAR), то ничего страшного не происходит, а вот под GCC.. Контроллер уходил в обработчик немедленно после старта, потом входил повторно и так до упора, пока не переполнится стек, а потом вис нахрен. Ессно, расхваливаемый многими симулятор на AVRStudio работает криво (как мне показалось) и пришлось голову поломать, чтобы оживить ранее работоспособный проектик.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sensor_ua 0 11 января, 2006 Опубликовано 11 января, 2006 · Жалоба Вот пробую под eclipse AVR-GCC4.0.2 сборки klen.org. Об эффективности пока сказать не могу, но уже приятно, что как-то работает;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
misyachniy 0 13 января, 2006 Опубликовано 13 января, 2006 · Жалоба impatt В GCC есть SIGNAL () и INTERRUPT(). Разница между ними в наличии команды sei() в INTERRUPT(). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость impatt 17 мая, 2006 Опубликовано 17 мая, 2006 · Жалоба impatt В GCC есть SIGNAL () и INTERRUPT(). Разница между ними в наличии команды sei() в INTERRUPT(). Спасибо, не знал. Теперь узнал и вздохнул с облегчением (я не шучу). Пользуюсь. Уверен, что всё это описано в доке, но там всё на чисто англицком языке. Ессно, когда читаешь одно слово через три, пропустить немудрено. Ещё раз благодарю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
m16 0 17 мая, 2006 Опубликовано 17 мая, 2006 · Жалоба Мнение хорошее. но иногда надо ему "помогать" если вы не хотите помогать компилятору, а наоборот ожидаете от него помощи то возьмите на [banned] - великолепный компилятор - программатор CodeVisionAVR (2Мб всего !) и дополните его бесплатным симулятором VMLAB (4Мб) и просто насладитесь работой! вот примеры http://electronix.ru/redirect.php?http://[banned]/avrpic06.htm Уважаемый, все Ваши полсотни постов как близнецы-братья содержимое которых сводится к одному - раскрутке собственного сайта но никак по сути поставленного вопроса , имхо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beer_warrior 0 17 мая, 2006 Опубликовано 17 мая, 2006 · Жалоба Пользуюсь с 2003 года.Жалоб нет. Надо немножко приноровиться (например как с SIGNAL/INTERRUPT), требует определенной дисциплины мышления, (как с приведением типов, но это на мой взгляд это к лучшему), зато потом все идет как по маслу. По оптимизации - местами проигрывает IAR, местами выигрывает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 18 мая, 2006 Опубликовано 18 мая, 2006 · Жалоба Мнение хорошее. но иногда надо ему "помогать" если вы не хотите помогать компилятору, а наоборот ожидаете от него помощи то возьмите на [banned] - великолепный компилятор - программатор CodeVisionAVR (2Мб всего !) и дополните его бесплатным симулятором VMLAB (4Мб) и просто насладитесь работой! вот примеры http://electronix.ru/redirect.php?http://[banned]/avrpic06.htm :bb-offtopic: Я использовал CodeVision. Да, неплохой компилятор. Как и все остальные. Но ничего особо замечательного я в нем не ощутил. Помощи он мне тоже ни какой не дал, что же можно от него ожидать, это ведь просто программа. Многим нравиться этот инструмент тем, что он поставляется с библиотеками для работы с ds18b20, hd44780 и другими приборами. Но мне, например, кажется что ничего особенного в этом нет. Еще не известно как написаны эти библиотеки. Да и лучше такие вещи, даже на начальных порах писать самому, потому что это повышает Level-up. Симуляторы, такие, как VMLab & Proteus можно конечно использовать, но не стоит им полностью доверять. Все таки симулятор он и есть симулятор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
halfdoom 0 18 мая, 2006 Опубликовано 18 мая, 2006 · Жалоба И понял, что альтернативы GNU / GCC нет - ибо, например, покупку IAR, считаю бессмысленной.Но вот для AVR (иногда надо делать "контроллеры светодиодов" за 1.5$) никогда не пробовал subj. Каково мнение народа? Тут все просто - если памяти программ в избытке, и можно поступиться быстродействием, то GCC это хороший выбор. ИАР выигрывает у GCC по всяким мелким оптимизациям (исключение лиших загрузок регистров, использование X и Z регистров для доступа к памяти даже без явного описания указателей в программе) и наличием cross-call оптимизации. В в свое время написал довольно объемный набор макросов который нивелирует различия в синтаксисе обоих компиляторов и с тех пор использую оба в зависимости от требований и наличия внешних библиотек (которые править не желательно). BTW, я также отказался от использования make и перешел на jam. С использванием средств jam'a можно писать такие вещи: rule target_gcc161 { tool_gcc; MCU_FULL = atmega161; MCU_PROGR = Mega161; MCU_SHORT = m161; CCOPT_TYPE = speed; CCOPT_LEVEL = 2; .... } rule target_iar161 { tool_iar; MCU_FULL = AT90Mega161; MCU_PROGR = Mega161; MCU_SHORT = m161; CCOPT_TYPE = speed; CCOPT_LEVEL = 9; CCFLAGS += --do_cross_call --cross_call_passes=5; } А затем просто указывать "jam iar161" или "jam gcc161". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Laksus 0 26 мая, 2006 Опубликовано 26 мая, 2006 · Жалоба misyachniy Jan 13 2006, 18:12 impatt В GCC есть SIGNAL () и INTERRUPT(). Разница между ними в наличии команды sei() в INTERRUPT(). ____________________________________________________________ impatt ...Уверен, что всё это описано в доке,... ____________________________________________________________ ____________________________________________________________ Функции обработки прерываний SIGNAL() & INTERRUPT() были до версии WinAVR-20050214-install.exe прописаны в ...\WinAVR\avr\include\avr\signal.h и описаны в ...\WinAVR\doc\avr-libcavr-libc-user-manual-1.2.3.pdf _________ Но с версии WinAVR-20060125-install.exe в ...\WinAVR\doc\avr-libc\avr-libc-user-manual-1.4.3.pdf функция INTERRUPT() объявлена deprecated (осуждаемой) и в файлах не прописана. Дескать, (стр.45...-1.4.3.pdf) "As this macro has been used by too many unsuspecting people in the past, it has been deprecated, and will be removed in a future version of the library. Users who want to legitimately re-enable interrupts in their interrupt handlers as quickly as possible are encouraged to explicitly declare their handlers as described above." "above" - это ссылка на стр.128., где разъясняется как сделать вложенные прерывания. _________________ Александр 2006 05 27 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
msn 0 26 мая, 2006 Опубликовано 26 мая, 2006 · Жалоба Пользуюсь больше 4-х лет. Особых замечаний не было. После того как добавили поддержку в студии работать стало еще приятнее, про IAR который изредка использовался для откладки кусков кода уже забыл. Есть правда пара мелких недочетов: от версии к версии иногда меняются различные часто используемые макросы, переезжают в другое место файлы заголовков, до сих пор нет нормально реализованной printf, иногда не хватает поддержки С++ и не очень удобно размещать массивы строк в Flash. Оптимизации маленьких кодов очень уступает IAR, проврете на замене местами байт в слове. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
msn 0 26 мая, 2006 Опубликовано 26 мая, 2006 · Жалоба Пользуюсь больше 4-х лет. Особых замечаний не было. После того как добавили поддержку в студии работать стало еще приятнее, про IAR который изредка использовался для откладки кусков кода уже забыл. Есть правда пара мелких недочетов: от версии к версии иногда меняются различные часто используемые макросы, переезжают в другое место файлы заголовков, до сих пор нет нормально реализованной printf, иногда не хватает поддержки С++ и не очень удобно размещать массивы строк в Flash. Оптимизации маленьких кодов очень уступает IAR, проврете на замене местами байт в слове. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SapegoAL 0 27 мая, 2006 Опубликовано 27 мая, 2006 · Жалоба И понял, что альтернативы GNU / GCC нет - ибо, например, покупку IAR, считаю бессмысленной.Но вот для AVR (иногда надо делать "контроллеры светодиодов" за 1.5$) никогда не пробовал subj. Каково мнение народа? Тут все просто - если памяти программ в избытке, и можно поступиться быстродействием, то GCC это хороший выбор. ИАР выигрывает у GCC по всяким мелким оптимизациям (исключение лиших загрузок регистров, использование X и Z регистров для доступа к памяти даже без явного описания указателей в программе) и наличием cross-call оптимизации. В в свое время написал довольно объемный набор макросов который нивелирует различия в синтаксисе обоих компиляторов и с тех пор использую оба в зависимости от требований и наличия внешних библиотек (которые править не желательно). BTW, я также отказался от использования make и перешел на jam. С использванием средств jam'a можно писать такие вещи: rule target_gcc161 { tool_gcc; MCU_FULL = atmega161; MCU_PROGR = Mega161; MCU_SHORT = m161; CCOPT_TYPE = speed; CCOPT_LEVEL = 2; .... } rule target_iar161 { tool_iar; MCU_FULL = AT90Mega161; MCU_PROGR = Mega161; MCU_SHORT = m161; CCOPT_TYPE = speed; CCOPT_LEVEL = 9; CCFLAGS += --do_cross_call --cross_call_passes=5; } А затем просто указывать "jam iar161" или "jam gcc161". Вот бы поделился! :) Я думаю масса людей было бы Вам благодарна. Я пока не нахожу в себе сил такую работу проделать. :) Ну и описаний не достаточно. Как-то они разбросаны и беспорядочны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться