Por que o AVR é ​​usado no Arduino?

41

Por que o Arduino está usando o AVR? Entendo que eles são o processador oficial, mas não há uma razão para o código não poder ser portado para uma arquitetura ARM ou Freescale que não seja o custo, certo? Enquanto houver memória interna, achei que poderia haver uma migração fácil para essas partes.

Eu vejo muito ARM na indústria (parece que todo fornecedor está colocando um em seus projetos) e fiquei imaginando por que não havia mais aceitação no mundo dos desenvolvedores do Arduino.

Chris Gammell
fonte
4
Quem é o seu mercado? Se você estiver tentando vender algo grande na indústria, precisará de um ARM, porque se o Atmel falir, você não terá mais nada se estiver usando o AVR. Com o ARM, existem muitos outros fornecedores que oferecem substituições quase imediatas. O aumento da complexidade do ARM é menos um problema para os bons engenheiros do que para os entusiastas que não sabem o básico. Se você estiver vendendo para entusiastas, a curva de aprendizado será muito íngreme, a potência do processador não será usada e o SMT será uma parede de tijolos imaginada. Com quem você está preocupado - clientes amadores ou empregadores em potencial? Pls. esclarecer.
Kevin Vermeer
9
Não estou tentando ser ofensivo, mas a pergunta pede para ser feita. Atmel tem mais de 25 anos, tendo um mercado de muito sucesso além da ARM, o AVR por si só é uma plataforma de muito sucesso. Quais são as chances de uma empresa cair? Isso soa como dizer: "Não use janelas, e se a MicroSoft for desativada?"
Rick_2047
Concordo com seus outros dois pontos, a saber: se você tem um mercado amador, são raras as chances de que todo o poder do ARM seja utilizado e o SMT seja uma parede de tijolos.
21810 Rick_2047
2
Não existe um Arduino Due com um SAM3XE (ARM 32 bits) uC? Porque, eu tenho uma na minha mão agora ... #
1113
11
Gostaria de observar que "atualmente" existem na verdade placas baseadas em ARM que podem ser programadas usando o Arduino (bibliotecas e IDE). Teensy 3.2 é um excelente exemplo disso. sparkfun.com/products/13736
Paulo

Respostas:

32

Alguém se importa com o que você está desenvolvendo?

Sim e não. Estou desenvolvendo o AVR32 para um projeto específico, e o ambiente de desenvolvimento (em particular o ciclo de compilação / programa / depuração) é horrível em comparação com, por exemplo, o PIC32.

Os clientes não se importam, exceto o custo e a manutenção, e no caso de um sistema semelhante ao arduino, os programadores não se importam, porque o ambiente e o ciclo de desenvolvimento do arduino são muito melhores do que a configuração atual do AVR32.

Eu apenas me pergunto, porque existe um contingente tão forte para os AVRs na família Arduino. Entendo que eles são o processador oficial, mas não há uma razão para o código não poder ser portado para uma arquitetura ARM ou Freescale que não seja o custo, certo? Enquanto houver memória interna, achei que poderia haver uma migração fácil para essas partes.

Não há razão para que outro processador não possa ser usado, mas há uma boa razão pela qual eles escolheram um dispositivo low end de 8 bits em vez de um dispositivo ARM, MIPS, PowerPC, etc.: Facilidade de uso.

Se você analisou a configuração, mesmo para os braços de gama baixa, é uma ordem de magnitude mais complexa (mapeamento de memória, cache, etc.) do que um processador de 8 bits. Mas o mais importante é que, na época, não havia processadores de braço DIP, e eles deveriam ser usados ​​e montáveis ​​por artistas e hackers, não necessariamente técnicos e engenheiros eletrônicos que se sentem confortáveis ​​com um TQFP de 48 pinos.

A razão pela qual o AVR foi escolhido em relação ao PIC é que o PIC realmente não possui um compilador C gratuito amplamente utilizado, de código aberto, entre outras coisas (a porta SDCC não está madura).

Eu vejo muito ARM na indústria (parece que todo fornecedor está colocando um em seus projetos) e fiquei imaginando por que não havia mais aceitação no mundo dos desenvolvedores do Arduino. Pensamentos?

