Recentemente, comecei a trabalhar em uma pequena empresa que produz eletrônicos relacionados ao diagnóstico automotivo. Meu chefe, com mais de 50 anos, disse que estava usando 8051 derivados e eles estavam fazendo o trabalho. Eu procurei no Google para saber se o 8051 ainda é popular hoje. E no Quora, eu vi estes:
... é provavelmente a arquitetura MCU mais simples do mercado. Todo periférico parece a versão básica. Meus conceitos de temporizadores, relógio, UART etc. esclareceram muito! E então comecei a apreciar outras arquiteturas - porque realmente entendi a diferenciação.
... obviamente, não será usado por nenhuma indústria para desenvolver um produto devido à sua simplicidade ...
Mas por que? Até agora, pelo menos como estudante, eu costumava fazer muitas coisas sem mexer com a arquitetura. Felizmente codifiquei com C, usei periféricos LCD, conectados a outros ICs com protocolos diferentes (SPI, I2C etc.)
Por que eu deveria me preocupar com a arquitetura do meu microcontrolador, além de campos limitados de aplicativos em tempo real e de tempo crítico?
Respostas:
O 8051 e outros microcontroladores de baixo bit ainda estão em uso hoje?
Sim, quase todo lugar. Eles são pequenos e fáceis, existem muitos núcleos flutuando que você pode colocar em seu silício personalizado a baixo ou nenhum custo, há compiladores maduros. Isso tudo faz do 8051 ainda uma das arquiteturas principais mais populares entre os fabricantes de silício. Os núcleos ARM podem estar disponíveis em produtos mais diferentes, mas, novamente, quando você fala com alguém que está montando muitos dispositivos com uma restrição de preço muito rígida, é provável que ele prefira um núcleo 8051 mais barato / gratuito, se fizer o trabalho . Apenas para se opor à reivindicação Nitro2k01 de uso somente de nicho: a Mouser possui quase 800 modelos de microcontroladores 8051 em estoque ¹. E o fato de que eles começam, mesmo na Mouser, a preços abaixo de 40 ct pode ser uma indicação do motivo pelo qual são usados:
MCUs convencionais, de baixo desempenho e alto volume
portanto:
é um absurdo absoluto de alta qualidade. Especialmente porque você mesmo está fornecendo um contra-exemplo
Exatamente! Eles são usados em todos os lugares, são comprovados e baratos, e são suficientes ; nunca subestime a vantagem de ter uma solução para um problema comum em uma gaveta em algum lugar!
Obviamente, geralmente é possível que você precise de uma solução com, digamos, dois ônibus automotivos típicos, uma interface de alta velocidade para um ADC, alguns cronômetros de vigilância confiáveis, três unidades de PWM ... e então você começa a montar algo que consiste em quatro derivados 8051 e 8080. Essa é uma situação ruim e provavelmente poderia ser resolvida com muito mais rapidez e confiabilidade usando um MCU único, mais versátil e mais poderoso (por exemplo, um ARM). Mas que "nós temos conhecimento da empresa sobre como algo funciona com a tecnologia antiga" vs "somos à prova de futuro por ter a capacidade de executar em hardware moderno" é uma troca clássica de segurança de investimento. Se você encontrar um desses tipos de projetos, eu tentaria conversar com o chefe nesse contexto. Para pequenos trabalhos fáceis, sim, 8051.
Devo me preocupar em aprender sobre arquiteturas MCU em geral?
Sim! Eu acho que o @jfkowes explica isso muito bem. Mas, honestamente: é um pouco como perguntar "devo aprender como funciona o motor de combustão interna se eu quiser ser mecânico de automóveis"; a resposta é "você pode viver bem se puder executar os manuais de reparo o suficiente, mas provavelmente será um técnico muito melhor (deixe o engenheiro) se entender o que o seu hardware faz.
Assim que você enfrentar um problema que não pode ser pesquisado no Google, você seria uma tartaruga de costas se não entendesse o funcionamento de seu processador.
Devo me preocupar em aprender a arquitetura 8051?
Provavelmente não. No sentido de que sim, contanto que o custo não seja seu foco principal, você provavelmente poderá usar MCUs muito mais poderosos e versáteis, com base em núcleos ARM ou em outras arquiteturas mais modernas.
Por outro lado, o núcleo 8051 é tão fácil que eu realmente recomendo entender o que são suas unidades antes de tentar lidar com um núcleo MCU mais moderno e complexo. É um bom exemplo.
Portanto, se o 8051 não é o núcleo que estou procurando em um aplicativo de baixo volume, o que estou procurando?
Então, pessoalmente: escolha um ARM Cortex-M0, -M3, -M4F; eles são abundantes em todos os tipos de microcontroladores acessíveis, fáceis de programar (sim, suporte maduro a GCC, bibliotecas padrão do CMSIS, muitos SOs incorporados em execução neles) e geralmente vêm com interfaces de depuração padrão (o que é uma ótima vantagem).
Os ARMs são, de fora, geralmente relativamente fáceis de entender, pois você tipicamente mapeia todos os periféricos no espaço da memória, e é isso. Internamente, eles têm graus variados de sofisticação e otimizações de velocidade / robustez / tamanho, tornando-os não perfeitamente fáceis de entender em detalhes, mas acho que isso pode ser um pouco difícil de pedir, a menos que você tenha um design de CPU.
Se você gosta de design de CPU, acho que (essa é realmente uma crença pessoal baseada na observação de atividades de pesquisa e investimentos "prometidos" no setor) atualmente estamos observando o surgimento de um novo ISA importante - o RISC-V. Existem várias implementações dessa arquitetura para FPGAs ou silício, e pessoas como a Nvidia também parecem brincar com o fato de substituir seus multiprocessadores de fluxo por esses tipos de núcleos.
Nota: É muito provável que eu esteja perdendo mais da metade dos anos 8051 reais que a mouser possui (porque, ei, acabei de selecionar todos os MCUs cujo nome principal era * 80 * 5 *). As chances são de que, se você escolher microcontroladores aleatórios de 8 bits, é provável que seu núcleo seja pelo menos parcialmente derivado de 8051. Quero dizer, basta olhar para a "lista de [8051] fornecedores de derivativos" da wikipedia .
fonte
Em geral, aqui estão algumas boas razões para aprender (ou pelo menos ter um conhecimento prático) da arquitetura do microcontrolador que você está usando.
Advertência: no contexto de seu trabalho, empresa, aplicativo, hardware associado etc., pode haver razões pelas quais você não deve aprender a arquitetura específica que está usando no momento.
Depuração
Quando as bibliotecas de alto nível estão funcionando, talvez você não precise conhecer a arquitetura. Quando você começa a ter problemas, conhecer os componentes internos do seu microcontrolador pode ajudar muito a isolar e corrigir esses problemas rapidamente.
Código Eficiência e Simplicidade
Se você conhece a arquitetura, poderá mover a funcionalidade do software para o hardware. Isso tem o potencial de reduzir a carga do software e remover fontes de erros.
Redução de custos
O conhecimento da arquitetura pode reduzir o uso de memória de programas e dados e a carga do processador. Isso pode significar que você pode selecionar um microcontrolador com menos recursos, potencialmente reduzindo os custos.
Aumentando sua utilidade
Mesmo se você não usar o conhecimento no momento, discussões com colegas / fornecedores / engenheiros de suporte, etc. Por exemplo, algo que você conhece pode ajudar alguém com um problema que está tendo. Salvar o dia é algo que as pessoas se lembram.
Conhecimento é poder
Mesmo que você não precise do conhecimento em seu trabalho atual, quando vir um anúncio de um trabalho com uma aparência incrível que diga "O conhecimento da arquitetura da <família de microcontroladores> é necessário / preferido" , você estará em uma posição melhor ir em frente.
fonte
O 8051 e outros microcontroladores de baixo bit ainda estão em uso hoje?
Sim, embora principalmente para casos de uso de nicho. Eles são usados principalmente para tarefas simples, em produtos produzidos em massa, baseados em custos ou onde é desejável um histórico comprovado. Eles geralmente são licenciados e integrados a uma solução de chip único. Devido à sua arquitetura simples, é fácil integrá-los com periféricos personalizados no mesmo chip. Outra vantagem é que eles podem ser produzidos em uma pequena área com técnicas de fabricação de semicondutores mais antigas (e mais baratas).
Um exemplo é o chip de controle dos cartões inteligentes, que geralmente usam um núcleo 8051 ou similar com extensões de hardware criptográficas. Você provavelmente encontrará núcleos de microcontrolador de 8 bits em coisas como o controlador de um monitor inteligente de escova de dentes elétrica. Uma ECU de veículo geralmente usa um microcontrolador de 8 bits, juntamente com um de 32 bits, como um cão de guarda devido à sua maior confiabilidade e menor complexidade.
Você deveria aprender?
Além da chance de você realmente acabar em uma situação em que o conhecimento dessa arquitetura específica é necessário, eu diria que é uma habilidade útil em geral. Mesmo se você programar C no seu dia-a-dia, é útil ter uma compreensão geral do que acontece "um nível abaixo". Ao solucionar erros estranhos ou problemas de desempenho, pode ser muito mais fácil identificar o problema se você tiver uma compreensão geral do hardware subjacente. Você também pode analisar com mais facilidade a saída da linguagem assembly do compilador C. Aprender uma arquitetura também tornará mais fácil aprender diferentes no futuro. Essas habilidades também podem ajudá-lo a escrever um código melhor, mesmo para núcleos de CPU mais modernos.
fonte
Você pode aprender muito sobre design digital aprendendo-os. A eletrônica digital é construída usando duas coisas. Primeiro são lógicas, interconexões dos elementos AND, OR, NOT que implementam uma expressão lógica. (Na prática, outros elementos lógicos, como NAND, são realmente usados, mas AND, OR e NOT são mais fáceis de entender.) Segundo, são os elementos de memória que podem conter um ou mais bits. Quando elementos de memória são introduzidos, os dispositivos podem ter o que é chamado de estado . Diferentes combinações de bits nos seus elementos de memória correspondem a diferentes estados.
Considere uma máquina de estado de venda que inicie no estado 0 e se mova para outro estado sempre que uma moeda for inserida. Ao fazer isso, a máquina pode acompanhar a quantidade total de dinheiro, saber quando dinheiro suficiente foi investido e saber quanta mudança devolver.
Para projetar os circuitos da máquina, começando com um diagrama dos estados com setas mostrando as transições para outros estados, juntamente com as condições que os acionam. Para cada seta, uma expressão lógica identifica uma condição. Pode-se então descobrir o que são todas essas expressões e implementá-las com elementos lógicos.
Para uma máquina de venda automática, isso não é muito difícil. Para controladores complexos, fica muito mais difícil. Microcontroladores são uma maneira rápida e fácil de fazer a mesma coisa. Considere uma "memória" que (no sentido de um byte ou palavra) tenha k bits de largura e tenha n linhas de endereço, resultando em 2 ^ n locais na memória. Essa memória é programada com um design e é somente leitura na prática. Observe que, usando os bits de endereço da memória como "entradas" e os bits de dados como saídas, a memória pode ser programada para realizar qualquer função lógica.
A adição de um registro também com k bits de largura para manter o conteúdo de um local de memória gera uma máquina de estado.
Se os k bits estiverem divididos em, por exemplo , um código de operação e um endereço. O conjunto de bits opcode controla outras partes do circuito (como distribuir um produto da máquina de venda automática) e os outros são um endereço de memória com n bits de largura, cada conjunto de k bits se torna uma microinstrução com capacidade de ramificação.
Adicione a isso alguma lógica aritmética, mais alguns registros (onde um ou mais deles recebe entradas de controle para deslocar para a esquerda e direita) e você pode construir uma CPU cujas instruções da máquina são implementadas por uma sequência de microinstruções.
Nas décadas de 1970 e 1980, vários computadores de sucesso foram construídos usando esse design. Um deles (o VAX 11 da Digital Equipment) tinha uma instrução de máquina para calcular um polinômio inteiro, destinado a cálculos de endereço (think array). Descobriu-se que a instrução poderia ser implementada mais rapidamente usando instruções mais simples.
Microcontroladores podem ser e geralmente são uma implementação menos eficiente do que uma máquina de estado tradicional. Mas eles podem ser facilmente alterados, muito mais rápidos para projetar e são ótimas soluções de controlador.
fonte