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

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

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

Кто ваш рынок? Если вы пытаетесь продать что-то большое в промышленности, вам понадобится ARM, потому что, если Atmel разорится, у вас ничего не останется, если вы используете AVR. Вместе с ARM есть много других поставщиков, которые предлагают почти незаметные замены. Повышенная сложность ARM не так важна для хороших инженеров, как для любителей, которые не знают основ. Если вы продаете любителям, кривая обучения будет слишком крутой, мощность процессора не будет использоваться, а SMT станет воображаемой кирпичной стеной. О ком вы беспокоитесь — о клиентах-любителях или о потенциальных работодателях? Пожалуйста. уточнить.
Я не пытаюсь оскорбить, но вопрос напрашивается. Atmel уже более 25 лет, у нее очень успешный рынок, кроме ARM, AVR сам по себе является очень и очень успешной платформой. Каковы шансы, что такая компания разорится. Звучит так, будто говорят: «Не пользуйтесь окнами, а что, если Microsoft выйдет из строя?»
Я согласен с двумя другими вашими замечаниями, а именно с тем, что если у вас есть рынок для любителей, маловероятно, что будет использована вся мощь ARM, а SMT станет кирпичной стеной.
Разве нет Arduino Due с SAM3XE (ARM 32 бита) uC? Потому что у меня есть один в моей руке прямо сейчас ...
Хочу отметить, что "в наше время" действительно есть платы на базе ARM, которые можно программировать с помощью Arduino (библиотеки и IDE). Teensy 3.2 — отличный тому пример. sparkfun.com/products/13736

Ответы (10)

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

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

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

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

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

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

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

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

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

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

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

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

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

Есть один, Parallax Propeller. Он имеет восемь 32-разрядных процессоров на чипе и поставляется в корпусах DIL, QFP и QFN.
Это точно. AVR вместо PIC из-за лицензирования и AVR через ARM из-за простоты программного обеспечения и набора инструментов, а также возможности пайки. Для ваших собственных проектов это может не применяться. Однако, если вы хотите разработать ARM-duino, взгляните на другие похожие проекты. Они не приживаются, как AVR. Это также может быть связано со средой разработки Arduino.
Какие инструменты AVR32 вы используете? Я использую IAR как на AVR32, так и на MSP, и считаю эту среду очень функциональной. Стоимость не является проблемой в профессиональной среде - эквивалентна стоимости найма инженера на неделю.
Это утверждение об инструментах можно преодолеть — Arduino использует gcc, который также имеет доступный порт AVR32.
У NXP теперь есть несколько ARM Cortex-M0 в корпусе DIP. Думаю из семейства LPC11xx. Я предполагаю, что их целевой рынок — чрезвычайно дешевая, низкокачественная односторонняя печатная плата в бытовой технике.

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

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

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

Экосистема

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

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

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

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

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

Качество таблицы данных, заметок по применению и их удобочитаемость также имеют значение. 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.
Я не помню никаких 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. И не слишком отвлекайтесь на обходные заглушки. Во-первых, тантал может иметь смысл в качестве фильтра питания, но настоящие байпасные крышки представляют собой более дешевые локальные резервуары для требований высокочастотного переключения и поэтому могут быть дешевой керамикой для поверхностного монтажа. Кроме того, потребность в тактовой частоте и частоте переключения ввода-вывода — при сравнимой тактовой частоте ARM на самом деле не понадобятся все рекомендуемые ограничения обхода.
Ну, я бы сказал, что 328p сам по себе является чем-то вроде AVR на стероидах, но тогда вы бы указали на 1280 и его друзей. Когда дело доходит до того, что я на самом деле использую такое количество флэш-памяти и оперативной памяти (точнее, оперативной памяти. В большинстве случаев я никогда не видел верхнюю часть флэш-памяти), обычно это происходит в ситуации, когда рука имеет смысл. Как правило, эта точка достигается раньше из-за ограничений ввода-вывода для моих приложений. Тем не менее, есть много мест, где я бы использовал 48 или 88, и много раз, когда заманчиво использовать аттини.

Идет разработка оружия — взгляните на следующие проекты.

кленовый лист

XДуино

Кортино

Иллюминато

Семейство АРМ ПРО

А теперь ARM в DIP-корпусе.

НСП LPC1114FN28

ОСНОВНОЙчип

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

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

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

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

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

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

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

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

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

Спасибо за полезный комментарий, но 8 строк «подписи» немного экстремальны, эти сайты, основанные на stackoverflow, склонны смотреть свысока на рекламу ваших собственных сайтов в ваших ответах.
@jluciani, если вы хотите рекламировать другие свои веб-сайты, размещайте ссылки в своем профиле, а не в своих ответах. Ведь ваш блог - не ответ на этот вопрос...

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

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

Сейчас ничто не может конкурировать с ARM. Для любого другого процессора, к которому вы прикасаетесь в день, вы прикасаетесь как минимум к нескольким ARM. Для некоторых почти все, к чему вы прикасаетесь, использует ARM. Он естественным образом подходит в качестве 8-битного убийцы, может обеспечить гораздо лучшую производительность, чем 8-битный, при том же размере, цене и т. д. Инструменты намного лучше, набор инструкций намного чище, чем у большинства его конкурентов, поэтому работает тот же код, что и намного быстрее и т. д. Поскольку любой и их брат может встроить ARM, и он не привязан к компании, такой как pic, avr, msp430, существует множество различных решений и столько же различных способов работы с микроконтроллерами. и таблицу векторов прерываний. К сожалению, более популярное решение является наиболее болезненным. Попробуйте сам7 или что-то в этом роде или стелларис. Существует armmite pro, который является попыткой сделать плагин для Arduino на основе руки,

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

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

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

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

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

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

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

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

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

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

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

Поскольку 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/ .