Principalmente devido à facilidade de uso - complexidade, facilidade de solda, custo e o fato de que não há muita necessidade disso. Os desenvolvedores gostam da idéia de ter muita energia, mas no final do dia, quando tudo o que você precisa fazer é mover alguns servos e acender algumas luzes com uma FFT de baixo custo, um processador de 8 bits está ótimo.

Mesmo os ARMS de córtex de extremidade baixa que saem em pacotes de 28 pinos ainda são SOIC, não DIP.

Portanto, o AVR tinha todos os recursos certos:

  • Fácil de soldar
  • Fácil de obter via correio em todo o mundo
  • Compilador GCC C gratuito
  • Fácil de entender o processador e a configuração e uso periféricos
  • Barato
  • Onipresente - muitas pessoas e experiências em torno da família AVR

Em grande parte, isso ainda é verdade - eu não conheço um ARM em um formato DIP, e os adaptadores o tornam significativamente mais caro que o AVR. Na maioria das vezes, os fabricantes não pensam que um processador de 32 bits com DIP seja muito lucrativo.

Adam Davis
fonte
Existe uma, a hélice de paralaxe. Possui oito CPUs de 32 bits no chip e vem nos pacotes DIL, QFP e QFN.
Leon Heller
5
Isso é perfeito. AVR sobre PIC devido ao licenciamento e AVR sobre ARM devido à simplicidade do software e da cadeia de ferramentas e capacidade de solda. Para seus próprios projetos, isso pode não se aplicar. No entanto, se você deseja desenvolver um ARM-duino, dê uma olhada nos outros projetos semelhantes. Eles não entendem como o AVR. Isso também pode ser devido ao ambiente de desenvolvimento do Arduino.
21710 Kevin Vermeer
Quais ferramentas do AVR32 você está usando - eu uso o IAR no AVR32 e no MSP e achei esse ambiente altamente capaz. O custo não é um problema em um ambiente profissional - equivalente a menos do que o custo de empregar um engenheiro por uma semana.
uɐɪ
Essa alegação sobre ferramentas pode ser superada - o Arduino usa o gcc, que também possui uma porta AVR32 disponível.
Chris Stratton
11
O NXP agora possui alguns ARMs do Cortex-M0 em um pacote DIP. Penso na família LPC11xx. Imagino que o mercado-alvo deles seja extremamente barato, de baixa qualidade e PCB de um lado, em eletrodomésticos.
Marko
16

Já que você parece estar pesquisando opiniões, aqui estão meus US $ 0,02. Se eu estou trabalhando em um ARM ou AVR importa (e, portanto, eu me importo), principalmente com base no que estou tentando fazer. Há casos de uso em que um AVR faz sentido e outros quando um ARM faz. Em geral, também existe uma troca entre, digamos, AVR e PIC.

Primeiro, embora eu provavelmente tenha problemas por dizer isso, o "forte contingente da família Arduino" é uma minoria vocal. A maioria dos usuários de arduino que encontrei são do tipo que prefere tratar seu hardware da mesma maneira que cria um script python para fazer algo divertido, geralmente com um nível mais baixo de compreensão dos meandros envolvidos do que eles teria quando faria "from numpy import foo". Embora exista algum mérito na maneira de fazer as coisas no Arduino, também há muito espaço para críticas.

Eu acho que vale a pena olhar para os AVRs, além do ecossistema do Arduino. O contingente do Arduino também se beneficiou bastante das razões que tornaram o AVR um padrão defacto para coisas amadores - um manto que vem substituindo cada vez mais o PIC, mesmo antes de o arduino aparecer. Os concorrentes diretos do AVR seriam o PIC e, até certo ponto, o MSP430, que está ganhando força devido em grande parte ao forte impulso de marketing da TI combinado com suas ferramentas de subsídio.

Ecossistema

Como já foi mencionado em outras respostas, o AVR é ​​a única família que possui uma maneira limpa e padronizada de ir do zero ao olá mundo usando ferramentas gratuitas. A porta avr-gcc, as peças que compõem a cadeia de ferramentas winavr, muitos esquemas de programadores com complexidade e recursos variados, mas ainda vinculados pela autoridade derivada de serem suportados pelo avrdude, tornam muito mais fácil do que lidar com a implementação da cadeia de ferramentas.

