Faire tenir dans un ordinateur portable un lecteur vidéo, un jeu et un éditeur de notes n'a rien d'exceptionnel. Le faire tourner sur un microcontrôleur 8 bits, en revanche, relève de la gageure. C'est pourtant ce qu'a réalisé le développeur Vladimir avec son projet AVR Laptop, dont le cœur est un ATmega2560, une puce compatible Arduino.
L'ATmega2560 est considéré comme l'un des microcontrôleurs 8 bits les plus robustes du marché. Cela reste néanmoins une architecture 8 bits, et faire cohabiter un système d'exploitation temps réel FreeRTOS avec l'ensemble des fonctions attendues d'un ordinateur portable a exigé un travail d'optimisation logicielle minutieux. Chaque cycle de calcul compte, et l'auteur a dû écrire lui-même une grande partie de la pile logicielle pour tirer le meilleur parti de ressources limitées.
L'écran ST7920, un LCD monochrome de 128 par 64 pixels, illustre bien cette contrainte. Aucune bibliothèque standard ne pilote ce type d'affichage de la manière voulue par le développeur. Vladimir a donc conçu son propre pilote, volontairement réduit aux seules fonctions nécessaires. Ce choix permet d'économiser de la mémoire et du temps processeur, deux denrées rares sur une plateforme 8 bits.
La lecture vidéo constitue le défi le plus visible. Même en couleur 1 bit, atteindre 24 images par seconde relève de la performance, surtout lorsqu'il faut y associer du son. La synchronisation entre le flux d'images et la bande-son, sur un microcontrôleur dépourvu des accélérateurs graphiques et audio des machines modernes, suppose des astuces d'ordonnancement et de compression que le développeur détaille dans sa documentation. Le résultat, visible dans une vidéo de démonstration, montre une machine capable d'alterner entre lecture multimédia, jeu et prise de notes, comme n'importe quel ordinateur portable.
Le code source n'est pas encore public. Il est en attente de relecture avant sa diffusion, ce qui suggère que l'auteur souhaite le rendre accessible à la communauté des développeurs embarqués. Cette démarche s'inscrit dans une tradition de projets qui repoussent les limites perçues du matériel ancien ou contraint, à l'image de SymbOS, un système d'exploitation graphique conçu pour les processeurs Z80, ou encore des serveurs web implémentés sur des microcontrôleurs AVR.
Au-delà de l'exploit technique, le projet AVR Laptop rappelle que la frontière entre ce qui est possible et ce qui ne l'est pas dépend souvent moins de la puissance brute d'un processeur que de la qualité de l'architecture logicielle. Là où l'on attendrait un système Linux sur un processeur 32 ou 64 bits, un ATmega2560 et un écran monochrome suffisent à faire naître une expérience d'ordinateur personnel. Une démonstration qui devrait intéresser autant les amateurs d'électronique que les développeurs curieux de voir jusqu'où un cœur 8 bits peut être poussé.