Qual é a diferença entre o AVR e o ARM?
A principal diferença prática é que o AVR já está fora de seu auge, para ser substituído por ARM Cortex-M série praticamente em todos os lugares muito em breve (bem, "muito em breve" ~= "em 10-20 anos", não funciona mais rápido do que isso).
P>Agora a diferenças mais técnicas:
<- AVR existe tanto em 8-bit (com espaço de endereço de 16-bit) como em 32-bit, ARM apenas como 32-bit (e 64-bit mas isto não é realmente para embedded). Isto tem implicações para a programação (CPUs de 8 bits normalmente não podem pagar um modelo de memória totalmente plana, o que leva a complicações estranhas como mover todas as variáveis da ROM para a RAM no início do programa, rotineiramente realizado pelo tempo de execução do AVR8).
- power-wise, eu já vi até mesmo um AVR de 8 bits ser mais faminto por energia do que um equivalente ARM Cortex-M0 de 32 bits (isso é hertz-by-hertz, e se contarmos em ALU de 32 bits no Cortex, dependendo do que estamos refazendo, a diferença pode se tornar enorme); YMMV, mas o que é claro é que eles são pelo menos comparáveis. E se estivermos comparando o AVR32 com o ARM de 32 bits, um ARM comparável ganhará potência - quase com certeza.>li>ARM Cortex M0 (32 bits) pode ser encontrado por apenas 57 centavos (https://www.mouser.at/ProductDetail/NXP-Semiconductors/LPC804M101JDH24J?qs=sGAEpiMZZMve4%2fbfQkoj%252bCNct1C5BkdL6PcHsFDkwG4%3d); um AVR comparável (https://www.mouser.at/Semiconductors/Embedded-Processors-Controllers/_/N-6hpef?Keyword=avr&FS=True) custará 91 centavos (quase 2x mais), e terá apenas ALU de 8 bits em oposição a um de 32 bits no ARM. Faça a sua própria pesquisa de preços, mas ao contrário de muitas alegações, em termos de preço eles são pelo menos comparáveis (com o ARM Cortex M0 frequentemente ganhando sobre o AVR).
- compilar para o AVR requer o avr-gcc enquanto que para o ARM gcc (e alegadamente Clang) pode ser usado
- ARM Cortex-M0 é apenas o passo inferior em toda a escada do ARM Cortex M. Isso significa que para praticamente qualquer tarefa, existe um CPU ARM apropriado (enquanto o AVR pára em algo ao longo das linhas de 512K Flash/64K RAM por ~7EUR, que é bastante decente para embedded, mas ainda assim não há correspondência para o ARM Cortex-M7 que pode ser encontrado no wild @ até 2M Flash/1M RAM, que é por ~15 EUR - que é duas vezes mais caro, mas tem 16x mais RAM que o AVR mais alto(!!)).
- li> Um exemplo: ARM Cortex-M4F e Cortex-M7 têm uma FPU, então se você precisa de ponto flutuante a um ritmo decente, você ainda está com sorte (não com AVR)
- outro exemplo: ARM Cortex M3 e superior podem (e normalmente têm) ter uma unidade de proteção de memória.
- ARM Cortex-M é produzido por uma dúzia de empresas (incluindo monstros como STM, SiLabs, TI e NXP), enquanto AVR é uma tecnologia proprietária da Microchip/Atmel. BTW, mesmo Microchip não aposta tudo no AVR, produzindo também ARM.
Em resumo: as diferenças, se houver, são geralmente a favor do ARM; como resultado,
se começar praticamente qualquer novo desenvolvimento, eu escolheria claramente ARM Cortex M em vez de AVR; simplesmente não há necessidade de usar AVR (que costumava ser uma arquitetura muito agradável para o seu tempo BTW), em 2019+. Uma possível exceção: em tamanhos ultra pequenos (como <512 bytes de RAM), AVR8 ainda pode ser uma opção melhor em termos de potência para alguns casos de canto; esta hipótese ainda está para ser testada.