IMA5 2018/2019 P28

De Wiki de Projets IMA
Révision datée du 24 septembre 2018 à 13:43 par Adorian (discussion | contributions) (Semaine 3)


Présentation générale

Description

Construire un clone de la calculatrice open-source NumWorks. Effectuer quelques modifications sur le code source et sur le hardware.

Objectifs

Il y a plusieur Axes sur le projet en premier temps sur une calculatrice officiel Logiciel :

Préambule - compilation du firmware sur linux / windows - mettre a jour un calculatrice - compréhension du code dans sa généraliter

Réquis - Modification du mode examen pour garder les programme - Modification du calculateur pour rajouter des fonction - Ajout de memoire a python ( 13 ko disponnible)

Hardware

- Rajout de memoire vive (seulement 256kb) - Recherche ecran compatible

en un second temps modifier la calculatrice en rajoutant des fonction non utiliser comme lecture de carte sd et utilisation des entrée sortie

Préparation du projet

Cahier des charges

Choix techniques : matériel et logiciel

Liste des tâches à effectuer

Calendrier prévisionnel

Réalisation du Projet

Semaine 1

Pour éviter de me retrouver avec une seul version qui a tout les modification je travail par petit segment qui seront appeler buildx (x étant un chiffre croissant) les petit modification pourront comme sa ajouter dans une version futur et des modification juger non pertinent n'impacterons pas sur le peux de place qui a en mémoire flash

Installation :

source

Linux

Partant d'un linux vierge pourvoir installer l'environnent sdk pour qu'on puisse mettre a jour et modifier la numwork il faut quel que ressource seront nécessaire pour compiler

make gcc g++ 

utiliser par "os" de numwork

bison build-essential dfu-util flex gcc-arm-none-eabi libfltk1.3-dev libfreetype6-dev libpng12-dev

une fois tout sa installer linux et enfin prés a compiler et envoyer le code sur la calculatrice

Windows

Cette fois n'ayant pas de console il faut l'installer Numwork nous propose Msys2 une fois installer comme sur linux il faut installer pas mal de ressource

pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-freetype mingw-w64-x86_64-pkg-config mingw-w64-x86_64-fltk git make bison python

Mac aucun mac pour les tests mais sa doit fonctionner correctement

Mise a jour : une fois l'ordinateur configurer on compiler et essayer soit le simulateur soit envoyer le code sur la calculatrice (sachant que le simulateur ne simule pas la led et d'autre fonction de la calculatrice) Pour compiler le code vers la calculatrice

make clean
make
make epsilon_flash

Pour compiler le code pour le simulateur

make PLATFORM=simulator clean
make PLATFORM=simulator

sachant que le clean et très important on ne peux pas exporter un code qui a était a but du simulateur

Pour exécuter le simulateur

./epsilon.elf

Build 1 désactivation du mode examen

Le mode examen et obligatoire pour tout les calculatrice programmable a partir de la rentrée 2018 le but de se mode et de bloquer l'accès au programme qui on était dejai enregistré dans la calculatrice et de l'indiquer pour aider les surveillant a verifier que le mode et bien actif.

Pour se faire Numwork a choisir d'appliquer 3 action en activant le mode examen

- ajout d'une icone examen dans le menu

- clignotement d'une led en rouge

- effacement des programme python (et non dés-affichage des programme comme le font certain concurrent)

Pour sortir du mode d'examen il suffit soit de reset sa calculatrice ou d'alimenter la calculatrice

Cette dernier fonction et vraiment contraignante même pour une utilisation normal, une mauvaise manipulation et les programmes réaliser s'envole

Pour que la supercherie que le mode examen aie était truquer les indicateur visuel doivent rester il faut juste modifier la dernier fonction

Semaine 2

Ayant avancée sur la partie software et compris un partie du code je me lance sur la liste des materiel requis pour réaliser un clone. tout les composant sont disponible dans le commerce sauf l'ecran qui a réaliser sur mesure pour numwork

Connecteur ecran.png

On peux voire que la schème donnée par numwork qu'il utiliser des fonction particulier du controleur qui sont:

