Você pode basear um computador em um microcontrolador de 32 bits?

9

Todos nós temos (principalmente) máquinas de 32 bits em nossas casas. Mas as máquinas de 32 bits possuem um microprocessador. Eu estava lendo um artigo sobre o ARM Cortex. É um microcontrolador de 32 bits. Agora isso intrigou uma pergunta dentro de mim. Os microcontroladores foram feitos para diminuir os circuitos externos ao redor de um microprocessador, depois os microprocessadores se tornaram mais poderosos, enquanto os microcontroladores permaneceram nas formas de 8 bits por um longo tempo. Mas agora que temos microcontroladores de 32 bits, não podemos ter como um computador baseado nessas coisas?

Rick_2047
fonte
Relacionados: chiphacker.com/questions/1092/...
endolith

Respostas:

11

Depende de como você define 'computador' ..

No extremo menor da escala, o que você pode chamar de microcontroladores tradicionais, você não obtém gerenciamento de memória e raramente vê mais RAM do que a pequena quantidade incorporada no chip. Eu admito muito pouco conhecimento sobre a arquitetura dos microcontroladores mais capazes agora disponíveis, mas a existência (ou a falta dela) desses recursos é provavelmente a chave para distinguir entre um dispositivo mais adequado para aplicativos incorporados ou para computação de uso geral .

Por 'gerenciamento de memória', estou me referindo à capacidade de executar programas em espaços de endereço virtual e mapeá-los para a RAM física disponível no sistema, uma função executada pelo que geralmente é chamado de unidade de gerenciamento de memória (MMU).

Sem uma MMU, se você tentar executar vários processos, todos serão forçados a compartilhar um único espaço de endereço, e isso significa que, a menos que todos os processos envolvidos sigam o esquema de alocação de memória, um processo poderá travar com facilidade o outro. Portanto, se você está no controle total da criação de todos os processos, como em um sistema incorporado, isso não é uma preocupação. No entanto, se você estiver tentando oferecer suporte à computação de uso geral, não poderá garantir que todo o código que será executado respeitará o esquema de alocação de memória e o sistema será bastante frágil.

A falta de RAM também não é um problema para os sistemas embarcados, (1) porque geralmente há muito flash e (2) não sendo um computador de uso geral significa que você não precisa se preocupar em executar programas imprevistos no computador. a mando de um usuário. Você sabe antecipadamente a soma total de todo o software que será executado no sistema e precisa apenas de RAM para variáveis ​​para esse software. Porém, quando você tenta transformar seu sistema em um computador de uso geral, os usuários esperam poder executar o que mais lhes convém, e isso requer RAM.

Agora, é absolutamente bom fazer cálculos de uso geral em dispositivos sem uma MMU e sem muita memória. O IBM PC original de 128K RAM, baseado em 8088 (16 bits) escapou disso, contanto que você só precisasse executar um programa por vez.

Então, se você deseja definir 'computador' como algo como a tecnologia de 1982, a resposta é definitivamente sim. Ou se você possui um sistema fechado no qual pode mitigar os problemas de não possuir uma MMU e / ou muita memória RAM (por exemplo, telefones celulares) controlando cuidadosamente o design do software, também sim. Ou, se o seu microcontrolador tiver uma MMU e um monte de RAM (ou puder acomodá-los externamente), você poderá construir um sistema que se assemelhe mais aos computadores atuais.

JustJeff
fonte
Desenvolvimentos em compiladores just-in-time para coisas como Java tornam um MMU talvez menos necessário do que seria historicamente. Na ausência de erros relacionados ao JIT, é possível ter vários processos independentes executando plataformas independentes em Java Virtual Machines sem MMU, e tê-los isolados um do outro, pois o JIT não gerará instruções para um programa que acessaria inadequadamente a memória usado pelo outro.
Supercat
16

Absolutamente! Dê uma olhada como quase todos os telefones celulares por aí. Por exemplo, o Motorola Droid usa o microcontrolador TI OMAP ARM executando o Android no Linux. Basicamente, existe um sistema operacional de computador completo e muitos outros gadgets. Em alguns dos produtos construídos por meu cliente, eles usam processadores / controladores de 32 bits do FreeScale PowerQuicc I e II que podem executar o Linux neles. Os PowerQuicc basicamente têm um núcleo PowerPC junto com um processador RISC separado para lidar com todos os periféricos de uma maneira altamente configurável. É um microcontrolador glorificado.

Você também deve se lembrar que, anos atrás, os computadores não estavam sendo executados em processadores de 32 bits, mas mais como processadores de 8 bits (na época, 4 bits) como o Commodore 64. Em seguida, eles migraram para 16 bits e 32 bits. , etc. Não há realmente muita diferença entre um microcontrolador e um microprocessador de arquitetura e velocidade de bit equivalente. Os microcontroladores geralmente não possuem a unidade de ponto flutuante, mas isso pode ser compensado com a matemática de ponto fixo. Por exemplo, o processador Motorola 68000 original (16 bits) foi usado para alimentar os antigos computadores Macintosh e, em seguida, transformou-se em uma versão de microcontrolador para muitos aplicativos eletrônicos incorporados por anos.

