Почему AVR используется в Arduino?


41

Почему Arduino использует AVR? Я понимаю, что они являются официальным процессором, но нет причины, по которой код не может быть перенесен на ARM или архитектуру Freescale, кроме стоимости, верно? Пока есть встроенная память, я полагал, что в эти части может быть легкая миграция.

Я вижу много ARM в промышленности (кажется, что каждый производитель подталкивает их к своим разработкам), и мне было интересно, почему в мире разработчиков Arduino не было такого большого интереса.


4
Кто твой рынок? Если вы пытаетесь продать что-то крупное в отрасли, то вам понадобится ARM, потому что, если Atmel рухнет, у вас ничего не останется, если вы используете AVR. С ARM есть много других поставщиков, которые предлагают почти замену. Сложность ARM менее важна для хороших инженеров, чем для любителей, которые не знают основ. Если вы продаете любителям, кривая обучения будет слишком крутой, мощность процессора не привыкнет, а SMT станет воображаемой кирпичной стеной. Кого вы волнуете - клиентов-любителей или потенциальных работодателей? Pls. прояснить.
Кевин Вермеер

9
Я не пытаюсь быть оскорбительным, но этот вопрос требует ответа. Atmel более 25 лет, имея очень успешный рынок, кроме ARM, AVR сама по себе является очень успешной платформой. Каковы шансы у такой компании упасть. Это звучит как сказать: «Не используйте окна, что если MicroSoft выйдет из строя?»
Rick_2047

Я согласен с двумя другими вашими соображениями, а именно: если у вас есть рынок для любителей, есть редкие шансы, что будет использоваться вся мощь ARM, а SMT будет кирпичной стеной.
Rick_2047

2
Разве нет Arduino Due с SAM3XE (ARM 32 бит) на нем? Потому что у меня есть один в моей руке прямо сейчас ...
Doombot

1
Я хотел бы отметить, что "в настоящее время" на самом деле существуют платы на основе ARM, которые можно программировать с помощью Arduino (библиотеки и IDE). Teensy 3.2 является отличным примером этого. sparkfun.com/products/13736
Пол

Ответы:


32

Кто-нибудь вообще заботится о том, что вы разрабатываете?

Да и нет. Я разрабатывал AVR32 для конкретного проекта, и среда разработки (в частности, цикл компиляции / программы / отладки) ужасна по сравнению, например, с PIC32.

Клиенты не заботятся, за исключением затрат и обслуживания, а в случае системы, подобной arduino, программистам все равно, потому что среда и цикл разработки arduino намного лучше, чем текущая настройка AVR32.

Мне просто интересно, потому что в семье Arduino такой сильный контингент для AVR. Я понимаю, что они являются официальным процессором, но нет причины, по которой код не может быть перенесен на ARM или архитектуру Freescale, кроме стоимости, верно? Пока есть встроенная память, я полагал, что в эти части может быть легкая миграция.

Нет причин, по которым нельзя было бы использовать другой процессор , но есть очень веская причина, по которой они выбрали 8-разрядное устройство младшего класса, а не устройство ARM, MIPS, PowerPC и т. Д. Простота использования.

Если вы посмотрели на настройку даже для низкоуровневых плеч, это на порядок сложнее (отображение памяти, кэширование и т. Д.), Чем 8-битный процессор. Но что еще более важно - в то время не было процессоров DIP arm, и они предназначались для использования и сборки художниками и хакерами, а не обязательно электронными техниками и инженерами, которые чувствуют себя комфортно даже с 48-контактным TQFP.

Причина, по которой AVR был выбран вместо PIC, заключается в том, что PIC на самом деле не имеет широко используемого бесплатного компилятора C с открытым исходным кодом, помимо прочего (порт SDCC не является зрелым).

Я вижу много ARM в промышленности (кажется, что каждый производитель подталкивает их к своим разработкам), и мне было интересно, почему в мире разработчиков Arduino не было такого большого интереса. Мысли?

Главным образом это связано с простотой использования - сложность, легкость пайки, стоимость и тот факт, что в этом нет особой необходимости. Разработчикам нравится идея иметь много энергии, но в конце дня, когда все, что вам нужно сделать, это переместить несколько сервоприводов и высветить несколько лампочек с низкоуровневым БПФ, 8-битный процессор - это просто замечательно.

