Почему Arduino использует AVR? Я понимаю, что они являются официальным процессором, но нет причины, по которой код не может быть перенесен на ARM или архитектуру Freescale, кроме стоимости, верно? Пока есть встроенная память, я полагал, что в эти части может быть легкая миграция.
Я вижу много ARM в промышленности (кажется, что каждый производитель подталкивает их к своим разработкам), и мне было интересно, почему в мире разработчиков Arduino не было такого большого интереса.
Ответы:
Да и нет. Я разрабатывал AVR32 для конкретного проекта, и среда разработки (в частности, цикл компиляции / программы / отладки) ужасна по сравнению, например, с PIC32.
Клиенты не заботятся, за исключением затрат и обслуживания, а в случае системы, подобной arduino, программистам все равно, потому что среда и цикл разработки arduino намного лучше, чем текущая настройка AVR32.
Нет причин, по которым нельзя было бы использовать другой процессор , но есть очень веская причина, по которой они выбрали 8-разрядное устройство младшего класса, а не устройство ARM, MIPS, PowerPC и т. Д. Простота использования.
Если вы посмотрели на настройку даже для низкоуровневых плеч, это на порядок сложнее (отображение памяти, кэширование и т. Д.), Чем 8-битный процессор. Но что еще более важно - в то время не было процессоров DIP arm, и они предназначались для использования и сборки художниками и хакерами, а не обязательно электронными техниками и инженерами, которые чувствуют себя комфортно даже с 48-контактным TQFP.
Причина, по которой AVR был выбран вместо PIC, заключается в том, что PIC на самом деле не имеет широко используемого бесплатного компилятора C с открытым исходным кодом, помимо прочего (порт SDCC не является зрелым).
Главным образом это связано с простотой использования - сложность, легкость пайки, стоимость и тот факт, что в этом нет особой необходимости. Разработчикам нравится идея иметь много энергии, но в конце дня, когда все, что вам нужно сделать, это переместить несколько сервоприводов и высветить несколько лампочек с низкоуровневым БПФ, 8-битный процессор - это просто замечательно.
Даже низкочастотные ARMS Cortex, выпускаемые в 28-контактных корпусах, по-прежнему являются SOIC, а не DIP.
Таким образом, AVR имел все нужные функции:
Во многом это все еще верно - я не знаю ARM в формате dip, и адаптеры делают его значительно дороже, чем AVR. По большей части производители не думают, что 32-битный процессор с DIP-компоновкой будет очень прибыльным.
источник
Идет развитие вооружений - взгляните на следующие проекты.
кленовый лист
XDuino
Cortino
Illuminato
ARM PRO семья
А теперь ARM в DIP-пакете.
NXP LPC1114FN28
BASICchip
источник
Поскольку вы, кажется, опрашиваете мнение, вот мои $ .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.
источник
Частично причиной большого интереса сообщества к Arduino является физическая стандартизация. Несмотря на всю сложность физической компоновки, разработчики Arduino позволили разработчикам Arduino предлагать свои собственные решения. Если вы хотите заменить базовую плату Arduino другой платой, в которой используется другой микроконтроллер, вы можете это сделать. IIRC, кто-то уже создал плату на основе PIC, которая использует форм-фактор Arduino. (Плата PIC Ardunio не имеет такого же форм-фактора, но в остальном похожа.)
Еще одна причина успеха Arduino заключается в его открытости - большинство микроконтроллеров на основе PIC были закрыты; Они использовали запатентованные аппаратные реализации, поэтому, если вы хотите изменить дизайн платы, чтобы она лучше подходила для конкретного пространства, вам не повезло. Они использовали собственные прошивки и проприетарные средства разработки, так что если у вас были ошибки или вы хотели расширить возможности, вам не повезло. С Arduino каждый кусочек головоломки открыт: вы можете покупать детали где угодно, переставлять их по мере необходимости, улучшать или модифицировать прошивку И инструменты разработки. Вы можете начать с Arduino IDE просто, но вы все равно можете перейти на C или Assembly в любое время, когда вам это нужно.
Лично мне нравится Arduino, потому что в нем много всего «правильного»: он не слишком дорогой, не привязан к проприетарным инструментам, с него легко начинать, у него много возможностей, и у него большое сообщество пользователей. , который продолжает расширяться и делать изящные вещи.
источник
Основным преимуществом ATmel UC является то, что для Linux, ПК и Mac доступен бесплатный компилятор. Добавьте к этому простой кроссплатформенный графический интерфейс, и вы получите бесплатную систему разработки, которая работает на всех платформах.
Стоимость является основным фактором для любителей доски. Так как вы хотите, чтобы стартовая цена была в диапазоне 30 долларов, вам нужно иметь стоимость ОК, не превышающую пару долларов.
ARM был бы отличным кандидатом на советы высшего класса. Многие компании лицензируют ядро ARM и добавляют периферийные устройства. Я считаю, что есть бесплатные компиляторы для Linux, ПК и MAC.
Мне очень нравится Freescale Coldfire для высококлассных плат. Я работал на доске для испытательного оборудования, которое использовало 5206e. Мы добавили некоторые DRAM и высокоточные аналого-цифровые и цифро-аналоговые преобразователи. Это было экономически эффективное решение. Недавно я сравнил Coldfire с широким спектром ARM.
Некоторые из 8-битных UC Freescale хороши, но я не уверен, есть ли у них бесплатные инструменты.
источник
Я согласен с пакетом погружения, не согласен с тем, что руки сложнее настраивать, но они не единственные, кто находится на блоке рук (в этом отношении сам 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, это менее болезненно.
источник
Я знаю, что вы сказали «кроме стоимости», но на самом деле это самое главное для любителей. Вам не нужно более одного UART или более одного SPI для того, чтобы стать дешевой общей платформой. Как только вы начнете нуждаться в скоростях> 20 МГц, вы действительно должны смотреть на пользовательские настройки (ymmv конечно)
источник
Пара небольших моментов, не затронутых в других комментариях:
Arduino предназначен для небольших проектов ввода / вывода, добавляя небольшое количество информации в схему. Обычно это однопоточные устройства реального времени, где ARM будет очень бесполезным. Конечно, существует множество вариантов для плат ARM, но сценарий их использования обычно отличается - обычно они загружаются в полнофункциональную операционную систему.
Ориентируясь на этот небольшой пример использования, все остальное становится проще - количество выводов, вспомогательные компоненты, энергопотребление и т. Д.
Тем не менее, для целевого варианта использования Arduino, это не так, как вы дремлет его. Процессор с частотой 16 МГц очень важен для вашего будильника со встроенным светодиодным чейзером (или чем-то еще :)
источник
Arduino является доступен на других процессорах. Взгляните, например, на ChipKit от Microchip. Это использует PIC 32.
источник
Вторая попытка (оригинальное название поста и вопрос от +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 / .источник