O ecossistema do PIC é um pesadelo, com vários compiladores, ferramentas de programação, montadores, o que você tem. Muitos deles não são compatíveis entre si. A maioria deles é paga. Nem todos eles são bons. Mais importante, não há um padrão defacto. As alternativas de código aberto / gratuito (digamos, SDCC) deixam muito a desejar, mas mais do que isso não conseguiu obter um status de padrão defacto como o avr-gcc e a empresa. Mesmo com a cadeia de ferramentas de software elaborada, você teria pelo menos que investir em algum programador. O PICkit pode custar apenas US $ 20, mais ou menos, mas quando você precisa descobrir como comprá-lo on-line (cartões de crédito, remessa internacional, aborrecimentos cambiais), pode ser um rompimento de acordos para entusiastas. Não há um bom,

O MSP430 é marginalmente melhor, principalmente por ser mais novo (pelo menos em termos de popularidade) - há muito menos barulho para enfrentar. A TI envia amostras de IC para você com eficiência que nunca vi em nenhum outro lugar. O mspgcc está em boa forma e existe até um software de depuração de código aberto que não é difícil de encontrar ou configurar. O problema, porém, é que não é tão amigável para os entusiastas quanto o AVR. Você ainda tem o problema do programador, que é mais caro do que o necessário para comprar um PIC. A operação de fornecimento de 3,3v coloca uma barreira percebida para as pessoas que estão acostumadas ao 5v Logic. E não é escalável no DIP - existem os mais baratos disponíveis, mas não quando você alcança os chips mais detalhados.

Fácil de usar

DIP vs SMD, eu acho, é uma distinção mais importante do que costuma ser creditada. Um IC DIP pode ser usado na tábua de pão, placas de uso geral, como são chamadas onde você mora e assim por diante. Um IC SMD requer necessariamente uma execução de fabricação ou compra de placas adaptadoras que nem sempre são fáceis de encontrar no tamanho ou formato que você deseja.

A qualidade da folha de dados, as notas de aplicação e a legibilidade delas também fazem a diferença. Atmel parece fazer um trabalho marginalmente melhor nisso. Obviamente, essa é uma avaliação altamente subjetiva.

Os AVRs podem usar um RC interno, enquanto os PICs geralmente não. Eles exigem um cristal, o que o torna um pouco arriscado quando combinado com uma escassez de confiança.

Os AVRs também pareciam mais amigáveis ​​com a programação no sistema em comparação com os PICs há alguns anos atrás, embora eu pudesse facilmente estar errado lá.

AVR vs ARM

Sua pergunta, no entanto, tinha a ver com AVR vs ARM. Como eu disse no início, AVR e ARM ocupam diferentes espaços no espectro. Se você tem algo que pode fazer com um AVR, por que deseja fazê-lo com um ARM? Os ARMs são mais caros, exigem maior número de peças, consomem mais energia, resultam em códigos mais complicados, precisam de processos de fabricação mais caros. Soldar um TQFP de 100 pinos é mais caro do que soldar um DIP / SOIC de 40 pinos, dependendo de como você mede o custo. Isso pode não ser válido se você estiver produzindo grandes volumes e usando técnicas de produção compatíveis com isso, mas se estiver fazendo isso, o diferencial de preço será ainda mais atraente para a solução mais barata.

Como um controlador obrigatório para hackers em geral ou o que você tem, eu diria que o AVR é ​​mais fácil de usar porque: - Mais padronizado de uma perspectiva amadora, mais código posso reutilizar da Internet, porque não há muitos variações do compilador e variações entre nomes de registro e API entre membros da família. (Tente portar o código LPC ARM para o hardware ATMEL ARM, você verá o que eu quero dizer) - O código se torna inerentemente mais complicado (realmente.) - A cadeia de ferramentas exige trabalho adicional para configurar. - Torna a interface um pouco mais fácil. Em geral, os ARMs reduzem a lógica 3v3 ou 1v8, tornando a interface com outros brinquedos um pouco problemática. - Mais barato - Conseguir um chip ARM na loja de hardware local não é uma opção para mim onde moro, é um AVR.

