Помогите с выбором Компилятора ! Для AVR на языке Си !
Помогите с выбором Компилятора ! Для AVR на языке Си !
Собираюсь изучать программирование AVR на языке Си (Ассемблер я так понял можно будет изучить потом, так как он посложней язык).
И столкнулся с такой проблемой:
Как выбор компилятора AVR studio 5 или CodeVision AVR или WinAVR
Так как я Новичок. Подскажите в чем мне программировать и какая в этих компиляторах разница ???
И столкнулся с такой проблемой:
Как выбор компилятора AVR studio 5 или CodeVision AVR или WinAVR
Так как я Новичок. Подскажите в чем мне программировать и какая в этих компиляторах разница ???
- Реклама
- radiokot__
- Мучитель микросхем
- Сообщения: 454
- Зарегистрирован: Вс янв 15, 2012 19:58:40
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
Ну ежели для баловства то можно CodeVision AVR.
Ну а если не в игрушки играть, то видимо WinAVR.
Ну а если не в игрушки играть, то видимо WinAVR.
Ни один домашний кот незнает что он домашний.
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
Лучше начать с ассемблера, а затем перейти на Си.
Чтобы использовать ассемблерные вставки в программах на Си.
Чтобы использовать ассемблерные вставки в программах на Си.
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
У всех "спецов" я спрашиваю один вопрос -"radiokot__ писал(а):Ну ежели для баловства то можно CodeVision AVR.
Ну а если не в игрушки играть, то видимо WinAVR.
Не могли бы в двух словах обозначить,отсутствие каких функций или типов данных Вас расстраивает CVAVR?" и никак не могу добиться внятного ответа.Только ссылки на каких-то "очень уважаемых" спецов,которым не верить - преступление.Может Вы просветите.
Хотя мне всё равно,какой диалект языка С использовать.
- radiokot__
- Мучитель микросхем
- Сообщения: 454
- Зарегистрирован: Вс янв 15, 2012 19:58:40
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
Вы видите разницу между трёхколёсным велосипедом и спортивным?
Что у одного есть и колёса и шины и педали, но почему-то спотсмены катаются на спортивных, а дети на трёхколёсном.
Так-же и сдесь.
Что у одного есть и колёса и шины и педали, но почему-то спотсмены катаются на спортивных, а дети на трёхколёсном.
Так-же и сдесь.
Ни один домашний кот незнает что он домашний.
- Реклама
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
radiokot__ Спасибо Вам за ответ, мне понравилось как вы ответили.
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
radiokot__ писал(а):Вы видите разницу между трёхколёсным велосипедом и спортивным?
Что у одного есть и колёса и шины и педали, но почему-то спотсмены катаются на спортивных, а дети на трёхколёсном.
Так-же и сдесь.
Учиться, учиться, ...
- urry
- Сверлит текстолит когтями
- Сообщения: 1262
- Зарегистрирован: Пн дек 08, 2008 10:58:48
- Откуда: Винница
- Контактная информация:
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
конкретно - юнионы там появились, начиная с версии 2.3.4 - до нее ими там и не пахло.
Формат long у меня в каких-то ситуациях становился двухбайтовым, я не спорю, может так и задумывалось.
По поводу мат вычислений - много буков, имхо, ОЧЕНЬ сильно проигрывает винавр.
А так ничего, можно работать, если не пользоваться встроенными стандартными библиотеками, которые единолично пожирают ресурсы контроллера.
Формат long у меня в каких-то ситуациях становился двухбайтовым, я не спорю, может так и задумывалось.
По поводу мат вычислений - много буков, имхо, ОЧЕНЬ сильно проигрывает винавр.
А так ничего, можно работать, если не пользоваться встроенными стандартными библиотеками, которые единолично пожирают ресурсы контроллера.
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
И еще подскажите мне в AVR Studio 5 есть проект AVRGCC С Executable Project он и есть WinAVR ?
- Goldsmith
- Опытный кот
- Сообщения: 736
- Зарегистрирован: Пн янв 10, 2011 03:06:36
- Откуда: Ростов-на-Дону
- Контактная информация:
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
Во-первых, из перечисленных вариантов выбора AVR Studio не является компилятором, это всего лишь интегрированная среда разработки (IDE), "оболочка", к которой можно "прикрутить" в принципе любой компилятор, вызываемый из командной строки. Ранниее версии AVR Studio делались на доморощенной платформе Atmel, затем им надоело изобретать велосипеды, и они взяли за основу "пустую" заготовку от Microsoft Visual Studio. В комплект поставки по умолчанию подключен toolchain WinAVR, но, как уже говорилось, можно подключить любой другой toolchain, если сочтете целесообразным.BGert писал(а):Как выбор компилятора AVR studio 5 или CodeVision AVR или WinAVR
...какая в этих компиляторах разница ???
В принципе с тем же успехом можно выбрать и другую оболочку, например, ту же 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
J. Ganssle
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
Не могли бы указать слабые места "трёхколесности".radiokot__ писал(а):Вы видите разницу между трёхколёсным велосипедом и спортивным?
В CVAVR,к примеру, можно отметить участки кода,в которых будет отключена оптимизация при компиляции.Да есть ещё одна приятная фишечка-можно отключать варнинги участков кода,в безопасности кода которых Вы уверены,и долгое время используете в своих библиотеках.
Что-то из темы -"Не читал,но осуждаю"(с).подобные (например, splint) работать с диалектом CodeVision. На практике не проверял
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
Странно, порылся в своих старых сырцах: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; Учиться, учиться, ...
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
Озадачили вы меня ) Сейчас почитаю соответствующею ветку. А вот ваши слова "на AVR Studio свет клином не сошелся" мне понравились.Goldsmith писал(а): В принципе с тем же успехом можно выбрать и другую оболочку, например, ту же Eclipse (см. соответствующую тему в этой ветке). Плюсы и минусы каждого варианта - предмет отдельного обсуждения, просто имейте в виду, что на AVR Studio (она же с недавних пор Microsoft Visual Studio) свет клином не сошелся.
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
Начинать полюбому лучше с ассемблера чтения документации, уже после этого ассемблер. Не для использования вставок, разумеется а для понимания функционирования контроллера (что такое стек, разрядность переменных, скорость выполнения, работа подпрограмм и тому подобное).
Потом можно браться за языки высокого уровня: Наиболее распространен Си но встречаются извращенцы и С++ и Pascal и даже Basic, выбор языка - на ваш вкус.
Что-то говорили о портируемости... Вряд ли портировать С-код намного проще чем ассемблерный, уж больно много места занимают непосредственное использование регистров и прочего платформо-зависимого. И даже avr-gcc не совсем совместим со стандартом языка C (хотя бы обращения к различным областям памяти - flash, SRAM, EEPROM - функции отличаются)
Именно про avr-gcc vs cvavr: несмотря на те же костыли для работы с флешом, avr-gcc гораздо ближе к реализации стандарта Си. После некоторого времени программирования для компьютера конструкции PORTD.5 вызывают довольно сильную неприязнь. Библиотеки cvavr ("не читал но осуждаю", да) используют наиболее универсальную реализацию. Соответственно без использования прерываний, таймеров и прочих полезных вещей. Насчет надежности говорить не буду, наверняка не меньше чем у самописных а куда как больше. Зато, например, чтобы получить байт от UART'а придется тормозить весь камень, нехорошо-с. Хотя, конечно, никто не возбраняет переписать с нуля.
Потом можно браться за языки высокого уровня: Наиболее распространен Си но встречаются извращенцы и С++ и Pascal и даже Basic, выбор языка - на ваш вкус.
Что-то говорили о портируемости... Вряд ли портировать С-код намного проще чем ассемблерный, уж больно много места занимают непосредственное использование регистров и прочего платформо-зависимого. И даже avr-gcc не совсем совместим со стандартом языка C (хотя бы обращения к различным областям памяти - flash, SRAM, EEPROM - функции отличаются)
Именно про avr-gcc vs cvavr: несмотря на те же костыли для работы с флешом, avr-gcc гораздо ближе к реализации стандарта Си. После некоторого времени программирования для компьютера конструкции PORTD.5 вызывают довольно сильную неприязнь. Библиотеки cvavr ("не читал но осуждаю", да) используют наиболее универсальную реализацию. Соответственно без использования прерываний, таймеров и прочих полезных вещей. Насчет надежности говорить не буду, наверняка не меньше чем у самописных а куда как больше. Зато, например, чтобы получить байт от UART'а придется тормозить весь камень, нехорошо-с. Хотя, конечно, никто не возбраняет переписать с нуля.
что-то подобное volatile?В CVAVR,к примеру, можно отметить участки кода,в которых будет отключена оптимизация при компиляции.
Ну это смотря как программировать. Мне было неудобно отказываться от подсказок AVRStudio и программатора с графическим интерфейсом. Но это скорее дело привычки. А так да, avr-gcc(Си), avra (ассемблер), avrdude(программатор, причем во много раз универсальнее AVRProg'a) вполне достаточно.Еще один фактор - при желании перейти на Linux практически ничего для Вас не изменится
- Goldsmith
- Опытный кот
- Сообщения: 736
- Зарегистрирован: Пн янв 10, 2011 03:06:36
- Откуда: Ростов-на-Дону
- Контактная информация:
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
Очень многое зависит не столько от языка, сколько от стиля... даже не программирования, а проектирования программы. Если код представляет собой месиво из перемежающихся строк бизнес-логики и низкоуровневой работы с периферией, то да, большой разницы нет - придется лазить по всему коду и править. Впрочем, с таким кодом головной боли и без портирования хватит (например, попробуйте его более-менее полноценно протестировать; подвиг, достойный Геракла).COKPOWEHEU писал(а):Что-то говорили о портируемости... Вряд ли портировать С-код намного проще чем ассемблерный, уж больно много места занимают непосредственное использование регистров и прочего платформо-зависимого.
Если бизнес-логика аккуратно отделена от жонглирования битами в портах, тут все попроще. Если же вся аппаратная зависимость сосредоточена в тонкой прослойке HAL, объем работ минимален. Люди Linux таскают с платформы на платформу, а мы тут с несчастным дрыганьем битов в портах проблемы создаем на пустом месте...
IMHO превосходная практика - использование паттерна MCH (близкий аналог паттернов MVC и MVP из мира десктопных приложений). Примеры применения: "Развитие в направлении разработки встроенных систем", "Эффективная разработка встроенного ПО через тестирование".
Я бы даже сказал, "смотря что понимать под программированием". Если сам процесс заливки кода в кристалл, то да, все выглядит по-другому. Если в более широком смысле (как весь процесс разработки от сбора требований до выпуска релиза), то разница в наборе кнопочек редактора и подсказках среды большой погоды не делает. Опять же, дело вкуса.COKPOWEHEU писал(а):Ну это смотря как программировать. Мне было неудобно отказываться от подсказок AVRStudio и программатора с графическим интерфейсом.Еще один фактор - при желании перейти на Linux практически ничего для Вас не изменится
Лично мне, наоборот, не слишком комфортно было регулярно прыгать из Studio, где производится собственно кодирование, в StarUML, где ведется проектирование программы, и обратно. Не нашел ничего подходящего для работы с UML в среде Studio. А вот для Eclipse быстро нашелся подходящий плагин, и теперь проект действительно интегрирован, а не раскидан по разным файлам. Опять же - без жесткой привязки к ОС...
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
- Goldsmith
- Опытный кот
- Сообщения: 736
- Зарегистрирован: Пн янв 10, 2011 03:06:36
- Откуда: Ростов-на-Дону
- Контактная информация:
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
Просто предупредил о возможных проблемах, поскольку лично не убедился в работоспособности их совместной работы. Поэтому с удовольствием выслушаю мнение того, кто читал и осуждает (или аплодирует в экстазе, неважно; главное, что имеет реальный опыт).Vov123 писал(а):Что-то из темы -"Не читал,но осуждаю"(с).подобные (например, splint) работать с диалектом CodeVision. На практике не проверял
Как splint в действительности относится к особенностям синтаксиса CodeVision?
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
Для ясности. Проект WinAVR ушёл под клыло Atmel и теперь называется Atmel AVR Toolchain.
Можно скачать как отдельно (win, lin), так и в составе AVR studio.
Можно скачать как отдельно (win, lin), так и в составе AVR studio.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
- urry
- Сверлит текстолит когтями
- Сообщения: 1262
- Зарегистрирован: Пн дек 08, 2008 10:58:48
- Откуда: Винница
- Контактная информация:
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
ds1307, попробуйте в этой версии работу в юнионах с битовыми полями - я не привык флудить. Если я пишу, что были проблемы, которые вылечились версией 2.3.4 - значит, так и было. Но поднимать свои проекты 4 летней давности - не буду. Я ценю свое время.
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
volatile - это спецификатор переменной,которая изменяется в прерываниях,а я говорил о командах препроцессора CVAVR(#pragma optsize- и #pragma optsize+).Если Вы посчитали,что Ваш код получается где-то кривоватым,то там можно отключить оптимизацию,но только там где это необходимо Вам,а не отключать оптимизацию полностью.COKPOWEHEU писал(а):что-то подобное volatile?
Гляньте настройки проекта в CVAVR и WinAVR,в первом кнопочек поболее будет.
Теперь о WinAVR,небольшие непонятки у меня возникли в нём с привидением типов,вот такой код
Код: Выделить всё
unsigned int a;
unsigned char b = 5;
(unsigned char)a = b;- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Помогите с выбором Компилятора ! Для AVR на языке Си !
... лучше понять, чего Вы хотите этим добиться?Vov123 писал(а):вот такой кодКод: Выделить всё
... (unsigned char)a = b;
PS. Думаю, что
Код: Выделить всё
a = (unsigned int)b;Код: Выделить всё
a = b;
Последний раз редактировалось ChipKiller Чт фев 21, 2013 10:55:51, всего редактировалось 1 раз.


