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.
Respostas:
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.
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).
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:
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.
fonte
O desenvolvimento do braço está chegando - dê uma olhada nos seguintes projetos.
folha de Carvalho
XDuino
Cortino
Illuminato
Família ARM PRO
E agora um ARM em um pacote DIP.
NXP LPC1114FN28
BASICchip
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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)
fonte
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 :)
fonte
O Arduino está disponível em outros processadores. Confira o ChipKit da Microchip, por exemplo. Isso usa um PIC 32.
fonte
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 / .fonte