IMA4 2016/2017 P28

De Wiki de Projets IMA


Cahier des charges

Présentation générale du projet

Contexte

La calculatrice TI-83 premium CE possède déjà un émulateur sous licence: TI Smart View CE (émulateur officiel gérant les calculatrices TI-83 Premium CE, TI-82 Advanced et TI-83 Plus.fr). Par ailleurs, il existe un utilitaire lui aussi officiel et gérant les mêmes modèles de calculatrices: TI connect CE. Ce dernier propose des fonctionnalités de sauvegarde de programmes, d'édition de programmes et de gestion de captures d'écran.

L'inconvénient de ces logiciels est qu'ils sont payants et très dirigistes dans leurs fonctionnalités. Il existe cependant un émulateur open-source réalisé par la communauté: CEmu. Permettant d'émuler une large gamme de TI-84, cet émulateur est également adapté à la TI-83 premium CE qui possède le même processeur que les TI-84. Il présente néanmoins quelques limitations, notamment au niveau de l’exécution d'applications.

Objectif du projet

L'objectif est d'adapter l'émulateur CEmu pour calculatrices Texas Instruments afin d'émuler totalement la calculatrice TI 83 premium CE.

Description du projet

Le projet reposera sur l'étude d'une calculatrice TI-83 premium CE, calculatrice milieu de gamme destinée aux lycéens. L’émulateur open-source CEmu propose des fonctionnalités intéressantes mais présente aussi un manque de fonctionnalités fondamentales pour le rendre intéressant pour l'apprentissage auprès de lycéens.

Améliorer CEmu passera par plusieurs points:

  • une modification du skin dans l'émulateur afin de coller à l'interface de la TI-83 ;
  • une adaptation du système de sauvegarde de la mémoire afin de ne pas devoir passer par des utilitaires libres tels que TiLP (permettant une connexion calculatrice/ordinateur pour une large gamme de TI) ;
  • implémenter la gestion de port USB afin de pouvoir communiquer le plus directement possible avec la calculatrice ;
  • en complément des fonctions de communication évoquées ci-dessus, il pourrait être intéressant de permettre un contrôle de CEmu directement via la calculatrice, comme le fait l'application Smart Pad CE avec le logiciel TI Smart View CE ;
  • permettre de lancer directement des applications dans l'émulateur comme peuvent le faire les émulateurs officiels, le problème venant du fait que les programmes de la RAM sont exécutables mais pas ceux de la mémoire flash. M. Dhaussy serait également intéressé par l'ajout d'un éditeur de programme.

Enfin, dans un intérêt purement intellectuel, il serait intéressant de voir si le mode examen est contournable. Cela pourra se faire de manière logicielle ou de manière matérielle.

Ultimement, si le temps le permet, il pourrait être intéressant de faire communiquer la calculatrice avec un Arduino.

Choix techniques : matériel et logiciel

La majorité du travail à réaliser consistera à s'approprier le code réalisé par la communauté et à l'adapter afin de le faire répondre à nos besoins. Le cœur de l'émulateur est programmé en C tandis que l'interface graphique est programmée en C++.

Afin de tenter de passer au travers du mode examen, une approche logicielle risque cependant d'être compliquée. À ce moment là, il sera probablement envisagé d'ajouter une LED à l'intérieur du boîtier de la calculatrice afin de donner l'impression que le mode examen est activé alors qu'il ne l'est pas. Le déclenchement de la LED pourra être effectuée avec un interrupteur magnétique ou en détournant l'information normalement destinée à la LED d'origine de la calculatrice.

Calendrier prévisionnel

Liste des tâches à effectuer

  • adapter l'interface graphique (ajout des boutons manquants, modification du skin, ...) ;
  • ajouter la gestion du port USB ;
  • permettre la sauvegarde structurée de la mémoire sans utilisation d'utilitaire ;
  • permettre aux programmes en mémoire flash de s’exécuter directement dans l'émulateur ;
  • permettre un contrôle du logiciel CEmu depuis l'interface de la calculatrice ;
  • donner la possibilité d'éditer des programmes ;
  • contourner le mode examen par ajout d'une LED afin de fournir une information contradictoire sur son activation.

