Fazer o Linux rodar em uma cpu para qual ele tem suporte é fácil, mas e em um microcontrolador de 8 bits? É possível de certa forma e já o fizeram.
Dmitry Grinberg de origem russa, começou a aprender a programar em C aos 6 anos, se mudou para os estados unidos e após os estudos passou por empresas como Google e VMWare.
O seu feito envolve a criação própria de um emulador para a arquitetura arm, que é a arquitetura da imagem do Linux usado.
Utilizando um microcontrolador ATmega1284p, conectou-se à ele uma antiga memória SIMM 30 pinos de 16MB, com banda máxima de 300kbps, além de um cartão SD de 1GB se comunicando via SPI à 200kbps E esse conjunto que dará boot em um Linux 2.6.34.
Além do hardware Dmitry criou seu emulador para arm(ARMv5TE) do zero, que irá rodar sobre o microcontrolador de 8 bits e interpretar as instruções arm para qual o Linux foi compilado.
O microcontrolador também contou com um overclock, rodando a 24Mhz, com frequência padrão de 20Mhz.
A comunicação com o sistema é feita via serial ligado ao seu computador e utilizando já antigo programa minicom. Os dois leds na placa indicam o acesso ao cartão SD, para leitura e escrita.
A velocidade? Sofrível é claro, demora-se 2 horas para se iniciar o sistema e cair no bash diretamente substituindo o init( init=/bin/bash ). Após o boot a resposta de um comando ( ls por exemplo ) demora cerca de um minuto.
Um vídeo do boot pode ser visto abaixo, que claramente está acelerado.
Além do hardware Dmitry criou seu emulador para arm(ARMv5TE) do zero, que irá rodar sobre o microcontrolador de 8 bits e interpretar as instruções arm para qual o Linux foi compilado.
O microcontrolador também contou com um overclock, rodando a 24Mhz, com frequência padrão de 20Mhz.
A comunicação com o sistema é feita via serial ligado ao seu computador e utilizando já antigo programa minicom. Os dois leds na placa indicam o acesso ao cartão SD, para leitura e escrita.
Slot do cartão SD |
Esquema |
A velocidade? Sofrível é claro, demora-se 2 horas para se iniciar o sistema e cair no bash diretamente substituindo o init( init=/bin/bash ). Após o boot a resposta de um comando ( ls por exemplo ) demora cerca de um minuto.
Um vídeo do boot pode ser visto abaixo, que claramente está acelerado.
Link do código do emulador arm: http://dmitry.gr/images/uARM.zip
E para que ter esse trabalho todo? Simplesmente porque é possível.
Fonte: http://dmitry.gr/index.php?r=05.Projects&proj=07.%20Linux%20on%208bit
Está gostando do blog? Ajude-nos a divulgar e curta nossa página no Facebook ou siga-nos no Twitter.
Onde eu consigo uma memória dessas? Essas SIMM estão ficando cada vez mais raras.
ResponderExcluirTente o mercado livre ou ebay.
ExcluirGravando PIC online via porta USB de um Raspberry Pi https://www.youtube.com/watch?v=S30wVi9RWEs . Programas disponíveis em https://www.dropbox.com/s/whwolbzf0cwkkb9/SanUSBrpi.zip
ResponderExcluirPor que nós fazemos isso? Fazemos isso porque dá pra fazer!
ResponderExcluir