Loading...
08.04.21

Reprogrammer l’OS d’une calculatrice CASIO : le challenge relevé par Yann, étudiant d’Epitech Lyon

Yann Magnin, étudiant en troisième année à Epitech Lyon, a récemment surpris l’équipe pédagogique par la qualité et la complexité d’un de ses projets : reprogrammer un système d’exploitation pour calculatrice CASIO. Dans le jargon, on appelle cela “un projet de barbu”.

Yann est un étudiant de 20 ans, promo 2023 d’Epitech Lyon. Il décide de faire un Bac STI2D option SIN. Dès le lycée il commence à “bidouiller” sa calculatrice CASIO. Son bac en poche, il rejoint Epitech Lyon, car passionné d’informatique. Ce Lyonnais pur souche continue à s’intéresser au fonctionnement de sa calculatrice pendant ses trois premières années à Epitech. Il va même jusqu’à réaliser son projet EIP (Epitech Innovative Project) sur le développement d’une console, permettant d’apprendre le code aux collégiens et lycéens en reprenant le travail qu’il a effectué sur sa calculatrice.

OS Casio Projet Yann Magnin 2

Les origines du projet

“Quand j’étais en 1ère année, je me demandais déjà comment fonctionnait une calculatrice Casio. Je me suis alors intéressé au cœur de la machine, son OS. Je n’arrivais alors qu’à réaliser des appels systèmes pour faire des actions simples. J’ai réalisé un gestionnaire d’interruption, un simple bout de code qui prend les commandes de la machine. Mon premier prototype m’a permis de lancer le 42sh, qui est un interpréteur de commandes (projet emblématique de fin de première année à Epitech) sur ma calculatrice.

En 2ème année, j’ai apporté plusieurs améliorations pour implémenter des mécaniques plus poussées, comme des appels systèmes, la gestion des systèmes de fichiers, ou encore la gestion de processus et de signaux.” 

Se libérer de l’OS de Casio en reprogrammant le sien

“Mon prototype fonctionnait, mais l’architecture de mon code me posait problème pour avancer. J’ai donc voulu me débarrasser de l’OS Casio, qui était bloquant pour ce que je voulais réaliser. J’ai donc appris les concepts sous-jacents de l’OS Casio en découvrant par moi-même le fonctionnement de la machine. Mais à force d’ajouter des couches, j’ai vu que certaines parties étaient interdépendantes, les interfaces n’étaient pas claires, ni maintenables.”

 « Aller toujours plus loin » : le mot d’ordre de Yann

“En 3e année, j’ai développé mon propre noyau et un hyperviseur, qui sont considérés par la calculatrice comme une application en tant que telle. Il s’agit d’un bootloader et d’une partie du noyau. Suite au problème de couches successives au niveau de l’architecture, j’ai voulu garder le noyau et séparer le bootloader pour le recoder à part. Pour précisions, le bootloader est le premier programme qui est exécuté et qui permet de charger un OS en mémoire. Un hyperviseur permet de faire tourner plusieurs OS dans la machine : le traceur de CASIO ainsi que le mien.


 

Objectif initial rempli, mais on ne s’arrête pas là !

“Comme le fonctionnement des calculatrices Casio n’est pas documenté, j’ai dû récupérer l’OS, l’analyser à la main, le recoder pour comprendre son fonctionnement et c’est très long…  Actuellement, mon prototype ne fonctionne que sur les machines monochromes. Pour les calculatrices couleurs, le système de gestion des fichiers change et le rendu à l’écran est bizarre… Ça me montre que le portage est difficile… C’est encore très artisanal, mon objectif était initialement de comprendre le fonctionnement du noyau. Maintenant que c’est chose faite, mon but final est de prendre le contrôle complet de la machine en écrasant tous les programmes de Casio. Mon principal problème est qu’il n’est pas possible d’écrire dans la mémoire de stockage, je dois donc m’installer en RAMLM. Ce qui pose un problème avec le bootloader. Sur les calculatrices récentes, le système de fichier prend beaucoup de place sur la Ram, ce qui casse mon bootloader. Pour pallier ce problème, j’ai vu qu’il y avait une zone non utilisée en divisant la Ram par 4. J’ai donc pu l’occuper et faire tourner quelques projets de première année dessus. ”


Et après ?

“Etant passionné par ce projet, ce support qu’est la calculatrice, j’ai voulu utiliser mon noyau et mon hyperviseur et les intégrer un mon EIP (Epitech Innovative Project). J’ai donc décidé de créer une console portable pour permettre aux collégiens et lycéens d’apprendre la programmation.

L’année prochaine, je souhaite partir en Corée, à l’université de Sejong, qui propose des cours d’électronique. Ça me permettrait d’acquérir les compétences matérielles qui me manquent actuellement pour mener à bien mon EIP et par passion personnelle également.”

Pour la suite, je ne suis sûr de rien, mais dans tous cas, la partie rétro-engineering m’a énormément plu ! »


 

Le ressenti d’Adrien Rémy, expert pédagogique Epitech Lyon en charge d’évaluer le projet

“Au-delà du projet, qui est d’un niveau très élevé pour un étudiant de 3e année, c’est la méthode de travail de Yann qui est remarquable. Il n’existe aucune documentation sur son sujet. Il a donc dû décomposer chaque action de calcul de la calculatrice pour la comprendre, l’assimiler et par la suite le reproduire en l’adaptant à ses besoins : c’est ce qu’on appelle du rétro-engineering.”

Vous souhaitez en savoir plus

Scroll to top