Dmitry Grinberg est un grand fou, il s’est mis en tête de réaliser une machine exécutant Linux à partir d’un micro-contrôleur 8 bits. Même si cette machine n’est pas très performante, on peu dire qu’il a réussi le challenge.

Des limites infranchissables ?

Comme Dmitry l’explique, il est bien n’est pas rare de voir dans les forums, un newbie qui pose la question :  » Est il possible d’exécuter un noyau Linux sur mon petit micro-contrôleur 8 bits ? ».

Et la plupart du temps, cela déclenche une sorte d’hilarité sans fin, surtout en sachant que les pré-réquis minimums sont une architecture 32 bits avec un MMU et au moins 1M de RAM.

La solution de Dmitry

Pour la RAM, c’est une vieille barrette SIMM 30 pins que l’on retrouve, oui, souvenez vous celle que l’on achetait une fortune dans les années 80-90 pour gagner quelques méga-octets…

Pour le stockage, c’est une carte SD de 512 Mb que Dmitry à utilisé avec une liaison SPI, pratique car elle ne nécessite pas trop de pins.

Pour le CPU, là c’est un peu plus galère, car il a utilisé un ATmega1284p et bien évidement il ne dispose ni de MMU, ni de 32 bits, seulement 8 petits bits.

Pour contourner ce problème, il a écrit un émulateur ARM en expliquant qu’il a d’ailleurs préféré l’écrire plutôt que de porter un projet existant, car c’était simplement plus fun, chapeau mec !

Pour pouvoir discuter avec le monde extérieur, il a implémenté un port série, idéal pour afficher la sortie sur une liaison console.

Un rapidité fulgurante

Bien que le micro-contrôleur soit cadencé à 24 MHz, il faut quand m^me 2h pour arriver à booter sur le prompt du bash et plus de 4 heures pour booter entièrement sur Ubuntu.

Au final on peut retenir que l’ensemble dispose d’un CPU à une vitesse réelle de 6.5KHz mais cela fonctionne….

Voici la vidéo de ce boot linux 8 bit qui a été légèrement accélérée…. 😉

  • Wil

    Wow ! Coder un emulateur ARM c’est un sacré boulot !
    Respect !

    • Mohammed YASSINE

      il existe des émulateur pour ARM !
      le plus dur c de avoir un linux kerenl on top d’un emulateur on top d’un µC