Даже низкочастотные ARMS Cortex, выпускаемые в 28-контактных корпусах, по-прежнему являются SOIC, а не DIP.

Таким образом, AVR имел все нужные функции:

  • Легко паять
  • Легко получить по почте по всему миру
  • Бесплатный компилятор GCC C
  • Легко понять, настройки и использования процессора и периферийных устройств
  • дешево
  • Вездесущий - много людей и опыта, окружающих семью AVR

Во многом это все еще верно - я не знаю ARM в формате dip, и адаптеры делают его значительно дороже, чем AVR. По большей части производители не думают, что 32-битный процессор с DIP-компоновкой будет очень прибыльным.


Есть один, Пропеллер Параллакса. Он имеет восемь 32-разрядных процессоров на чипе и поставляется в пакетах DIL, QFP и QFN.
Леон Хеллер

5
Это на месте. AVR поверх PIC из-за лицензирования, а AVR поверх ARM из-за простоты программного обеспечения и набора инструментов и возможности пайки. Для ваших собственных проектов это может не применяться. Однако, если вы хотите разработать ARM-duino, взгляните на другие подобные проекты. Они не завоевывают популярность, как у AVR. Это также может быть связано со средой разработки Arduino.
Кевин Вермеер

Какие инструменты AVR32 вы используете - я использую IAR как на AVR32, так и на MSP и обнаружил, что эта среда обладает высокой способностью. Стоимость не является проблемой в профессиональной среде - эквивалентна стоимости найма инженера на неделю.
uɐɪ

Это утверждение об инструментах может быть преодолено - Arduino использует gcc, который также имеет доступный порт AVR32.
Крис Страттон

1
NXP теперь имеет несколько ARM Cortex-M0 в DIP-пакете. Я думаю, из семейства LPC11xx. Я предполагаю, что их целевой рынок - чрезвычайно дешевая, низкокачественная, односторонняя печатная плата, в бытовой технике.
Марко


16

Поскольку вы, кажется, опрашиваете мнение, вот мои $ .02. Работаю ли я над ARM или AVR, имеет значение (и, следовательно, мне все равно), в основном, исходя из того, что я пытаюсь сделать. Есть случаи, когда AVR имеет смысл, и есть случаи, когда ARM имеет смысл. В общем, существует также компромисс между, скажем, AVR и PIC.

Во-первых, хотя я, вероятно, столкнусь с трудностями из-за этого, «сильный контингент в семье Ардуино» является чем-то вроде вокального меньшинства. Большинство людей из arduino (пользователей), с которыми я сталкивался, предпочитают относиться к своему оборудованию так же, как к скрипту на python, чтобы сделать что-то забавное, часто с более низким уровнем понимания сложностей, чем они. будет, когда они будут делать "из NumPy импорта Foo". Несмотря на то, что Arduino делает что-то полезное, есть и много места для критики.

Я думаю, что стоит взглянуть на AVR, кроме экосистемы Arduino. Контингент Arduino также получил большую выгоду от причин, которые сделали AVR чем-то вроде стандарта defacto для любителей вещей - мантии, которую он все больше захватывает от PIC еще до появления arduino. Прямыми конкурентами AVR будут PIC и, в некоторой степени, MSP430, который набирает обороты во многом благодаря активному маркетинговому движению TI в сочетании с инструментами субсидирования.

экосистема

Как уже упоминалось в других ответах, AVR - это единственное семейство, которое имеет чистый, стандартизированный способ добраться от нуля до Привет мира, используя бесплатные инструменты. Порт avr-gcc, части, составляющие цепочку инструментов winavr, множество схем программистов с различной сложностью и возможностями, но все же связанных с полномочиями, полученными благодаря поддержке avrdude, значительно упрощают разработку инструментария.

