Linux tourne sur AVR
Souvent, sur les forums Linux, des débutants en électronique demandent s'ils peuvent faire tourner Linux sur leur micro 8 bits préféré. La réponse, invariablement ponctuée d'un sourire, est un non ferme : « il faut 32 bits, espèce de newbie, et au moins 1 Mo de RAM et une MMU ».
Désormais, les ayatollahs ne riront plus des blancs-becs. Dans la catégorie « Linux peu importe le prix ou l'inutilité », et après "Linux dans votre navigateur" (émulation en Javascript par Fabrice BELLARD), voici "Linux dans votre AVR".
Il ne s'agit pas d'un vrai portage ; Dmitry Grinberg a dû ruser pour faire tourner Linux sur son ATMega1284p. Mais comment ? Linux veut un processeur 32 bits ! Dmitry lui en a émulé un. Oui, vous avez bien lu, c'est un AVR qui fait tourner un émulateur ARM qui à son tour fait tourner Linux. Et la RAM ? Je le trouve où l'AVR avec 1 Mo de RAM ?
Pourquoi pas une barrette SIMM ? Vous savez ces vieilles barrettes à 30 contacts de nos 286, qui coûtaient la peau des… Quelques fils, une plaque d'essais et presto ! Reste à écrire un peu de code pour gérer les accès et le rafraîchissement, qui se produit toutes les 62 ms et prend environ 1,5 ms, et occupe à lui seul presque 3% du processeur. Côté performances, on arrive à environ 300 Ko/s.
Et le logiciel, je le mets où ? Dans les 128 Ko de flash ? Oh celle-ci était facile : une carte SD reliée en SPI et voilà.
Et la vitesse ? Vous croyez qu'il aura démarré, ce système, avant la prochaine ère glaciaire ? La réponse est oui. Comptez seulement 2 h pour atteindre l'invite de commandes sur port série. Pour démarrer Ubuntu, 4 h de plus. Au final, la vitesse de l'ARM émulé (un PXA255) est d'environ 10 kHz, pas mal pour un AVR, même surcadencé à 24 MHz.
Contrairement à ce qu'on pourrait croire, le système est (presque) utilisable après avoir démarré. Il suffit d'une minute pour lister le contenu d'un répertoire.
En tout cas, quelle belle leçon d'humilité offerte par Dmitry et sa plateforme Linux la moins chère, la moins rapide, avec le moins de composants mais la plus facile à assembler à la main. Les plus nostalgiques se rappelleront l'époque où programmeur était un métier dans lequel on utilisait son cerveau plus que son index.