¿Por qué Arduino usa AVR? Entiendo que son el procesador oficial, pero no hay una razón por la que el código no se pueda portar a un ARM o una arquitectura Freescale que no sea el costo, ¿verdad? Mientras haya memoria integrada, pensé que podría haber una migración fácil a esas partes.
Veo una gran cantidad de ARM en la industria (parece que cada vendedor está empujando uno a sus diseños) y me preguntaba por qué no había más aceptación en el mundo de los desarrolladores de Arduino.
Respuestas:
Si y no. He estado desarrollando AVR32 para un proyecto en particular, y el entorno de desarrollo (en particular el ciclo de compilación / programa / depuración) es horrendo en comparación con, por ejemplo, PIC32.
A los clientes no les importa, excepto por el costo y el mantenimiento, y en el caso de un sistema tipo arduino, a los programadores no les importaría porque el entorno de arduino y el ciclo de desarrollo es mucho mejor que la configuración actual de AVR32.
No hay ninguna razón por la que no se pueda usar otro procesador , pero hay una muy buena razón por la que han elegido un dispositivo de 8 bits de gama baja en lugar de un dispositivo ARM, MIPS, PowerPC, etc.
Si ha mirado la configuración incluso para los brazos de gama baja, es un orden de magnitud más complejo (mapeo de memoria, almacenamiento en caché, etc.) que un procesador de 8 bits. Pero aún más importante: en ese momento no había procesadores DIP, y estos estaban destinados a ser utilizados y construidos por artistas y piratas informáticos, no necesariamente técnicos e ingenieros electrónicos que se sienten cómodos incluso con un TQFP de 48 pines.
La razón por la que se eligió el AVR sobre el PIC es que el PIC realmente no tiene un compilador de C libre, de código abierto y ampliamente utilizado, entre otras cosas (el puerto SDCC no está maduro).
Principalmente se debe a la facilidad de uso: complejidad, fácil de soldar, costo y al hecho de que no es necesario. A los desarrolladores les gusta la idea de tener mucha potencia, pero al final del día, cuando todo lo que necesitas hacer es mover algunos servos y encender algunas luces con un FFT de gama baja, un procesador de 8 bits está bien.
Incluso los BRAZOS de córtex de gama baja que salen en paquetes de 28 pines siguen siendo SOIC, no DIP.
Entonces el AVR tenía todas las características correctas:
En gran medida, esto sigue siendo cierto: no conozco un ARM en formato dip, y los adaptadores lo hacen significativamente más caro que el AVR. En su mayor parte, los fabricantes no creen que un procesador de 32 bits empaquetado DIP sea muy rentable.
fuente
El desarrollo de los brazos está llegando: eche un vistazo a los siguientes proyectos.
hoja de arce
XDuino
Cortino
Illuminato
Familia ARM PRO
Y ahora un ARM en un paquete DIP.
NXP LPC1114FN28
BASICchip
fuente
Como parece que estás buscando opiniones, aquí están mis $ .02. Si estoy trabajando en un ARM o AVR es importante (y, por lo tanto, me importa), principalmente en función de lo que estoy tratando de hacer. Hay casos de uso en los que un AVR tiene sentido, y hay aquellos en los que un ARM sí. En general, también hay una compensación que se hace entre, por ejemplo, AVR y PIC.
En primer lugar, aunque probablemente me meteré en problemas por decir esto, el "fuerte contingente en la familia Arduino" es una especie de minoría vocal. La mayoría de las personas arduino (usuarios) con las que me he encontrado son del tipo que preferiría tratar su hardware de la misma manera en que crearían un script de Python para hacer algo divertido, a menudo con un menor nivel de comprensión de las complejidades involucradas que ellos. tendrían cuando harían "de numpy import foo". Si bien hay algo de mérito en la forma de hacer las cosas de Arduino, también hay muchas posibilidades de críticas.
Creo que vale la pena mirar los AVR, aparte del ecosistema Arduino. El contingente de Arduino también se ha beneficiado en gran medida de las razones que hicieron que el AVR sea un estándar de facto para los aficionados, un manto que PIC ha asumido cada vez más, incluso antes de que Arduino apareciera. Los competidores directos del AVR serían el PIC y, en cierta medida, el MSP430, que está ganando terreno debido en gran medida al fuerte impulso de marketing de TI combinado con sus herramientas de subsidio.
Ecosistema
Como se ha mencionado en otras respuestas, el AVR es la única familia que tiene una forma limpia y estandarizada de pasar de cero a hola mundo usando herramientas gratuitas. El puerto avr-gcc, las piezas que hacen que la cadena de herramientas winavr, una gran cantidad de esquemas de programador con complejidad y características variables, pero aún vinculados por la autoridad derivada de ser respaldado por avrdude, hacen que sea mucho más fácil que tratar de hacer funcionar la cadena de herramientas.
El ecosistema del PIC es una pesadilla, con cualquier cantidad de compiladores, herramientas de programación, ensambladores, lo que sea que tenga. Muchos de ellos no son compatibles entre sí. La mayoría de ellos son pagados. No todos son buenos. Más importante aún, no hay un estándar de facto. Las alternativas de código libre / abierto (digamos, SDCC) dejan mucho que desear, pero más que eso, no han logrado adquirir un estado de estándar de facto como avr-gcc y compañía. Incluso con la cadena de herramientas de software desarrollada, al menos tendría que invertir en un programador de algún tipo. El PICkit puede costar aproximadamente $ 20, pero cuando tiene que descubrir cómo comprarlo en línea (tarjetas de crédito, envíos internacionales, problemas de divisas), puede ser un factor decisivo para los aficionados. No hay una buena
MSP430 es marginalmente mejor, principalmente porque es más nuevo (al menos en términos de popularidad): hay mucho menos ruido con el que lidiar. TI le envía muestras de IC con una eficiencia que no he visto en ningún otro lugar. mspgcc está en buen estado, e incluso hay un software de depuración de código abierto que no es difícil de encontrar o configurar. Sin embargo, el problema es que no es tan amigable para los aficionados como lo es el AVR. Aún tiene el problema del Programador, que es más caro de lo que necesitaría comprar para un PIC. La operación de suministro de 3.3v pone una barrera percibida para las personas que están acostumbradas a la lógica de 5v. Y no se escala en DIP: hay disponibles de gama baja, pero no una vez que alcanzas las fichas más desarrolladas.
Facilidad de uso
DIP vs SMD, creo, es una distinción más importante de lo que a menudo se acredita. Un DIP IC se puede utilizar en una placa de pruebas, placas de uso general, como se llamen donde vive, etc. Un IC SMD requiere necesariamente una ejecución de fabricación o la compra de placas adaptadoras que no siempre son fáciles de obtener en el tamaño o la forma que desee.
La calidad de la hoja de datos, las notas de aplicación y la legibilidad de las mismas también marcan la diferencia. Atmel parece hacer un trabajo marginalmente mejor en eso. Por supuesto, esa es una evaluación altamente subjetiva.
Los AVR pueden usar un RC interno, mientras que los PIC a menudo no. se requieren un cristal, lo que hace Dicey ligeramente cuando se combina con una escasez de confianza.
Los AVR también parecían más amigables con la programación en el sistema en comparación con los PIC hace unos años, aunque fácilmente podría estar equivocado allí.
AVR vs ARM
Sin embargo, su pregunta tenía que ver con AVR vs ARM. Como dije al principio, AVR y ARM ocupan diferentes espacios en el espectro. Si tiene algo que puede hacer con un AVR, ¿por qué querría hacerlo con un ARM? Los ARM son más caros, requieren un mayor número de piezas, consumen más energía, crean códigos más complicados, necesitan procesos de fabricación más caros. Soldar un TQFP de 100 pines es más costoso que soldar un DIP / SOIC de 40 pines, dependiendo de cómo mida el costo. Es posible que esto no se cumpla si está produciendo en grandes volúmenes y utilizando técnicas de producción amigables con eso, pero si lo está haciendo, entonces la diferencia de precio será aún más convincente para ir con la solución más barata.
Como controlador de acceso para la piratería general en la casa o lo que sea, diría que AVR es más fácil de usar porque: - Más estandarizado desde una perspectiva de aficionado, más código que puedo reutilizar desde Internet porque no hay tantos variaciones del compilador y variaciones entre nombres de registro y API entre miembros de la familia. (Intente portar el código LPC ARM al hardware ATMEL ARM, verá lo que quiero decir): el código se vuelve intrínsecamente más complicado (lo hace. Realmente). - La cadena de herramientas requiere trabajo adicional para la configuración. - Hace que la interfaz sea un poco más fácil. Los ARM generalmente lo llevarán a 3v3 o 1v8 Logic, lo que hace que la interacción con otros juguetes sea un poco problemática. - Más barato: obtener un chip ARM en la ferretería local no es una opción para mí donde vivo, obtener un AVR es.
fuente
Parte del motivo del gran interés de la comunidad en Arduino es la estandarización física. A pesar de lo complicado que es el diseño físico, al incluir una opción de expansión estandarizada, los desarrolladores de Arduino permitieron a las personas encontrar sus propias soluciones. Si desea reemplazar la placa base Arduino con otra placa que utiliza un microcontrolador diferente, puede hacerlo. IIRC, alguien ya ha construido una placa basada en PIC que utiliza el factor de forma Arduino. (La placa PIC Ardunio no tiene el mismo factor de forma, pero por lo demás es similar).
Otra razón del éxito del Arduino está en su apertura: la mayoría de los microcontroladores basados en PIC estaban cerrados; Utilizaron implementaciones de hardware patentadas, por lo que si desea rediseñar la placa para que se ajuste mejor a un espacio específico, no tuvo suerte. Utilizaron firmware personalizado y herramientas de desarrollo patentadas, por lo que si tenía errores o deseaba ampliar las capacidades, no tenía suerte. Con Arduino, cada pieza del rompecabezas está abierta: puede comprar piezas en cualquier lugar, reorganizarlas según lo necesite, mejorar o modificar el firmware Y las herramientas de desarrollo. Puede comenzar de manera simple con el IDE de Arduino, pero aún puede cambiar a C o Ensamblado en cualquier momento que lo necesite.
Personalmente, me gusta el Arduino porque tiene muchas cosas "correctas": no es demasiado costoso, no está bloqueado en herramientas propietarias, es fácil comenzar, tiene mucha capacidad y tiene una gran comunidad de usuarios , que continúa expandiéndose y haciendo cosas interesantes.
fuente
Una ventaja importante de ATmel uCs es que hay un compilador gratuito disponible para Linux, PC y Mac. Agregue a eso una simple GUI multiplataforma y tendrá un sistema de desarrollo gratuito que se ejecuta en todas las plataformas.
El costo es un factor importante para las juntas de aficionados. Como desea tener un precio inicial en el rango de $ 30, debe tener un costo uC que no sea más que un par de dólares.
ARM sería un excelente candidato para los tableros de gama alta. Muchas compañías licencian el núcleo ARM y agregan periféricos. Creo que hay compiladores gratuitos para Linux, PC y MAC.
Me gusta mucho el Freescale Coldfire para tablas de gama alta. Trabajé en una placa para equipos de prueba que usaban un 5206e. Agregamos algunos convertidores DRAM y A / D y D / A de alta precisión. Fue una solución rentable. No he comparado recientemente Coldfire con la amplia variedad de ARM.
Algunos de los uC Freescale de 8 bits son buenos, pero no estoy seguro de si tienen herramientas gratuitas.
fuente
Estoy de acuerdo con el paquete de inmersión, no estoy de acuerdo con que los brazos sean más difíciles de configurar, los lpcs lo son, pero no son el único niño en el bloque de brazos (el atmel en sí mismo). Por lo que recuerdo y experimenté, Atmel fue y quizás aún es más amigable para los desarrolladores. La mariposa AVR les ayudó mucho a atraer más usuarios a su base de usuarios feliz y de buen tamaño. El PIC fue doloroso en muchos sentidos, las herramientas AVR estaban allí, la programación fue muy fácil y no le costó mucho más que algunos cables y un conector de radio shack. Las herramientas están disponibles y son gratuitas, pero no tan fáciles como mainline gcc, donde se encuentran las soluciones de brazo y pulgar. Mucho antes de que saliera el arduino, el AVR era el chip elegido para proyectos de hobby.
Nada puede competir con ARM en este momento. Para cualquier otro procesador que toque en un día, toque algunos ARM como mínimo. Para algunos, casi todo lo que tocas usa un BRAZO. Es un ajuste natural como el asesino de 8 bits, puede obtener un rendimiento mucho mejor que un 8 bits para el mismo tamaño, precio, etc. Las herramientas son mucho mejores, el conjunto de instrucciones es mucho más limpio que la mayoría de su competencia, por lo que se ejecuta el mismo código que mucho más rápido, etc. Debido a que cualquiera y su hermano pueden incrustar un ARM y no está encerrado en una compañía como pic, avr, msp430, hay una amplia variedad de soluciones y tantas formas diferentes de lidiar con las mezclas de microcontroladores rom / ram y la tabla de vectores de interrupción. Lamentablemente, la solución más popular es la más dolorosa. Prueba un sam7 o algo así o un stellaris.
El problema no es siempre el procesador, algunos chips tienen problemas conocidos, otros tienen otros problemas conocidos. algunos pueden no ofrecer un pin io de colector abierto con un pull up débil y tendrías que colocar el hardware fuera del chip para interactuar con algo, donde otro puede tener eso disponible en uno o todos los pines. Recomiendo probar el campo, probar las diferentes compañías y soluciones para que cuando desee poca potencia pueda usar fácilmente un msp430, desee potencia de procesamiento en un pequeño chip que vaya con el brazo o si desea hacer un proyecto abierto que espera otros construirán en su garaje si lo puedes basar en un arduino.
La conclusión es que su pregunta realmente depende de su aplicación y de cómo la escribe y del rendimiento y los recursos que le interesan. De la misma manera que gcc o firefox se ejecutarán en muchas plataformas y procesadores diferentes, ciertamente puede escriba su aplicación C para ejecutarla en una amplia variedad de microcontroladores ... SI... tiene una capa de abstracción específica de microcontrolador, que tiene un costo. si los microcontroladores tienen características similares y tienen las características que necesita y planifica con anticipación e incorpora esas. Si la siguiente plataforma tiene suficiente memoria / recursos. Está más interesado en la portabilidad que en el rendimiento, etc. Posiblemente deba planificar esto con anticipación. o al menos en el primer cambio de A a B, usted rediseña el software, si / cuando hay un tercer cambio de B a C es menos doloroso.
fuente
Sé que dijiste "aparte del costo", pero realmente eso es lo más importante para los aficionados. No necesita más de un UART o más de un SPI en lo que se supone que es una plataforma barata y genérica. Una vez que comience a necesitar velocidades de> 20 mhz, realmente debería buscar una configuración personalizada (ymmv, por supuesto)
fuente
Un par de pequeños puntos no mencionados en los otros comentarios:
Un Arduino está destinado a proyectos de E / S a pequeña escala, agregando una pequeña cantidad de inteligencia a un circuito. Por lo general, son dispositivos de un solo subproceso, en tiempo real, donde un ARM sería muy desperdiciado. Por supuesto, hay muchas opciones para las placas ARM, pero el caso de uso suele ser diferente: por lo general, se inician en un sistema operativo a gran escala.
Al enfocarse en este caso de uso a pequeña escala, todo lo demás se vuelve más fácil: conteo de pines, componentes de soporte, consumo de energía, etc.
Dicho esto, para el caso de uso objetivo del Arduino, no es como si lo estuvieras haciendo un tugurio. Un procesador de 16MHz es muy duro para su reloj despertador con un cazador LED integrado (o lo que sea :)
fuente
Arduino está disponible en otros procesadores. Mira el ChipKit de Microchip, por ejemplo. Que usa un PIC 32.
fuente
Segundo intento (el título de la publicación original y la pregunta de hace +3 años cambiaron desde la respuesta original):
Pollo y huevo, pero especialmente durante los últimos años (2007 ARM lanzó la arquitectura Cortex-M), las MCU de 32 bits han crecido en popularidad y los proveedores han sido mejores para proporcionar un acceso más rápido y fácil para la comunidad de EE al diseñar en> 8- bit micros (mejores herramientas sw, herramientas gratuitas, más ejemplos ...).
Como Atmel, junto con otros 100, también ofrece dispositivos Cortex-M y ha actualizado su cadena de herramientas para admitir AVR a ARM, además de la relación de larga data, se proporciona la ruta de actualización de Arduino (?). Pero, las alternativas aparecen y parecen involucrar intentos alternativos para ganar su parte del pastel "aficionado": por ejemplo, mbed por NXP / ARM, y recientemente "CoAction Hero",: Junta de 32 bits de código abierto ARM Cortex-M3 en KickStarter .
Reflexión final, 3 años después de la pregunta inicial: cuando todos los proveedores ofrezcan núcleos Cortex-M de 32 bits, ¿podría el Arduino dejar de ser Atmel?
Respuesta original: Alf-Egil Bogen, uno de los cofundadores de Atmel AVR, analiza algunos de los antecedentes del movimiento de la industria de núcleos ARM de 8 bits a 32 bits en su video blog aquí http: //blog.energymicro. com / 2013/04/24 / avr2arm / .fuente