Экосистема PIC - это кошмар, с любым количеством компиляторов, инструментов программирования, ассемблеров, что у вас есть. Многие из них не совместимы друг с другом. Большинство из них платные. Не все из них хороши. Что еще более важно, не существует стандарта де-факто. Альтернативы свободного / открытого исходного кода (скажем, SDCC) оставляют желать лучшего, но более того, они не смогли получить статус стандарта defacto, как avr-gcc и company. Даже с разработанной программной цепочкой вам, по крайней мере, придется инвестировать в какого-то программиста. PICkit может стоить около 20 $ или около того, но когда вам нужно выяснить, как купить его онлайн (кредитные карты, международные перевозки, форекс), это может стать преградой для любителей. Там не хорошо,

MSP430 немного лучше, в основном потому, что он более новый (по крайней мере, с точки зрения популярности) - там гораздо меньше шума, чтобы с ним бороться. TI поставляет вам образцы микросхем с эффективностью, которую я не видел больше нигде. mspgcc находится в хорошем состоянии, и есть даже программное обеспечение для отладки с открытым исходным кодом, которое нетрудно найти или настроить. Проблема, однако, заключается в том, что он не такой дружелюбный, как AVR. У вас все еще есть проблема Программиста, которая стоит дороже, чем то, что вам нужно было бы купить для PIC. Работа от источника питания 3,3 В создает ощутимый барьер для людей, привыкших к 5-вольтовой логике. И он не масштабируется в DIP - есть доступные младшие, но не после того, как вы достигнете более четких фишек.

Простота использования

DIP против SMD, я думаю, является более важным отличием, чем это часто приписывают. Микросхема DIP может использоваться на макетах, платах общего назначения, как бы они ни назывались, где бы вы ни жили, и так далее. Микросхема SMD обязательно требует изготовления или приобретения адаптерных плат, которые не всегда легко найти в нужном размере или форме.

Качество таблицы данных, примечания по применению и их удобочитаемость также имеют значение. Atmel, кажется, справляется с этим немного лучше. Конечно, это очень субъективная оценка.

AVR могут использовать внутренний RC, в то время как PIC часто не используют. Им нужен кристалл, что делает его немного рискованным в сочетании с недостатком уверенности.

AVR также казались более дружественными к системному программированию по сравнению с PIC несколько лет назад, хотя я мог очень легко ошибаться там.

AVR против ARM

Ваш вопрос, однако, был связан с AVR против ARM. Как я уже говорил в начале, AVR и ARM занимают разные места в спектре. Если у вас есть что-то, что вы можете сделать с AVR, то зачем вам это делать с ARM? ARM более дороги, требуют большего количества деталей, потребляют больше энергии, делают более сложный код, требуют более дорогих процессов изготовления. Пайка 100-контактного TQFP обходится дороже, чем пайка 40-контактного DIP / SOIC, в зависимости от того, как вы измеряете стоимость. Это может не сработать, если вы производите большие объемы и используете технологии производства, дружественные к этому, но если вы делаете это, то разница в цене станет еще более привлекательной, если вы выберете более дешевое решение.

В качестве контроллера для общего взлома по всему дому или что-то еще, я бы сказал, AVR проще в использовании, потому что: - Более стандартизированный с точки зрения любителей, больше кода, который я могу повторно использовать из Интернета, потому что не так много вариации компилятора и вариации между именами регистров и API среди членов семьи. (Попробуйте перенести код LPC ARM на аппаратное обеспечение ATMEL ARM, вы поймете, что я имею в виду). Код по своей сути становится все более сложным (да. Действительно). - Набор инструментов требует дополнительной работы для настройки. - Делает интерфейс немного легче. ARM обычно опускают вас до логики 3 на 3 или 1 на 8, что затрудняет взаимодействие с другими игрушками. - Дешевле. - Получить чип ARM в местном магазине бытовой техники - не вариант для меня, где я живу, получить AVR.


1
Я не помню никаких PIC, кроме некоторых частей OTP, где биты предохранителей были предварительно запрограммированы как часть заводских испытаний (единственный способ подтвердить, что режимы LP, XT или HS работали, состоял в том, чтобы сконфигурировать чип для этого режима) это требовало кристалла. Некоторым требовался внешний резистор и колпачок для использования режима RC, и у него были довольно грубые характеристики частоты, которую он будет производить, но я не помню никаких PIC без варианта дизайна для внутреннего или внешнего RC. Я забыл что-нибудь?
Суперкат