Você precisa examinar o papel do microcontrolador para entender como ele é usado. Normalmente, ao projetar com um microcontrolador, você tem uma aplicação altamente especializada em mente e tenta encaixá-la em um espaço menor do que uma PC Tower. Visto que o computador é de uso geral: triturar números e processar a entrada do usuário Quando você procura um microcontrolador, procura um que ofereça suporte ao tipo de interface que você está construindo para o seu aplicativo. Você precisa de 3 portas USB, 2 ethernet, 2 UARTs, porta SPI, ATM e interface CAN? Algumas dessas interfaces não são fornecidas em um computador típico, como SPI, ATM e CAN, e um microcontrolador as possui para reduzir o espaço na placa. Você pode ver os microcontroladores como processadores projetados para uma solução específica.

Jay Atkinson
fonte
Acho que nenhum "computador de uso geral" jamais usou algo menor que um processador de 8 bits. Os computadores de uso geral precisam acessar RAM suficiente para armazenar um programa utilizável, e não conheço computadores de quatro bits que tenham um armazenamento de código de RAM de tamanho utilizável.
Supercat 14/05
talvez não comercialmente, mas muitos hackers incluíram meu avô. Ele tinha um computador de 4 bits em sua oficina antes que os Commodore 64 e TRS-80 fossem populares. Também tinha RAM (pilhas de DIPs).
Jay Atkinson
Você tem alguma documentação sobre máquinas de arquitetura Von-Neumann de 4 bits construídas fisicamente?
precisa saber é
5

Nós definitivamente podemos. O iPad, por exemplo, usa um processador ARM Cortex A8 para o cérebro.

pingswept
fonte
2
Este é um microprocessador, não um microcontrolador, como notas JPC abaixo
Kortuk
3

Vale ressaltar que os ARMs mencionados (OMAP e A8) são microprocessadores sem memória Flash e RAM (não totalmente verdade para o A8). O microcontrolador Cortex-M3 é menor, possui pouca memória interna e acesso mais fácil aos periféricos.

Existe uma lacuna bastante grande (em termos de desempenho e recursos) entre eles.

jpc
fonte
+1 por apontar a diferença entre Cortex-A e da série Cortex-M ...
Johan
11
O microcontrolador incorporou flash e ram. Microprocessadores têm memória externamente.
Kortuk
2

Não tentando ressuscitar um encadeamento antigo, mas o meu Zaurus SL5500 executou linux incorporado em um processador ARM com grandes quantidades de RAM e mais grandes quantidades de armazenamento via slots CF e SD. Até onde eu sei, o MMU foi implementado principalmente em software (faz sentido para um sistema Linux de qualquer maneira). A computação de uso geral não era apenas possível, mas disponibilizada por meio de software de terceiros, compiladores e um shell de comando flexível que fornecia a maioria dos utilitários e recursos padrão * nix.

Não era o computador de GP mais rápido do mundo, mas com certeza fez o ARM (e / ou equivalentes da Samsung - não tenho 100% de certeza de que ele continha) parecer muito capaz. Em termos de recursos e desempenho, comparou-se bastante bem com um WinMobile Ipaq de vintage muito mais recente (clone definitivo do Samsung StrongArm). Ambas as máquinas tinham muita memória RAM e muito armazenamento, então muita memória está sendo gerenciada - suponho que tenhamos de desfocar um pouco a linha entre microprocessadores e microcontroladores quando chegarmos a esse nível de desempenho.


fonte
2

Você menciona "microprocessadores" e "microcontroladores", mas cada vez mais existe uma terceira categoria de dispositivo conhecida como "SOCs" (que significa "system-on-chip", termo que considero bastante enganador)

Os microcontroladores têm quantidades muito pequenas de memória ram e normalmente não têm mapeamento de memória e proteção de memória muito limitada. Isso os torna pouco adequados para uso como computadores de uso geral.

Os SOCs podem ser vistos como um meio termo entre os microcontroladores convencionais que têm tudo integrado em um chip e os microprocessadores convencionais que exigem grandes quantidades de circuitos de suporte. Os SOCs têm o núcleo e os periféricos do processador integrados em um chip, mas, diferentemente dos microcontroladores, eles usam memória externa. Normalmente, esses SOCs têm uma MMU completa que pode criar um espaço de endereço virtual para diferentes aplicativos. Muitos SoCs também possuem blocos de funções especiais para gráficos 3D, DSP, codificação / decodificação de vídeo etc.

Os SOCs não são tão poderosos quanto um PC de mesa moderno, mas quando combinados com um ambiente de software não-codificado, são poderosos e funcionais o suficiente para contar como "computadores de uso geral".

Peter Green
fonte