-un bus de donnée de 16 bits

-4 led de retroéclairage

-Te : Tearing Effect

-EXTC : extended comande

connaisant les port qui sont requis je peux commencer a chercher un ecran compatible sachant qu'aprés une demande a numwork le ports EXTC n'ai pas encore utiliser et le ports TE peux être desactiver sans vraiment poser de problème

Il et dur de trouver d'un concepteur d'ecran utilisant le controleur ST7789V pour leurs ecran il faut donc se tourner vers la chine sur 8 fabricant seulment 4 réponse et sur les 4 réponse seulment 2 avec des produit correspondant a la demande l'un viens de szelida et l'autre de Youri Technology je choisi donc le ET024QV01 [[1]]

on peux voire a sa liste de PIN qui a certain PIN qui deveront être fixer a vcc ou gnd pour bloquer le mode d'affichage de la calculatrice mais il posséde les pin requis pour fonctionner avec la calculatice il et juste plus petit

RAM numwork.png

En paralléle une recherche sur le hardware montre que la place pour la RAM et dejai prévu sur le PCB il faudrait juste modifier une partie software pour qu'il soit pris en compte l'ajout de la RAM boostera fortement les capacité de cette calculatrice et pourra permet normalment de faire des petit calcul formel Partie Software :

Vu que le recherche sur la ram a était effectuer je me concentre se coup si sur l'augmentation de la taille alouer a python en prévision de l'augmentation qui serra fait dans le futur !

De base python dispose de 16Kb de mémoire alouer pour fonctionner en peux le pousser a aller jusqu'a 128Kb sans augmentation matériel mais du a l'achirecture de la mémoire du procésseur une fois qu'on dépace les 64 Kb le temps de traitement deviens long tellement que les premier fois j'ai penser la calculatrice totalment planter !

Si on essaye d'alouer plus que 128Kb de mémoire a python la calculatrice bloque l'action et empêche d'ouvrire la console , il existe une petit sécuriter pour éviter de vraiment planter la calculatrice

cette modification permet d'avancer l'hypothése que le système epilson prend 128kb dans la mémoire vive actuel

Une autre modification mineur a était réaliser pour modifier la version de la numwork il n'ai possible que de rentrée un numéro de version ayant 7 char chose intéressant le site de numwork affiche bien notre version modifier Version.png

Semaine 3

Je commence cette semaine par étudier l'utiliter du port TearingEffect et ExtendedCommand on debute par tout commenter pour voir l'effet sur la calculatrice

TE exc.png (d'autre ligne on était commenter)

je charge donc cette modification dans la calculatrice pour voire le résultat grace a la fonction graphique je charge des fonction assez lourde graphiquement pour voire les changement ( un fonction de base comme f(x)=x n'ai aucun bug graphique)

je test donc tan(x²⁴) et sin(x⁴)

(pour les images de cette partie il n'aie pas possible d'utiliser le simulateur)

Original.png

en effectuant quel que déplacement sur la courbe on obtiens des léger bug graphique comme celui la ,ou seulment un petit portion disparaît par a coup

Petit bug.png

en changent de fenêtre l'as on obtient des bug graphique plus important

Gros bug.png

même si les bug graphique sont présent il ne sont pas gênant car :

- sur des fonctions de base il ne sont pas présent donc pas contraignant pour un étudiant au collège/lycéen

- sur des fonction avancer les bug ne dure quel que seconde et ne sont donc pas gênant

il pourrai donc poser problème sur des fonction plus graphique et dynamique

En cherchant sur internet on peux découvrire un mode de test on y accédes viens le menus paramètres -> A propos on se place sur FCC ID puis on appuis sur la touche 6 on valide et nous voila dans le mode de test

Test usine.png Test bouton.png

sur simulateur on ne peux pas dépasser le test bouton car le bouton home n'est pas accessible via le clavier sinon il comporte en plus d'un test ecran pours les couleur primaire , test de led et de l'affichage d'un code (serie) de la calculatrice

Semaine 4

Documents Rendus