На самом деле, стоимость ARM / AVR довольно близка к стоимости сопоставимых ресурсов. И пакеты, которые будут использоваться в производственной среде, не обязательно будут такими разными, поскольку, скорее всего, это будут варианты QFP или QFN. Требуемая схема поддержки также вполне сопоставима.
Крис Страттон

@Chris: Когда вы учитываете ресурсы, которые предоставляет каждый чип, я бы сказал, что ARM будет выходить дешевле почти каждый раз. Тем не менее, дело в том, что в ситуациях, когда AVR имеет смысл в производственной среде, вам не нужны лошадиные силы и / или навороты, которые ARM приносит на стол. Когда взвешивается с использованием ресурсов вместо доступных ресурсов, AVR получается дешевле. Я не думаю, что схема поддержки сопоставима (1 танталовый конденсатор против 4 и другие подобные спирали). ARM не дорогой зверь настолько, насколько это может быть излишним.
Чинталагири Шашанк

@supercat: Возможно. Я должен проверить. Мне никогда не казалось очевидным, сколько раз я смотрел на это. Я знаю, что, по крайней мере, некоторые dsPIC могут вернуться к внутреннему, хотя, если вы настроите их правильно, но даже это потребовало небольшой догадки и дурачения, чтобы обнаружить. Таблицы микрочипов оставляют желать лучшего, IMO, но опять же, зависит от того, на какой рынок вы смотрите.
Чинталагири Шашанк

@ChintalagiriShashank - игнорируя другие периферийные устройства и просто глядя на размеры флэш-памяти и оперативной памяти, есть предложения ARM, которые довольно конкурентоспособны, например, с ATMEGA328p. И не слишком отвлекайтесь на заглушки. С одной стороны, тантал может иметь смысл в качестве фильтра питания, но фактические заглушки байпаса являются локальными резервуарами с более низким значением для требований высокочастотного переключения и, следовательно, могут быть дешевой керамикой SMT. Кроме того, то, что необходимо для привода, - это тактовая частота и частота переключения ввода / вывода - при сопоставимой тактовой частоте ARM на самом деле не будут нуждаться во всех рекомендуемых ограничителях байпаса.
Крис Страттон

12

Частично причиной большого интереса сообщества к Arduino является физическая стандартизация. Несмотря на всю сложность физической компоновки, разработчики Arduino позволили разработчикам Arduino предлагать свои собственные решения. Если вы хотите заменить базовую плату Arduino другой платой, в которой используется другой микроконтроллер, вы можете это сделать. IIRC, кто-то уже создал плату на основе PIC, которая использует форм-фактор Arduino. (Плата PIC Ardunio не имеет такого же форм-фактора, но в остальном похожа.)

Еще одна причина успеха Arduino заключается в его открытости - большинство микроконтроллеров на основе PIC были закрыты; Они использовали запатентованные аппаратные реализации, поэтому, если вы хотите изменить дизайн платы, чтобы она лучше подходила для конкретного пространства, вам не повезло. Они использовали собственные прошивки и проприетарные средства разработки, так что если у вас были ошибки или вы хотели расширить возможности, вам не повезло. С Arduino каждый кусочек головоломки открыт: вы можете покупать детали где угодно, переставлять их по мере необходимости, улучшать или модифицировать прошивку И инструменты разработки. Вы можете начать с Arduino IDE просто, но вы все равно можете перейти на C или Assembly в любое время, когда вам это нужно.

Лично мне нравится Arduino, потому что в нем много всего «правильного»: он не слишком дорогой, не привязан к проприетарным инструментам, с него легко начинать, у него много возможностей, и у него большое сообщество пользователей. , который продолжает расширяться и делать изящные вещи.


1
Вы перечислили очень веские причины, по которым любители микроконтроллеров любят Arduino, но вопрос был об ARM против AVR. Arduino был упомянут в связи с его решением выбрать серию микроконтроллеров AVR для его реализации. Я думаю, что некоторые более важные ответы лежат ниже вашего поста; например, тот факт, что Atmel поддерживает свою серию AVR с компилятором C. Тем не менее, хорошая информация для тех, кто не знаком с Arduino.
Озмо

