Linux en un procesador ATMega1284p de 8bits

Software Libre se hace eco de Barrapunto y Slashdot para dar a conocer este brillante experimento. Se trata de un emulador  de ARM, escrito por Dmitry Grinberg. Lo fabricó con el fin de investigar los límites de los requerimientos de Linux en cuanto a hardware y los límites de los procesadores AVR. Una verdadera obra de arte, para aquellos saben apreciarlo.

Según su investigación, cuando un desarrollador novel preguntaba en los foros si podía correr Linux en un procesador AVR de 8 bits, la respuesta generalmente eran risas. Por otra parte, en los foros de Linux, encontró que los requerimientos mínimos para el sistema requerían una arquitectura de 32 bits con MMU y al menos 1MiB de RAM para poder cargar el kernel.

El problema de la RAM lo zanjó agregando a su diseño un módulo de memoria RAM de una vieja PC 80286. El microcontrolador se encarga tanto del acceso a la memoria como del refresco para que no se pierdan datos, consumiendo esta última acción un 3% de los ciclos de CPU. Además agregó una tarjeta SD para tener 1GiB de almacenamiento.

Un problema de la arquitectura AVR es que no solo es de 8 bits en lugar de 32 sino que tampoco cuenta con MMU. Esto fue solucionado a través de la implementación en código para AVR de un emulador de arquitectura ARM (si, la misma que se encuentra en muchos teléfonos celulares).

El sistema tarda cerca de dos horas en bootear hasta la línea de comandos de Bash, luego cuatro horas más en arrancar el sistema Init de Ubuntu Jaunty. Arrancar las X y Gnome tarda mucho más. Increíblemente, una vez que el sistema ha arrancado por completo, se puede esperar la salida de cualquier comando arrancadoen unos minutos. Incluso Dmitry ha usado su sistema para formatear una tarjeta SD.

Sin duda una maravilla. Pueden leer más al respecto en el blog de Dmitry.

 

Comentarios