Chintalagiri Shashank
fonte
11
Não lembro de nenhum PIC, além de algumas partes OTP em que os bits de fusível foram pré-programados como parte dos testes de fábrica (a única maneira de confirmar se o modo LP, XT ou HS funcionava era configurar o chip para esse modo) isso exigiu um cristal. Alguns exigiram um resistor externo e uma tampa para usar o modo RC, e tinham especificações bastante aproximadas sobre a frequência que produziria, mas não recordo nenhum PIC sem uma opção de design para RC interno ou externo. Eu esqueci alguma?
Supercat
Na realidade, o custo do ARM / AVR é ​​bastante próximo de uma lavagem para recursos comparáveis. E os pacotes que seriam usados ​​em uma configuração de produção não são necessariamente tão diferentes, pois provavelmente seriam as variantes QFP ou QFN de qualquer um. Os circuitos de suporte necessários também são bastante comparáveis.
Chris Stratton
@ Chris: Quando você considera os recursos que cada chip fornece, eu diria que o ARM sairá mais barato quase sempre. Dito isto, o ponto é que, nas situações em que o AVR faz sentido em um ambiente de produção, é onde você não precisa da potência e / ou dos sinos e assobios que um ARM traz para a mesa. Quando ponderado com os recursos utilizados em vez dos recursos disponíveis, o AVR sai mais barato. Eu não acho que o circuito de suporte seja comparável (1 capacitor de tântalo contra 4 e outros similares em espiral). O ARM não é um animal caro, tanto quanto pode ser um exagero.
Chintalagiri Shashank
@ supercat: Talvez. Eu teria que verificar. Isso nunca me pareceu óbvio nas poucas vezes em que olhei para ele. Eu sei que pelo menos algumas dsPICs podem voltar para internas, no entanto, se você as configurar corretamente, mas mesmo isso exigiu um pouco de adivinhação e brincadeiras para descobrir. As folhas de dados do microchip deixam muito a desejar, IMO, mas, novamente, depende de qual mercado você está olhando.
Chintalagiri Shashank
@ChintalagiriShashank - ignorando os outros periféricos e apenas olhando para os tamanhos de flash e ram, existem ofertas de ARM que são bastante competitivas com, por exemplo, o ATMEGA328p. E não se distraia com as tampas de derivação. Por um lado, o tântalo pode fazer sentido como um filtro de suprimento, mas as tampas de desvio reais são reservatórios locais de menor valor para os requisitos de comutação de alta frequência e, portanto, podem ser cerâmicas SMT baratas. Além disso, o que impulsiona a necessidade é o relógio e a frequência de comutação de E / S - a uma taxa de clock comparável, o ARM não precisará de todos os limites de desvio recomendados.
Chris Stratton
12

Parte do motivo do grande interesse da comunidade no Arduino é a padronização física. Por mais estranho que seja o layout físico, ao incluir uma opção de expansão padronizada, os desenvolvedores do Arduino permitiram que as pessoas apresentassem suas próprias soluções. Se você deseja substituir a placa base do Arduino por outra placa que use um microcontrolador diferente, você pode. IIRC, alguém já construiu uma placa baseada em PIC que usa o fator de forma do Arduino. (O quadro PIC Ardunio não possui o mesmo fator de forma, mas é semelhante.)

Outra razão para o sucesso do Arduino está na sua abertura - a maioria dos microcontroladores baseados em PIC foram fechados; Eles usavam implementações de hardware proprietárias; portanto, se você quisesse redesenhar a placa para se ajustar melhor a um espaço específico, não teria sorte. Eles usavam firmware personalizado e ferramentas de desenvolvimento proprietárias, para que, se você tivesse bugs ou desejasse expandir os recursos, não tivesse sorte. Com o Arduino, todas as peças do quebra-cabeça estão abertas: você pode comprar peças em qualquer lugar, reorganizá-las conforme necessário, melhorar ou modificar o firmware E as ferramentas de desenvolvimento. Você pode começar de maneira simples com o Arduino IDE, mas ainda pode mudar para C ou Assembly sempre que precisar.

Pessoalmente, eu gosto do Arduino porque ele faz muitas coisas "corretas": não é muito caro, não está preso a ferramentas proprietárias, é fácil para começar, possui muita capacidade e possui uma grande comunidade de usuários , que continua a se expandir e fazer coisas legais.

Craig Trader
fonte
11
Você listou razões muito boas para os amadores de microcontroladores como o Arduino, mas a pergunta era sobre ARM vs AVR. O Arduino foi mencionado devido à sua decisão de selecionar a série AVR de MCUs para sua implementação. Acho que algumas respostas mais relevantes estão abaixo da sua postagem; por exemplo, o fato de o Atmel suportar sua série AVR com um compilador C. No entanto, boas informações para alguém não familiarizado com o Arduino.
Ozmo
7