7

Основным преимуществом ATmel UC является то, что для Linux, ПК и Mac доступен бесплатный компилятор. Добавьте к этому простой кроссплатформенный графический интерфейс, и вы получите бесплатную систему разработки, которая работает на всех платформах.

Стоимость является основным фактором для любителей доски. Так как вы хотите, чтобы стартовая цена была в диапазоне 30 долларов, вам нужно иметь стоимость ОК, не превышающую пару долларов.

ARM был бы отличным кандидатом на советы высшего класса. Многие компании лицензируют ядро ​​ARM и добавляют периферийные устройства. Я считаю, что есть бесплатные компиляторы для Linux, ПК и MAC.

Мне очень нравится Freescale Coldfire для высококлассных плат. Я работал на доске для испытательного оборудования, которое использовало 5206e. Мы добавили некоторые DRAM и высокоточные аналого-цифровые и цифро-аналоговые преобразователи. Это было экономически эффективное решение. Недавно я сравнил Coldfire с широким спектром ARM.

Некоторые из 8-битных UC Freescale хороши, но я не уверен, есть ли у них бесплатные инструменты.


4
Спасибо за полезный комментарий, но 8 строк «подписи» немного экстремальны, эти сайты, основанные на стековом потоке, склоняются к тому, чтобы рекламировать ваши собственные сайты в ваших ответах.
Davr

5
@jluciani, если вы хотите рекламировать другие свои сайты, разместите ссылки в своем профиле, а не в своих ответах. В конце концов, ваш блог не является ответом на этот вопрос ...
Крейг Трейдер

5

Я согласен с пакетом погружения, не согласен с тем, что руки сложнее настраивать, но они не единственные, кто находится на блоке рук (в этом отношении сам atmel). Из того, что я помню и испытал, Atmel был и, возможно, все еще более дружелюбен для разработчиков. Бабочка AVR очень помогла им привлечь больше пользователей к их уже добротной и счастливой пользовательской базе. PIC был просто болезненным во многих отношениях, инструменты AVR были там, программирование было быстрым и не стоило вам намного дороже, чем некоторые провода и разъем от радиостанции. Инструменты есть и бесплатные, но не такие простые, как mainline gcc, где вы найдете решения для рук и большого пальца. Задолго до выхода Arduino AVR стал фаворитом для хобби-проектов.

Ничто не может конкурировать с ARM прямо сейчас. Для любого другого процессора, к которому вы прикасаетесь за день, вы касаетесь как минимум нескольких ARM. Для некоторых почти все, к чему вы прикасаетесь, использует ARM. Это естественно, так как 8-битный убийца может получить гораздо лучшую производительность, чем 8-битный при том же размере, цене и т. Д. Инструменты намного лучше, набор инструкций намного чище, чем большинство его конкурентов, поэтому тот же код выполняет намного быстрее и т. д. Поскольку каждый и его брат могут встраивать ARM, и он не привязан к таким компаниям, как pic, avr, msp430, существует широкий спектр решений и столько же различных способов работы со смесью микроконтроллеров rom / ram и таблица векторов прерываний. К сожалению, более популярное решение является наиболее болезненным. Попробуйте sam7 или что-то в этом роде или stellaris.

Проблема не всегда в процессоре, некоторые микросхемы имеют известные проблемы, некоторые имеют другие известные проблемы. некоторые могут не предлагать вывод с открытым коллектором со слабым подтягиванием, и вам придется размещать оборудование вне чипа, чтобы взаимодействовать с чем-то, где у другого может быть это доступно на одном или на всех выводах. Я рекомендую попробовать поле, попробовать разные компании и решения, чтобы, когда вам нужно низкое энергопотребление, вы могли легко использовать msp430, вам нужна вычислительная мощность на небольшом чипе, который вы используете на руку, или если вы хотите сделать открытый проект, на который вы надеетесь другие будут строить в своем гараже, а вы, если сможете, основывайте его на Arduino.

