Помогите с выбором Компилятора ! Для AVR на языке Си !

Обсуждаем контроллеры компании Atmel.
BGert
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Вс ноя 25, 2012 13:57:12

Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение BGert »

Собираюсь изучать программирование AVR на языке Си (Ассемблер я так понял можно будет изучить потом, так как он посложней язык).
И столкнулся с такой проблемой:
Как выбор компилятора AVR studio 5 или CodeVision AVR или WinAVR
Так как я Новичок. Подскажите в чем мне программировать и какая в этих компиляторах разница ???
Реклама
Аватара пользователя
radiokot__
Мучитель микросхем
Сообщения: 454
Зарегистрирован: Вс янв 15, 2012 19:58:40

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение radiokot__ »

Ну ежели для баловства то можно CodeVision AVR.
Ну а если не в игрушки играть, то видимо WinAVR.
Ни один домашний кот незнает что он домашний.
Реклама
sasha2011
Открыл глаза
Сообщения: 49
Зарегистрирован: Вс апр 17, 2011 11:33:26

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение sasha2011 »

Лучше начать с ассемблера, а затем перейти на Си.
Чтобы использовать ассемблерные вставки в программах на Си.
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение Vov123 »

radiokot__ писал(а):Ну ежели для баловства то можно CodeVision AVR.
Ну а если не в игрушки играть, то видимо WinAVR.
У всех "спецов" я спрашиваю один вопрос -"
Не могли бы в двух словах обозначить,отсутствие каких функций или типов данных Вас расстраивает CVAVR?" и никак не могу добиться внятного ответа.Только ссылки на каких-то "очень уважаемых" спецов,которым не верить - преступление.Может Вы просветите.
Хотя мне всё равно,какой диалект языка С использовать.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
radiokot__
Мучитель микросхем
Сообщения: 454
Зарегистрирован: Вс янв 15, 2012 19:58:40

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение radiokot__ »

Вы видите разницу между трёхколёсным велосипедом и спортивным?
Что у одного есть и колёса и шины и педали, но почему-то спотсмены катаются на спортивных, а дети на трёхколёсном.
Так-же и сдесь.
Ни один домашний кот незнает что он домашний.
Реклама
BGert
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Вс ноя 25, 2012 13:57:12

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение BGert »

radiokot__ Спасибо Вам за ответ, мне понравилось как вы ответили.
Реклама
Аватара пользователя
ds1307
Грызет канифоль
Сообщения: 260
Зарегистрирован: Чт янв 13, 2011 18:54:29
Откуда: Минск

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение ds1307 »

radiokot__ писал(а):Вы видите разницу между трёхколёсным велосипедом и спортивным?
Что у одного есть и колёса и шины и педали, но почему-то спотсмены катаются на спортивных, а дети на трёхколёсном.
Так-же и сдесь.
:music: Очень распальцованно вы ответили. А конкретно пшик.
Учиться, учиться, ...
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение urry »

конкретно - юнионы там появились, начиная с версии 2.3.4 - до нее ими там и не пахло.
Формат long у меня в каких-то ситуациях становился двухбайтовым, я не спорю, может так и задумывалось.
По поводу мат вычислений - много буков, имхо, ОЧЕНЬ сильно проигрывает винавр.
А так ничего, можно работать, если не пользоваться встроенными стандартными библиотеками, которые единолично пожирают ресурсы контроллера.
BGert
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Вс ноя 25, 2012 13:57:12

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение BGert »

И еще подскажите мне в AVR Studio 5 есть проект AVRGCC С Executable Project он и есть WinAVR ?
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение Goldsmith »

BGert писал(а):Как выбор компилятора AVR studio 5 или CodeVision AVR или WinAVR
...какая в этих компиляторах разница ???
Во-первых, из перечисленных вариантов выбора AVR Studio не является компилятором, это всего лишь интегрированная среда разработки (IDE), "оболочка", к которой можно "прикрутить" в принципе любой компилятор, вызываемый из командной строки. Ранниее версии AVR Studio делались на доморощенной платформе Atmel, затем им надоело изобретать велосипеды, и они взяли за основу "пустую" заготовку от Microsoft Visual Studio. В комплект поставки по умолчанию подключен toolchain WinAVR, но, как уже говорилось, можно подключить любой другой toolchain, если сочтете целесообразным.

В принципе с тем же успехом можно выбрать и другую оболочку, например, ту же Eclipse (см. соответствующую тему в этой ветке). Плюсы и минусы каждого варианта - предмет отдельного обсуждения, просто имейте в виду, что на AVR Studio (она же с недавних пор Microsoft Visual Studio) свет клином не сошелся.