Uma grande vantagem para os ATmel uCs é que existe um compilador gratuito disponível para Linux, PC e Mac. Acrescente a isso uma GUI simples de plataforma cruzada e você terá um sistema de desenvolvimento gratuito que roda em todas as plataformas.

O custo é um fator importante para os conselhos de entusiastas. Como você deseja ter um preço inicial na faixa de US $ 30, você precisa ter um custo de uC que não passa de dois dólares.

A ARM seria uma excelente candidata para os conselhos mais avançados. Muitas empresas licenciam o núcleo do ARM e adicionam periféricos. Eu acredito que existem compiladores gratuitos para Linux, PC e MAC.

Eu realmente gosto do Freescale Coldfire para placas de ponta. Eu trabalhei em uma placa para equipamento de teste que usava um 5206e. Adicionamos alguns DRAM e conversores A / D e D / A de alta precisão. Era uma solução econômica. Não comparei recentemente o Coldfire à ampla variedade de braços.

Alguns dos Freescale uCs de 8 bits são bons, mas não tenho certeza se eles têm ferramentas gratuitas.

jluciani
fonte
4
Obrigado pelo comentário útil, mas as 8 linhas de 'assinatura' são um pouco extremas, esses sites baseados em stackoverflow tendem a menosprezar a publicidade de seus próprios sites em suas respostas.
Davr
5
@jluciani, se você quiser anunciar seus outros sites, coloque os links no seu perfil, não nas suas respostas. Afinal, o seu blog não é a resposta para esta pergunta ...
Craig Trader
5

Eu concordo com o pacote dip, discordo que os braços são mais difíceis de configurar, mas os lpcs são, mas eles não são a única criança no bloco de braço (atmel propriamente dito). Pelo que me lembro e experimentei, o Atmel foi e talvez ainda seja apenas mais amigável ao desenvolvedor. A borboleta do AVR os ajudou muito a obter mais usuários para sua base de usuários feliz e de bom tamanho. O PIC foi doloroso de várias maneiras, as ferramentas avr estavam lá, a programação era fácil e não lhe custou muito mais do que alguns fios e um conector do radio shack. As ferramentas estão lá e são gratuitas, mas não tão fáceis quanto o mainline gcc, onde você encontra as soluções de braço e polegar. Muito antes de o arduino ser lançado, o AVR era o chip preferido para projetos de hobby.

Nada pode competir com a ARM no momento. Para qualquer outro processador em que você toca em um dia, você toca em alguns ARMs no mínimo. Para alguns, quase tudo o que você toca usa um ARM. É um ajuste natural como o matador de 8 bits, pode obter um desempenho muito melhor do que um 8 bits para o mesmo tamanho, preço, etc. As ferramentas são muito melhores, o conjunto de instruções é muito mais limpo do que a maioria de seus concorrentes, portanto, o mesmo código é executado. muito mais rápido etc. Como qualquer pessoa e seu irmão podem incorporar um ARM e ele não está trancado em uma empresa como pic, avr, msp430, há uma ampla variedade de soluções e várias maneiras diferentes de lidar com as misturas rom / ram do microcontrolador e a tabela de vetores de interrupção. Infelizmente, a solução mais popular é a mais dolorosa. Tente um sam7 ou algo parecido ou um stellaris.

Nem sempre é o processador que está com o problema, alguns chips conhecem problemas, outros têm outros problemas conhecidos. alguns podem não oferecer um pino io de coletor aberto com um puxão fraco e você teria que colocar o hardware fora do chip para fazer interface com alguma coisa, enquanto outro pode ter o disponível em um ou em todos os pinos. Eu recomendo fazer a amostragem do campo, tentando as diferentes empresas e soluções para que, quando você quiser pouca energia, possa usar facilmente um msp430, deseje poder de processamento em um pequeno chip que você usa com braço ou se você deseja criar um projeto aberto que você espera outros irão construir na garagem deles, você o baseará em um arduino, se puder.

