Почему Arduino использует AVR? Я понимаю, что они являются официальным процессором, но нет причин, по которым код нельзя было бы перенести на ARM или архитектуру Freescale, кроме стоимости, верно? Пока есть встроенная память, я полагал, что можно легко перейти на эти части.
Я вижу много ARM в промышленности (похоже, что каждый поставщик внедряет их в свои проекты), и мне было интересно, почему в мире разработчиков Arduino не было большего понимания.
Кто-нибудь вообще заботится о том, что вы разрабатываете?
Да и нет. Я занимался разработкой на 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 были все нужные функции:
Во многом это и сейчас так - я не знаю ARM в дип-формате, да и переходники делают его ощутимо дороже AVR. По большей части производители не думают, что 32-битный процессор в корпусе DIP будет очень прибыльным.
Поскольку вы, кажется, пытаетесь узнать мнение, вот мои 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? ARM дороже, требует большего количества деталей, потребляет больше энергии, требует более сложного кода, требует более дорогих процессов изготовления. Пайка 100-контактного TQFP дороже, чем пайка 40-контактного DIP/SOIC, в зависимости от того, как вы измеряете стоимость. Это может быть не так, если вы производите в больших объемах и используете производственные технологии, совместимые с этим, но если вы делаете это, то разница в цене станет еще более убедительной, чтобы выбрать более дешевое решение.
В качестве контроллера для обычного хакинга по дому или чего-то еще я бы сказал, что AVR проще в использовании, потому что:
Идет разработка оружия — взгляните на следующие проекты.
А теперь ARM в DIP-корпусе.
Одной из причин большого интереса сообщества к Arduino является физическая стандартизация. Каким бы странным ни был физический макет, включив стандартизированный вариант расширения, разработчики Arduino позволили людям придумывать свои собственные решения. Если вы хотите заменить базовую плату Arduino другой платой, использующей другой микроконтроллер, вы можете это сделать. IIRC, кто-то уже построил плату на основе PIC, которая использует форм-фактор Arduino. (Плата PIC Ardunio не имеет такого же форм-фактора, но в остальном похожа.)
Другая причина успеха Arduino заключается в его открытости — большинство микроконтроллеров на базе PIC были закрытыми; Они использовали проприетарные аппаратные реализации, поэтому, если вы хотели изменить дизайн платы, чтобы она лучше вписывалась в конкретное пространство, вам не повезло. Они использовали кастомные прошивки и собственные средства разработки, так что если у вас были баги или вы хотели расширить возможности, вам не повезло. С Arduino каждый кусочек головоломки открыт: вы можете покупать детали где угодно, переставлять их по мере необходимости, улучшать или модифицировать прошивку И инструменты разработки. Вы можете начать с Arduino IDE с простого, но вы все равно можете перейти на C или ассемблер в любое время, когда вам это нужно.
Лично мне нравится Arduino, потому что она делает много вещей «в самый раз»: она не слишком дорогая, она не привязана к проприетарным инструментам, с ней легко начать, у нее много возможностей и у нее большое сообщество пользователей. , который продолжает расширяться и делать аккуратные вещи.
Основным преимуществом UC ATmel является наличие бесплатного компилятора для Linux, ПК и Mac. Добавьте к этому простой кроссплатформенный графический интерфейс, и вы получите бесплатную систему разработки, которая работает на всех платформах.
Стоимость является основным фактором для досок для любителей. Поскольку вы хотите иметь начальную цену в диапазоне 30 долларов, вам необходимо иметь стоимость UC, которая не превышает пару долларов.
ARM был бы отличным кандидатом на платы более высокого уровня. Многие компании лицензируют ядро ARM и добавляют периферийные устройства. Я считаю, что есть бесплатные компиляторы для Linux, ПК и MAC.
Мне очень нравится Freescale Coldfire для топовых плат. Я работал над платой для тестового оборудования, в которой использовался 5206e. Мы добавили немного DRAM и высокоточные аналого-цифровые и цифро-аналоговые преобразователи. Это было экономичное решение. В последнее время я не сравнивал Coldfire с широким разнообразием ARM.
Некоторые из 8-битных UC Freescale хороши, но я не уверен, есть ли у них бесплатные инструменты.
Я знаю, вы сказали «кроме стоимости», но на самом деле это самое важное для любителей. Вам не нужно более одного 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, это менее болезненно.
Пара мелких моментов, не поднятых в других комментариях:
Плата 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/ .
Кевин Вермеер
Рик_2047
Рик_2047
Думбот
Павел