Из оставшихся двух: с CodeVision, пожалуй, проще начинать, к тому же там имеются "визарды", генерирующие код работы со встроенными устройствами чуть не на любой случай жизни (качество этого кода - отдельный вопрос, как уже упоминалось в теме, но в принципе работает). Совместимость диалекта языка C с другими реализациями компиляторов C (а главное, со стандартом) не ахти. Если планируете долгое время работать только с AVR и только в CodeVision, Вас это может и не слишком огорчить. Еще есть некоторые сомнения, станут ли lint и ему подобные (например, splint) работать с диалектом CodeVision. На практике не проверял, впрочем; может, и обойдется.

WinAVR базируется на версии GCC для AVR, и этим все сказано. Сегодня трудно сказать, GCC ли пишут по стандарту или стандарт подгоняют под GCC, но с соответствием там все довольно неплохо. Кроме того, GCC реализован для огромного количества процессоров, так что сменить аппаратную платформу при необходимости будет гораздо проще (например, решите впоследствии перейти на ARM). Кроме того, GCC имеется и для IBM PC (под Windows и Linux), поэтому более 90% кода сможете выполнить (и протестировать) на своей персоналке, даже не прошивая его контроллер. Еще один фактор - при желании перейти на Linux практически ничего для Вас не изменится, в случае же CodeVision возможны проблемы (личо мне не попадались версии для других ОС, кроме Windows).

Вот Вам вкратце основные плюсы и минусы, окончательный выбор за Вами.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение Vov123 »

radiokot__ писал(а):Вы видите разницу между трёхколёсным велосипедом и спортивным?
Не могли бы указать слабые места "трёхколесности".
В CVAVR,к примеру, можно отметить участки кода,в которых будет отключена оптимизация при компиляции.Да есть ещё одна приятная фишечка-можно отключать варнинги участков кода,в безопасности кода которых Вы уверены,и долгое время используете в своих библиотеках.


подобные (например, splint) работать с диалектом CodeVision. На практике не проверял
Что-то из темы -"Не читал,но осуждаю"(с).
Аватара пользователя
ds1307
Грызет канифоль
Сообщения: 260
Зарегистрирован: Чт янв 13, 2011 18:54:29
Откуда: Минск

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение ds1307 »

urry писал(а):конкретно - юнионы там появились, начиная с версии 2.3.4 - до нее ими там и не пахло.
А так ничего, можно работать, если не пользоваться встроенными стандартными библиотеками, которые единолично пожирают ресурсы контроллера.
Странно, порылся в своих старых сырцах:

Код: Выделить всё

CodeWizardAVR V1.25.9 Professional
/* union declaration*/ 
union my_int {                          
             unsigned int word;
             unsigned char byt[2];
             }perem;
/* union declaration*/ 
union my_long_int {                          
                  unsigned long int wes;
                  unsigned char byt_wes[4];
                  }my; 
Учиться, учиться, ...
BGert
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Вс ноя 25, 2012 13:57:12

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение BGert »

Goldsmith писал(а): В принципе с тем же успехом можно выбрать и другую оболочку, например, ту же Eclipse (см. соответствующую тему в этой ветке). Плюсы и минусы каждого варианта - предмет отдельного обсуждения, просто имейте в виду, что на AVR Studio (она же с недавних пор Microsoft Visual Studio) свет клином не сошелся.
Озадачили вы меня ) Сейчас почитаю соответствующею ветку. А вот ваши слова "на AVR Studio свет клином не сошелся" мне понравились.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение COKPOWEHEU »