O ponto principal da sua pergunta é que realmente depende do seu aplicativo e de como você o escreve, do desempenho e dos recursos em que está interessado. Da mesma forma que o gcc ou o firefox serão executados em muitas plataformas e processadores diferentes, você certamente pode escreva seu aplicativo C para rodar em uma ampla variedade de microcontroladores ... SE... você tem uma camada de abstração específica do microcontrolador, que tem um custo. se os microcontroladores tiverem recursos semelhantes e os recursos necessários, planeje com antecedência e incorpore-os. Se a próxima plataforma tiver memória / recursos suficientes. Você está mais interessado em portabilidade do que em desempenho, etc. Provavelmente, você precisa planejar isso com antecedência. ou pelo menos no primeiro comutador de A para B você reprojeta o software, se / quando houver um terceiro comutador de B para C, será menos doloroso.

old_timer
fonte
Nada pode competir com a ARM no momento. <- Na indústria. No mundo hobby, o AVR ainda é muito, muito forte e será por muito tempo.
21710 Kevin Vermeer
Concordo absolutamente que um mundo avr é uma loucura popular, outro mundo que é aquele onde os produtos que compramos são usados, onde está o dinheiro, é outra coisa. Então, para se divertir em casa, aprenda um, para o seu trabalho diário, aprenda o outro e comece a jogar o dia todo e a noite toda.
old_timer
4

Eu sei que você disse "além do custo", mas realmente isso é a coisa mais importante para os entusiastas. Você não precisa de mais de um UART ou mais de um SPI no que é uma plataforma genérica e barata. Depois de começar a precisar de velocidades> 20 mhz, você realmente deve estar olhando para uma configuração personalizada (ymmv, é claro)

penjuin
fonte
3

Alguns pequenos pontos não mencionados nos outros comentários:

  • Um Arduino é destinado a projetos de E / S de pequena escala, adicionando uma pequena quantidade de inteligência a um circuito. Eles geralmente são dispositivos de tempo real de thread único, em que um ARM seria muito desperdiçado. É claro que existem muitas opções para placas ARM, mas o caso de uso é normalmente diferente - normalmente elas são inicializadas em um sistema operacional em grande escala.

  • Ao direcionar esse caso de uso em pequena escala, tudo fica mais fácil - contagem de pinos, componentes de suporte, consumo de energia etc.

Dito isto, para o caso de uso de destino do Arduino, não é como se você estivesse fazendo uma favela. Um processador de 16 MHz é muito complicado para o seu despertador com chaser de LED integrado (ou o que seja :)

David Sainty
fonte
2

O Arduino está disponível em outros processadores. Confira o ChipKit da Microchip, por exemplo. Isso usa um PIC 32.

Olin Lathrop
fonte
Desculpe Olin, o título foi uma tentativa incorreta minha de editar a pergunta, feita a partir de seu corpo. Deve estar mais correto agora.
Clabacchio
1

Segunda tentativa (o título da postagem original e a pergunta de +3 anos atrás foram alterados desde a resposta original):

Frango e ovo, mas especialmente nos últimos anos (a ARM lançou a arquitetura Cortex-M de 2007), os MCUs de 32 bits cresceram em popularidade e os fornecedores foram melhores em fornecer acesso mais rápido e fácil à comunidade de EE ao projetar em> 8- micros de bit (melhores ferramentas de sw, ferramentas gratuitas, mais exemplos ...).

Como a Atmel, juntamente com outras 100, oferece dispositivos Cortex-M e atualizou sua cadeia de ferramentas para dar suporte ao AVR para ARM, além da relação de longa data, é fornecido o caminho de atualização do Arduino (?). Mas, alternativas surgem e parecem envolver tentativas alternativas para ganhar sua parcela do bolo "hobbyista": por exemplo, mbed pelo NXP / ARM e, recentemente, "CoAction Hero": Placa ARM Cortex-M3 de código-fonte aberto de 32 bits no KickStarter .

Pensamento final, 3 anos após a pergunta inicial: quando todos os fornecedores oferecem núcleos Cortex-M de 32 bits - o Arduino poderia agora se tornar não-Atmel?

Resposta original: Alf-Egil Bogen, um dos co-fundadores da Atmel AVR, analisa alguns dos antecedentes da mudança da indústria dos núcleos ARM de 8 bits para 32 bits em seu blog de vídeo aqui http://blog.energymicro. com / 2013/04/24 / avr2arm / .

EFM32
fonte