Feuille d'heures

Tâche Prélude Heures S1 Heures S2 Heures S3 Heures S4 Heures S5 Heures S6 Heures S7 Heures S8 Heures S9 Heures S10 Total
Définition cahier des charges 2h 2h
Installation de l'espace de travail
Adaptation de l'interface graphique
Gestion du port USB
Sauvegarde de la mémoire
Exécution de programmes situés dans la mémoire flash
Éditeur de programmes
Contournement du mode examen

Avancement du Projet

Semaine 1

  • Correction et enrichissement du cahier des charges suite aux remarques de M. Dhaussy
  • Récupération d'un exemplaire de la calculatrice Ti-83 premium CE
  • Téléchargement et installation des ressources CEmu fournies par la communauté (source: https://github.com/CE-Programming/CEmu )

Liste de matériel fourni:

  • une calculatrice Ti-83 Premium CE
  • un câble USB mini-A/mini-B
  • deux câbles USB type-A/mini-B
  • un bloc d'alimentation USB
  • une notice d'utilisation et une d'information

Semaine 2

J'ai commencé par réaliser une analyse des éléments composant l'émulateur. Le core du programme est constitué de 23 fichiers C chacun liés à une fonction particulière telle que la gestion du clavier, la gestion de l'usb, la gestion de la mémoire flash, etc. Chacun de ces fichiers possède un fichier C++ correspondant destiné à être utilisé par l'interface graphique. La source comporte des fichiers de debugage à activer à la compilation. La compilation des fichiers est prévu via l'utilisation du logiciel QT.

Pour Windows il existe un binaire prêt à l’exécution. Celui-ci permet de rapidement tester les fonctionnalités de l'émulateur (il faut fournir une ROM de la calculatrice). Pour pouvoir implémenter mon code il me faudra cependant passer par QT afin de le compiler. L'environnement Windows étant bien incomplet pour cela, je tente de télécharger toutes les fonctionnalités nécessaires pour pouvoir compiler: si je n'y parviens pas je travaillerai exclusivement sous Linux. Le code écrit en C et C++ restera cependant portable et utilisable par les deux systèmes d'exploitation.


La communauté continue de travailler sur CEmu et progresse sur des fonctionnalités telle que la gestion de l'USB. Après recherche, voici comment j'évalue la faisabilité de mon cahier des charges:

  • adapter l'interface graphique: ne devrait pas poser de problème. Étant programmée en C++ j'attends d'avoir fait davantage de Java en classe afin de facilement et rapidement implémenter les changements nécessaires ;
  • ajouter la gestion du port USB: risque de s'avérer compliqué. Des pistes de travail sont déjà proposées par des membres de la communauté: je prévois de les reprendre et de les faire progresser le plus possible ;
  • permettre la sauvegarde structurée de la mémoire sans utilisation d'utilitaire: semble abordable. Des fonctions similaires semblent déjà exister (je dois encore creuser pour savoir si ce point n'est pas déjà résolu par la communauté) ;
  • permettre aux programmes en mémoire flash de s’exécuter directement dans l'émulateur: il semble que cette fonctionnalité soit déjà disponible. À confirmer ;
  • permettre un contrôle du logiciel CEmu depuis l'interface de la calculatrice: à mon avis infaisable sans une gestion fonctionnelle du port USB. Ce point ne sera pas traité ou le sera après tous les autres ;
  • donner la possibilité d'éditer des programmes: il est possible depuis l'émulateur d'accéder à la mémoire et de l'éditer. Il devrait être assez rapidement possible d'éditer des programmes entièrement depuis l'émulateur ;
  • contourner le mode examen par ajout d'une LED: après ouverture de la calculatrice il devrait y avoir suffisamment de place pour ajouter un petit circuit ;
photos à venir

Semaine 3

Fichiers Rendus