Начинать полюбому лучше с ассемблера чтения документации, уже после этого ассемблер. Не для использования вставок, разумеется а для понимания функционирования контроллера (что такое стек, разрядность переменных, скорость выполнения, работа подпрограмм и тому подобное).
Потом можно браться за языки высокого уровня: Наиболее распространен Си но встречаются извращенцы и С++ и Pascal и даже Basic, выбор языка - на ваш вкус.
Что-то говорили о портируемости... Вряд ли портировать С-код намного проще чем ассемблерный, уж больно много места занимают непосредственное использование регистров и прочего платформо-зависимого. И даже avr-gcc не совсем совместим со стандартом языка C (хотя бы обращения к различным областям памяти - flash, SRAM, EEPROM - функции отличаются)
Именно про avr-gcc vs cvavr: несмотря на те же костыли для работы с флешом, avr-gcc гораздо ближе к реализации стандарта Си. После некоторого времени программирования для компьютера конструкции PORTD.5 вызывают довольно сильную неприязнь. Библиотеки cvavr ("не читал но осуждаю", да) используют наиболее универсальную реализацию. Соответственно без использования прерываний, таймеров и прочих полезных вещей. Насчет надежности говорить не буду, наверняка не меньше чем у самописных а куда как больше. Зато, например, чтобы получить байт от UART'а придется тормозить весь камень, нехорошо-с. Хотя, конечно, никто не возбраняет переписать с нуля.
В CVAVR,к примеру, можно отметить участки кода,в которых будет отключена оптимизация при компиляции.
что-то подобное volatile?
Еще один фактор - при желании перейти на Linux практически ничего для Вас не изменится
Ну это смотря как программировать. Мне было неудобно отказываться от подсказок AVRStudio и программатора с графическим интерфейсом. Но это скорее дело привычки. А так да, avr-gcc(Си), avra (ассемблер), avrdude(программатор, причем во много раз универсальнее AVRProg'a) вполне достаточно.
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение Goldsmith »

COKPOWEHEU писал(а):Что-то говорили о портируемости... Вряд ли портировать С-код намного проще чем ассемблерный, уж больно много места занимают непосредственное использование регистров и прочего платформо-зависимого.
Очень многое зависит не столько от языка, сколько от стиля... даже не программирования, а проектирования программы. Если код представляет собой месиво из перемежающихся строк бизнес-логики и низкоуровневой работы с периферией, то да, большой разницы нет - придется лазить по всему коду и править. Впрочем, с таким кодом головной боли и без портирования хватит (например, попробуйте его более-менее полноценно протестировать; подвиг, достойный Геракла).

Если бизнес-логика аккуратно отделена от жонглирования битами в портах, тут все попроще. Если же вся аппаратная зависимость сосредоточена в тонкой прослойке HAL, объем работ минимален. Люди Linux таскают с платформы на платформу, а мы тут с несчастным дрыганьем битов в портах проблемы создаем на пустом месте...

IMHO превосходная практика - использование паттерна MCH (близкий аналог паттернов MVC и MVP из мира десктопных приложений). Примеры применения: "Развитие в направлении разработки встроенных систем", "Эффективная разработка встроенного ПО через тестирование".
COKPOWEHEU писал(а):
Еще один фактор - при желании перейти на Linux практически ничего для Вас не изменится
Ну это смотря как программировать. Мне было неудобно отказываться от подсказок AVRStudio и программатора с графическим интерфейсом.
Я бы даже сказал, "смотря что понимать под программированием". Если сам процесс заливки кода в кристалл, то да, все выглядит по-другому. Если в более широком смысле (как весь процесс разработки от сбора требований до выпуска релиза), то разница в наборе кнопочек редактора и подсказках среды большой погоды не делает. Опять же, дело вкуса.

Лично мне, наоборот, не слишком комфортно было регулярно прыгать из Studio, где производится собственно кодирование, в StarUML, где ведется проектирование программы, и обратно. Не нашел ничего подходящего для работы с UML в среде Studio. А вот для Eclipse быстро нашелся подходящий плагин, и теперь проект действительно интегрирован, а не раскидан по разным файлам. Опять же - без жесткой привязки к ОС...
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение Goldsmith »

Vov123 писал(а):
подобные (например, splint) работать с диалектом CodeVision. На практике не проверял
Что-то из темы -"Не читал,но осуждаю"(с).
Просто предупредил о возможных проблемах, поскольку лично не убедился в работоспособности их совместной работы. Поэтому с удовольствием выслушаю мнение того, кто читал и осуждает (или аплодирует в экстазе, неважно; главное, что имеет реальный опыт).

Как splint в действительности относится к особенностям синтаксиса CodeVision?
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение Kavka »

Для ясности. Проект WinAVR ушёл под клыло Atmel и теперь называется Atmel AVR Toolchain.
Можно скачать как отдельно (win, lin), так и в составе AVR studio.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение urry »

ds1307, попробуйте в этой версии работу в юнионах с битовыми полями - я не привык флудить. Если я пишу, что были проблемы, которые вылечились версией 2.3.4 - значит, так и было. Но поднимать свои проекты 4 летней давности - не буду. Я ценю свое время.
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение Vov123 »

COKPOWEHEU писал(а):что-то подобное volatile?
volatile - это спецификатор переменной,которая изменяется в прерываниях,а я говорил о командах препроцессора CVAVR(#pragma optsize- и #pragma optsize+).Если Вы посчитали,что Ваш код получается где-то кривоватым,то там можно отключить оптимизацию,но только там где это необходимо Вам,а не отключать оптимизацию полностью.
Гляньте настройки проекта в CVAVR и WinAVR,в первом кнопочек поболее будет.

Теперь о WinAVR,небольшие непонятки у меня возникли в нём с привидением типов,вот такой код

Код: Выделить всё

unsigned int a;
unsigned char b = 5;
(unsigned char)a = b;
вызывает такую ошибку - error: lvalue required as left operand of assignment
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: Помогите с выбором Компилятора ! Для AVR на языке Си !

Сообщение ChipKiller »

Vov123 писал(а):вот такой код

Код: Выделить всё

... (unsigned char)a = b;
... лучше понять, чего Вы хотите этим добиться? :)

PS. Думаю, что

Код: Выделить всё

a = (unsigned int)b;
или даже сработают как нужно, но в последнем случае возможно предупреждение...
Последний раз редактировалось ChipKiller Чт фев 21, 2013 10:55:51, всего редактировалось 1 раз.
Ответить

Вернуться в «AVR»