Суть в том, что для вашего вопроса это действительно зависит от вашего приложения и от того, как вы его пишете, а также от производительности и ресурсов, которые вас интересуют. Таким же образом, как gcc или firefox будут работать на разных платформах и процессорах, вы наверняка сможете напишите ваше приложение на C для работы с различными микроконтроллерами ... ЕСЛИ... у вас есть слой абстракции для микроконтроллера, который имеет свою стоимость. если микроконтроллеры имеют достаточно схожие функции и обладают необходимыми функциями, и вы планируете заранее и включите их. Если на следующей платформе достаточно памяти / ресурсов. Вы больше заинтересованы в мобильности, чем в производительности и т. Д. Возможно, вам нужно планировать это заранее. или, по крайней мере, при первом переключении с A на B вы перепроектируете программное обеспечение, если / когда есть третий переключатель с B на C, это менее болезненно.


Ничто не может конкурировать с ARM прямо сейчас. <- в промышленности. В мире любителей AVR все еще очень, очень сильны и будут долгое время.
Кевин Вермеер

Абсолютно согласен, что один мир является безумно популярным, другой мир - это тот, где продукты, которые мы покупаем и используем, где деньги, это что-то другое. Так что для развлечения дома выучите одно, для своей дневной работы выучите другое, и получите возможность играть весь день и всю ночь.
old_timer

4

Я знаю, что вы сказали «кроме стоимости», но на самом деле это самое главное для любителей. Вам не нужно более одного UART или более одного SPI для того, чтобы стать дешевой общей платформой. Как только вы начнете нуждаться в скоростях> 20 МГц, вы действительно должны смотреть на пользовательские настройки (ymmv конечно)


3

Пара небольших моментов, не затронутых в других комментариях:

  • Arduino предназначен для небольших проектов ввода / вывода, добавляя небольшое количество информации в схему. Обычно это однопоточные устройства реального времени, где ARM будет очень бесполезным. Конечно, существует множество вариантов для плат ARM, но сценарий их использования обычно отличается - обычно они загружаются в полнофункциональную операционную систему.

  • Ориентируясь на этот небольшой пример использования, все остальное становится проще - количество выводов, вспомогательные компоненты, энергопотребление и т. Д.

Тем не менее, для целевого варианта использования Arduino, это не так, как вы дремлет его. Процессор с частотой 16 МГц очень важен для вашего будильника со встроенным светодиодным чейзером (или чем-то еще :)


2

Arduino является доступен на других процессорах. Взгляните, например, на ChipKit от Microchip. Это использует PIC 32.


Извините, Олин, заголовок был моей неправильной попыткой редактирования вопроса, сделанного из его тела. Это должно быть более правильным сейчас.
Клабаккио

1

Вторая попытка (оригинальное название поста и вопрос от +3 лет назад были изменены с момента оригинального ответа):

Как ни крути, но особенно в последние несколько лет (в 2007 году ARM запустил архитектуру Cortex-M), популярность 32-битных микроконтроллеров возросла, и поставщики стали лучше обеспечивать более быстрый и легкий доступ для сообщества EE при проектировании в> 8- немного микро (лучше инструменты SW, бесплатные инструменты, больше примеров ...).

Так как Atmel, наряду со 100 другими, также предлагает устройства Cortex-M и модернизировал свой набор инструментов для поддержки AVR до ARM, а также давние отношения, указан путь обновления Arduino (?). Но альтернативы появляются и, по-видимому, включают альтернативные попытки получить свою долю «хобби»: например, mbed от NXP / ARM и недавно «CoAction Hero»: 32-битная плата с открытым исходным кодом ARM Cortex-M3 на KickStarter. ,

Последняя мысль, спустя 3 года после первоначального вопроса: когда все поставщики предлагают 32-битные ядра Cortex-M - может ли Arduino теперь фактически стать не Atmel?

Оригинальный ответ: Альф-Эгиль Боген, один из соучредителей Atmel AVR, рассматривает некоторые предпосылки перехода отрасли от 8-битных к 32-битным ядрам ARM в своем видеоблоге по адресу http: //blog.energymicro. com / 2013/04/24 / avr2arm / .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.