Por que eu deveria aprender uma arquitetura de microcontrolador? [fechadas]

8

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?

CK
fonte
3
Por diversão, ou porque você precisa fazer um projeto com essa arquitetura, obviamente.
PlasmaHH
Hoje, o 8051 é um nível de hobby, no máximo. Por outro lado, se você começar a trabalhar com algo moderado como o ARM Cortex M4, não precisará realmente aprender a arquitetura. Não começar pelo menos
Gregory Kornblum
@PlasmaHH Eu gostaria de ter tempo suficiente para "se divertir" com cada tópico único sobre eletrônica, mas que estava em meus anos de estudante :)
CK
6
você precisa estar ciente da arquitetura quando precisar de desempenho, o que provavelmente não acontecerá. Para dar um exemplo, se você precisar executar alguns cálculos repetidamente e tiver tempo limitado, pode ser necessário que você não use os dados armazenados no flash ou otimize o uso dos registros. Mas isso acontece hoje apenas com um número muito limitado de profissionais. Você levará tempo para chegar lá. Por enquanto, eu não cometeria um erro assumindo que apenas escrever C é suficiente para os próximos anos.
Gregory Kornblum
2
Vou deixá-lo para aqueles que podem conhecer melhor :)
Gregory Kornblum

Respostas:

30

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:

... obviamente, não será usado por nenhuma indústria para desenvolver um produto devido à sua simplicidade ...

é um absurdo absoluto de alta qualidade. Especialmente porque você mesmo está fornecendo um contra-exemplo

Meu chefe, com mais de 50 anos, disse que estava usando 8051 derivados e eles estavam fazendo o trabalho.

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 .

Marcus Müller
fonte
O AVR também é uma ótima arquitetura de aprendizado, com excelente documentação e suporte ao gcc.
você precisa saber é o seguinte
@Chrylis odeia discordar, mas eu pessoalmente não acho que os 8bitters ATMega sejam uma ótima arquitetura, nem sua documentação ou suporte ao GCC são excelentes em comparação ao ARM córtex m0, com o qual eles competem. Mas essa é uma opinião pessoal!
Marcus Müller
1
@ MarcusMüller Depois de algumas experiências com a Atmel, eu nunca mais as usaria (exceto por hobby). A Atmel dependia de atividades amadores para apoiar empresas menores que um certo "tamanho" - o que eu sempre fui menor do que, já que nossos qtys nunca excederam 6000 por ano. As FAEs foram legais, mas isso não ajudou na França (AT91), então eu as deixei ir. O microchip, por outro lado, me apoiou em grandes níveis, não importa o projeto. Apoia o seu prof. ferramentas "para sempre" e até chips antigos ainda são feitos. Atmel agora comprado pela Microchip. Então, talvez mude lá e eu vou olhar de novo.
9137
1
@jonk sim, enquanto o PIC / microchip tem uma boa reputação de serviço e pode sobreviver apenas com isso, a extensão do portfólio da Atmel pode chegar a um empate. E, minha esperança para a próxima década: como discutimos nos comentários a outra resposta há algum tempo, se provar que os "serviços de transporte" de wafer se tornam cada vez mais acessíveis e com preços competitivos de 32 bits / opcional 64 bits / opcional O RT garante arquiteturas como o RISC-V em vários tamanhos e velocidades (implementadas como núcleos com o nome de BOOM, Rocket-chip ou PicoRV32), o "diabos, eu tenho um problema especial, posso obter um MCU especial"…
Marcus Müller
1
@ MarcusMüller Pode-se esperar. Se as coisas ligam o suporte ao cliente, a Microchip simplesmente mata todos os outros. Eu tinha uma ferramenta profissional, com 12 anos de idade, onde o interruptor se tornou "esquisito". Liguei para perguntar se eles poderiam me dar o número da peça do interruptor para que eu pudesse pedir um e consertar a unidade. Em vez disso, eles exigiram que eu me enviasse uma unidade de reposição, que me enviasse uma caixa para devolvê-las à antiga, e chegou na manhã seguinte! Sem custo. Eu perguntei: "Você precisa de comprovante de compra?" Eles disseram: "Não. Apenas devolva a outra unidade. Possessão física é tudo o que precisamos". A coisa maldita era antiga.
9137
12

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.

jfowkes
fonte
Por outro lado, não sei se você lerá essa frase com frequência em um anúncio de emprego - é um tipo de conhecimento misterioso, e quem é menos conhecedor de qualquer arquitetura de CPU poderá pegar o 8051 nos primeiros três dias de trabalho, eu acho
Marcus Müller
Bom ponto, eu editei isso para ser mais geral.
Jfowkes
7

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.

nitro2k01
fonte
Eu discordo um pouco da afirmação "Nicho"; veja minha resposta abaixo :) mas ainda assim, a sua é uma boa resposta!
Marcus Müller
1

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.

Stuart Wilson
fonte