Por que o Arduino está usando AVR? Eu 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 um ARM ou uma arquitetura Freescale além do custo, certo? Contanto que haja memória onboard, achei que poderia haver uma migração fácil para essas partes.
Vejo muito ARM na indústria (parece que todo fornecedor está empurrando um em seus projetos) e me pergunto por que não havia mais aceitação no mundo dos desenvolvedores do Arduino.
Comentários
- Quem é o seu mercado? Se você ‘ se estiver tentando vender algo grande na indústria, você ‘ vai querer um ARM, porque se a Atmel falir, você ‘ não sobrou nada se você ‘ está usando o AVR. Com o ARM, há ‘ muitos outros fornecedores que oferecem quase em substituições. A maior complexidade do ARM é menos problemática para bons engenheiros do que para amadores que não ‘ não sabem o básico. Se você ‘ vendendo para amadores, a curva de aprendizado será muito íngreme, o poder do processador não será ‘ usado, e SMT será uma parede de tijolos imaginária. Com quem você está preocupado – clientes amadores ou empregadores em potencial? Pls. esclareça.
- Não estou tentando ser ofensivo, mas a pergunta implora para ser feita. A Atmel tem mais de 25 anos, tendo um mercado de muito sucesso além da ARM, AVR em si é uma plataforma de muito sucesso. Quais são as chances de uma empresa desse tipo falir. Isso soa como dizer: ” Não ‘ não use o Windows, e se o MicroSoft cair? ”
- Eu concordo com seus outros dois pontos, ou seja, 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.
- Não existe ‘ um Arduino Due com um SAM3XE (ARM 32 bits) uC nele? Porque, eu tenho um na minha mão agora …
- Gostaria de observar que ” hoje em dia ” na verdade, existem placas baseadas em ARM que podem ser programadas usando Arduino (bibliotecas e IDE). Teensy 3.2 é um excelente exemplo disso. sparkfun.com/products/13736
Resposta
Alguém se importa com o que você está desenvolvendo?
Sim e não. Eu tenho desenvolvido no 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, PIC32.
Os clientes não se importam, exceto pelo custo e manutenção, e no caso de um sistema semelhante ao do Arduino, os programadores não se importariam porque o ambiente do Arduino e o ciclo de desenvolvimento são muito melhores do que a configuração atual do AVR32.
Eu só me pergunto, porque existe um grande contingente de AVRs na família Arduino. Eu 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 um ARM ou uma arquitetura Freescale além do custo, certo? Contanto que haja memória integrada, achei que poderia haver uma migração fácil para essas partes.
Não há razão para outro processador não poderia ser usado, mas há um bom motivo para eles terem escolhido um dispositivo de 8 bits de baixa capacidade em vez de um dispositivo ARM, MIPS, PowerPC, etc. p> Se você examinou a configuração para os braços mais simples, é uma ordem de magnitude mais complexa (mapeamento de memória, cache, etc) do que um processador de 8 bits. Mas ainda mais importante – na época não havia processadores DIP arm, e eles deveriam ser usados e construídos por artistas e hackers, não necessariamente técnicos e engenheiros eletrônicos que se sentem confortáveis com até mesmo um TQFP de 48 pinos.
A razão pela qual o AVR foi escolhido em vez do PIC é que o PIC não tem realmente um compilador C livre amplamente usado, 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á empurrando um em seus designs) e estava se perguntando por que não havia mais aceitação do desenvolvedor Arduino mundo. Pensamentos?
Principalmente devido à facilidade de uso – complexidade, facilidade de soldar, custo e o fato de haver “não é muito necessário. Os desenvolvedores gostam da ideia de ter muita potência, mas no final do dia, quando tudo o que você precisa fazer é mover alguns servos e acender algumas luzes com um FFT de baixo custo o processador está ótimo.
Mesmo os ARMS do córtex de gama 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 por correspondência em todo o mundo
- Compilador GCC C gratuito
- Fácil de entender o processador e configuração e uso de periféricos
- Barato
- Onipresente – muitas pessoas e experiência em torno da família AVR
Em grande parte, isso ainda é verdade – eu não conheço um ARM em formato dip, e os adaptadores o tornam significativamente mais caro do que o AVR. Na maioria das vezes, os fabricantes não ” Não acho que um processador DIP de 32 bits seja muito lucrativo.
Comentários
- Existe um, o Parallax Propeller. Ele tem oito CPUs de 32 bits no chip e vem em pacotes DIL, QFP e QFN.
- Este é perfeito. AVR sobre PIC devido ao licenciamento e AVR sobre ARM devido à simplicidade do software e do conjunto de ferramentas e capacidade de soldagem. Para seus próprios projetos, isso pode não se aplicar. No entanto, se você deseja desenvolver um ARM-duino, dê uma olhada em outros projetos semelhantes. Eles não ‘ não pegam como o AVR. Isso também pode ser devido ao ambiente de desenvolvimento do Arduino.
- Quais ferramentas AVR32 você está usando – eu uso IAR no AVR32 e no MSP e considero este 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.
- Essa reivindicação sobre ferramentas pode ser superada – o Arduino usa gcc, que também tem uma porta AVR32 disponível .
- NXP agora tem alguns ARMs Cortex-M0 em um pacote DIP. Acho que é da família LPC11xx. Imagino que seu mercado-alvo seja extremamente barato, de baixa qualidade, PCB de um lado, em eletrodomésticos.
Resposta
Já que você parece estar fazendo uma pesquisa de opinião, aqui está meu $ 0,02. Se 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 há aqueles em que um ARM faz. Em geral, também há uma troca que se faz entre, digamos, AVR e PIC.
Em primeiro lugar, enquanto Provavelmente terei problemas por dizer isso, o ” forte contingente na família Arduino ” é uma espécie de minoria vocal. arduino folk (usuários) que eu descobri são do tipo que prefere tratar seu hardware da mesma forma que faria um script Python para fazer algo divertido, geralmente com um nível de compreensão das complexidades envolvidas mais baixo do que eles fariam têm quando “d fazem ” de numpy i mport foo “. Embora haja algum mérito na maneira do Arduino de fazer as coisas, também há muito espaço para críticas.
Acho que vale a pena olhar para os AVRs, além do ecossistema do Arduino. O contingente do Arduino também se beneficiou muito das razões que tornaram o AVR um padrão de fato para atividades amadoras – um manto que vem assumindo cada vez mais do PIC, mesmo antes do arduino aparecer. Os concorrentes diretos do AVR seriam os PIC e até certo ponto o MSP430, que está ganhando força em grande parte devido ao forte impulso de marketing da TI combinado com suas ferramentas de subsídio.
Ecossistema
Como foi mencionado em outras respostas, o AVR é a única família que tem uma maneira limpa e padronizada de ir do zero ao hello world usando ferramentas gratuitas. A porta avr-gcc, as peças que compõem o conjunto de ferramentas winavr, muitos esquemas de programador com complexidade e recursos variados, mas ainda vinculados pela autoridade derivada de ser suportado pela avrdude torna muito mais fácil do que lidar com o conjunto de ferramentas.
O ecossistema do PIC é um pesadelo, com qualquer número de compiladores, ferramentas de programação, montadores, o que ter você. Muitos deles não são compatíveis uns com os outros. A maioria deles é paga. Nem todos eles são bons. Mais importante, não existe um padrão de fato. As alternativas de código aberto / livre (digamos, SDCC) deixam muito a desejar, mas mais do que isso, não conseguiram adquirir um status de padrão de fato como o avr-gcc e a empresa. Mesmo com a cadeia de ferramentas do software resolvida, você teria, no mínimo, que investir em algum tipo de programador. O PICkit pode custar apenas 20 $ ou mais, mas quando você tem que descobrir como comprá-lo online (cartões de crédito, remessas internacionais, aborrecimentos forex), pode ser um quebra-negócio para amadores. Não existe um circuito de programação bom e confiável com a padronização necessária para dar a um novato a coragem de investir esforços e recursos para ir do ponto de encontrar uma fonte para o IC até o ponto em que Hello World está programado e o LED está piscando.
O MSP430 é ligeiramente melhor, principalmente porque é mais recente (pelo menos em termos de popularidade) – há muito menos ruído para lidar. A TI envia amostras de IC para você com uma eficiência que não vi em nenhum outro lugar.mspgcc está em boa forma, e há até um software de depuração de código aberto que não é difícil de encontrar ou configurar. O problema, porém, é que ele não é tão amigável para os amadores quanto o AVR. Você ainda tem o problema do Programador, que é mais caro do que o que você precisaria comprar para um PIC. A operação de fornecimento de 3,3v coloca uma barreira percebida para pessoas que estão acostumadas com a lógica de 5v. E não escala em DIP – Existem opções de baixo custo disponíveis, mas não quando você atinge os chips mais elaborados.
Facilidade de uso
DIP vs SMD, eu acho , é uma distinção mais importante do que muitas vezes se acredita ser. Um DIP IC pode ser usado em placas de ensaio, placas de uso geral, como quer que sejam chamadas onde você mora e assim por diante. Um SMD IC 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 forma que você deseja.
Qualidade da folha de dados, notas de aplicação e a legibilidade delas, também, faz a diferença. A Atmel parece fazer um trabalho um pouco melhor nisso. Claro, essa é uma avaliação altamente subjetiva.
Os AVRs podem usar um RC interno, enquanto os PICs geralmente não. Eles requerem um cristal, o que o torna um pouco perigoso quando combinado com falta de confiança.
Os AVRs também pareciam mais amigáveis com a programação do sistema em comparação com os PICs de alguns anos atrás, embora eu pudesse facilmente estar errado nisso.
AVR vs ARM
Sua pergunta, porém, tinha a ver com AVR vs ARM. Como eu disse no início, AVR e ARM ocupam espaços diferentes no espectro. Se você tem algo que pode fazer com um AVR, então por que você quer fazer isso com um ARM? ARM “s são mais caros, requerem contagens de peças maiores, consomem mais energia, criam 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 custo. Isso pode não se manter se você estiver produzindo em grandes volumes e usando técnicas de produção compatíveis com isso, mas se você estiver fazendo isso, o diferencial de preço se tornará ainda mais atraente para escolher a solução mais barata.
Como controlador de uso geral para hackers em casa ou o que quer que seja, eu diria que AVR é mais fácil de usar porque:
- Mais padronizado do ponto de vista de um amador, mais código que posso reutilizar da Internet porque não há tantas variações de 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 quero dizer)
- O código torna-se inerentemente mais complicado (torna-se. Realmente).
- O conjunto de ferramentas es trabalho adicional para configurar.
- Torna a interface um pouco mais fácil. ARMs geralmente colocam você no nível 3v3 ou 1v8 Logic, tornando a interface com outros brinquedos um pouco problemática.
- Mais barato
- Conseguir um chip ARM em uma loja de ferragens local não é uma opção para mim. onde eu moro, obter um AVR é.
Comentários
- Eu não ‘ Lembre-se de quaisquer PICs, além de algumas partes OTP onde os bits de fusível foram pré-programados como parte do teste de fábrica (a única maneira de confirmar que o modo LP, XT ou HS funcionou era configurar o chip para esse modo) que exigia um cristal. Alguns exigiam um resistor externo e tampa para usar o modo RC e tinham especificações bastante precisas sobre a frequência que produziria, mas eu não ‘ não recordo nenhum PIC sem uma opção de design para RC interno ou externo. Esqueci algum?
- Na verdade, o custo de ARM / AVR é muito próximo de uma lavagem para recursos comparáveis. E os pacotes que seriam usados em um ambiente de produção são ‘ t necessariamente tão diferente, uma vez que provavelmente seriam as variantes QFP ou QFN de qualquer um. Os circuitos de suporte necessários também são bastante comparáveis.
- @Chris: Quando você leva em consideração os recursos que cada chip fornece, eu ‘ diria que o ARM sairá mais barato quase toda vez. Dito isso, o ponto é que em situações onde o AVR faz sentido em um ambiente de produção, você não ‘ t precisa da potência e / ou dos sinos e assobios que um ARM traz para a mesa. Quando ponderado com recursos utilizados em vez de recursos disponíveis, o AVR sai mais barato. Eu não ‘ não acho que o circuito de suporte seja comparável (1 capacitor de tântalo contra 4, e outro espiral semelhante). ARM não é ‘ t um animal caro, tanto quanto pode ser um exagero.
- @supercat: Talvez. Eu ‘ d teria que verificar. Nunca me pareceu óbvio nas poucas vezes que olhei para ele. Eu sei que pelo menos alguns dsPICs podem voltar para internos, no entanto, se você configurá-los corretamente, mas mesmo isso exigiu um pouco de suposições e brincadeiras para descobrir. As planilhas de dados do microchip deixam muito a desejar, IMO, mas, novamente, depende de qual mercado você ‘ está olhando.
- @ChintalagiriShashank – ignorando os outros periféricos e apenas olhando para os tamanhos de memória flash & existem ofertas de ARM que são bastante competitivas, por exemplo, o ATMEGA328p. E não ‘ não se distraia muito com os limites de desvio. Por um lado, o tântalo pode fazer sentido como um filtro de alimentação, mas as tampas de desvio reais são reservatórios locais de valor inferior 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 clock 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.
Resposta
O desenvolvimento do braço está chegando – dê uma olhada nos seguintes projetos.
E agora um ARM em um pacote DIP.
Resposta
Parte da razão para o grande o interesse da comunidade no Arduino é a padronização física. Por mais complicado 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ê quiser substituir a placa Arduino base por outra placa que usa um microcontrolador diferente, você pode. IIRC, alguém já construiu uma placa baseada em PIC que usa o fator de forma Arduino. (A placa PIC Ardunio não tem o mesmo formato, mas é semelhante.)
Outra razão para o sucesso do O Arduino está aberto – a maioria dos microcontroladores baseados em PIC foram fechados; eles usaram implementações de hardware proprietário, então se você quisesse redesenhar a placa para caber melhor em um espaço específico, você estava sem sorte. Eles usaram firmware personalizado e ferramentas de desenvolvimento proprietárias, de modo que se você tivesse bugs ou quisesse expandir os recursos, não teria 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 precisar, melhorar ou modifique o firmware E as ferramentas de desenvolvimento. Você pode começar de forma simples com o IDE do Arduino, mas ainda pode mudar para C ou Assembly sempre que precisar.
Pessoalmente, gosto do Arduino porque ele recebe muito coisas “perfeitas”: não é muito caro, não está preso a ferramentas proprietárias, é fácil de começar, tem muito de capacidade e tem uma grande comunidade de usuários, que continua a se expandir e a fazer coisas legais.
Comentários
- Você listou motivos muito bons para o microcontrolador amadores como o Arduino, mas a questão 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 de sua postagem; por exemplo, o fato de que a Atmel suporta sua série AVR com um compilador C. Boas informações, no entanto, para alguém não familiarizado com o Arduino.
Resposta
Uma grande vantagem para os uCs ATmel é que existe um compilador gratuito disponível para Linux, PC e Mac. Adicione a isso uma interface simples de plataforma cruzada e você terá um sistema de desenvolvimento gratuito que roda em todas as plataformas.
O custo é um fator importante para as placas amadoras. Já que você deseja ter um preço inicial na faixa de $ 30, você precisa ter um custo de uC que não seja mais do que alguns dólares.
ARM seria um excelente candidato para placas de ponta. Muitas empresas licenciam o núcleo ARM e adicionam periféricos. Acredito que existam compiladores gratuitos para Linux, PC e MAC.
Eu realmente gosto do Freescale Coldfire para placas de ponta. Trabalhei em uma placa para equipamento de teste que usava um 5206e. Adicionamos alguns conversores DRAM e A / D e D / A de alta precisão. Foi uma solução econômica. Não comparei recentemente o Coldfire à grande variedade de ARM “s.
Alguns dos uCs Freescale de 8 bits são bons, mas não tenho certeza se eles têm ferramentas gratuitas.
Comentários
- Obrigado pelo comentário útil, mas as 8 linhas de ‘ assinatura ‘ é um pouco extremo, esses sites baseados em stackoverflow tendem a desprezar a publicidade de seus próprios sites em suas respostas.
- @jluciani, se você deseja anunciar seus outros sites, coloque os links em seu perfil , não em suas respostas. Afinal, seu blog não é a resposta para esta pergunta …
Resposta
Eu concordo com o pacote dip, discordo que os braços são mais difíceis de configurar, os lpcs são, mas eles não são a única criança no bloqueio de braço (o próprio atmel).Pelo que me lembro e experimentei, o Atmel era e talvez ainda seja apenas mais amigável para o desenvolvedor. A borboleta AVR ajudou muito a atrair mais usuários para sua base de usuários já de bom tamanho e feliz. O PIC era doloroso de várias maneiras, as ferramentas AVR estavam lá, a programação era uma brisa e não custava muito mais do que alguns fios e um conector do Radio Shack. As ferramentas estão lá e gratuitas, mas não tão fáceis quanto o gcc principal, onde você encontra as soluções de braço e polegar. Muito antes do arduino ser lançado, o AVR era o chip escolhido para projetos de hobby.
Nada pode competir com o ARM agora. Para cada outro processador que você toca em um dia, você toca no mínimo em alguns ARMs. Para alguns, quase tudo que você toca usa um ARM. É um ajuste natural, pois o matador de 8 bits pode obter um desempenho muito melhor do que um 8 bits para o mesmo tamanho, preço, etc. muito mais rápido, etc. Como qualquer pessoa e seu irmão podem incorporar um ARM e ele não está preso a uma empresa como a pic, avr, msp430, há uma grande variedade de soluções e muitas 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. Experimente um sam7 ou algo parecido ou um stellaris. Existe um armmite pro que é uma tentativa de fazer um plugin Arduino baseado em arm, ou algo parecido com isso e eu realmente gosto dessa placa.
Nem sempre o processador é o problema, alguns chips sabem podem problemas, alguns 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 algo, onde outro pode ter isso disponível em um ou todos os pinos. Eu recomendo fazer uma amostragem de campo, tentando as diferentes empresas e soluções para que quando você quiser baixo consumo de energia possa usar facilmente um msp430, queira poder de processamento em um pequeno chip que vai com o braço ou se quiser fazer um projeto aberto que você espera outros construirão em sua garagem, você o baseará em um arduino, se puder.
O ponto principal da sua pergunta é que realmente depende de seu aplicativo e de como você o escreve e do desempenho e recursos que você possui interessado. Da mesma forma que o gcc ou o firefox rodam em muitas plataformas e processadores diferentes, você certamente pode escrever 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 têm recursos semelhantes o suficiente e os recursos de que você precisa e você os planeja e incorpora. Se a próxima plataforma tiver memória / recursos suficientes. Você está mais interessado em portabilidade do que desempenho, etc. Provavelmente, você precisa planejar isso com antecedência. ou pelo menos na primeira troca de A para B você redesenha o software, se / quando houver uma terceira troca de B para C é menos doloroso.
Comentários
- Nada pode competir com o ARM agora. < – Na indústria. No mundo dos amadores, o AVR ainda é muito, muito forte e permanecerá por muito tempo.
- Concordo plenamente que um mundo avr é muito popular, outro mundo que passa a ser aquele onde os produtos que compramos um toque e um uso são, onde está o dinheiro, é outra coisa. Então, para se divertir em casa, aprenda um, para o seu trabalho diurno, aprenda o outro e comece a jogar o dia todo e a noite toda.
Resposta
Eu sei que você disse “diferente do custo”, mas realmente isso é o mais importante para os amadores. Você não precisa de mais de um UART ou de mais de um SPI no que pretende ser uma plataforma genérica e barata. Assim que começar a precisar de velocidades> 20 MHz, você realmente deve olhar para uma configuração personalizada (ymmv é claro)
Resposta
Alguns pequenos pontos não levantados 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 são tipicamente dispositivos de thread único, em tempo real, onde um ARM seria muito desperdiçado. Existem muitas opções para placas ARM, é claro , mas o caso de uso normalmente é diferente – normalmente eles inicializam em um sistema operacional de escala completa.
-
Ao direcionar este caso de uso de pequena escala, tudo fica mais fácil – contagem de pinos, suporte componentes, consumo de energia, etc.
Dito isso, para o caso de uso alvo do Arduino, não é como se você estivesse fazendo favela. Um processador de 16 MHz é muito trabalhoso para seu despertador com chaser de LED integrado (ou qualquer outro 🙂
Resposta
Arduino está disponível em outros processadores. Confira o ChipKit da Microchip, por exemplo. Isso usa um PIC 32.
Comentários
- Desculpe Olin, o título foi uma tentativa incorreta minha de editar a questão, feita a partir de seu corpo. Deve estar mais correto agora.
Resposta
Segunda tentativa (o título da postagem original e a pergunta de +3 anos atrás foi alterado desde a resposta original):
Frango e ovo, mas especialmente durante os últimos anos (2007 ARM lançou a arquitetura Cortex-M), MCUs de 32 bits cresceram em popularidade e os fornecedores foram melhores em fornecer acesso mais rápido e fácil para a comunidade EE ao projetar em micros de 8 bits (melhores ferramentas de sw, ferramentas gratuitas, mais exemplos …).
Como a Atmel, junto com outras 100, oferece o Cortex -M dispositivos também e atualizou seu conjunto de ferramentas para suportar AVR para ARM, além da relação de longa data, o caminho de atualização do Arduino é fornecido (?). Mas, alternativas surgem e parecem envolver tentativas alternativas de ganhar sua fatia do bolo “amador”: por exemplo, mbed por NXP / ARM e, recentemente, “CoAction Hero”,: Placa ARM Cortex-M3 de código 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 realmente se tornar não Atmel? greve> Resposta original: Alf-Egil Bogen, um dos cofundadores da Atmel AVR, analisa alguns dos antecedentes da mudança da indústria de núcleos ARM de 8 bits para 32 bits em seu blog de vídeo aqui http://blog.energymicro.com/2013/04/24/avr2arm/ .