π
<-
Chat plein-écran
[^]

Challenge NumWorks++: résumé / wrap up...

Challenge NumWorks++: résumé / wrap up...

Message non lude Lionel Debroux » 31 Juil 2019, 23:02



En octobre 2017, j'avais lancé le Challenge NumWorks++, visant à réaliser une modification matérielle relativement simple de la calculatrice NumWorks (modèle "N0100"), en l'occurrence l'ajout d'un chip de Flash externe sur l'emplacement de la carte mère prévu par NumWorks pour cet usage, et la réalisation de logiciel tirant parti de ce nouveau chip. Adriweb avait d'ailleurs écrit la news avec moi.
In October 2017, I had launched the NumWorks++ Challenge, aiming at making a relatively simple hardware mod of the NumWorks calculator ("N0100" model), i.e. the addition of an external Flash chip on the pins suitably provided by NumWorks for this usage, and the making of software leveraging this new chip. Adriweb wrote the news item with me.

Plusieurs personnes se sont lancées publiquement dans le challenge, aux 4 coins du monde. En France, plus particulièrement, Jean-Baptiste Boric et Damien "zardam" Nicolet. Ces personnes ont donc reçu par courrier un exemplaire des chips de Flash NOR QSPI Adesto AT25SF641 de 8 MB (le modèle suggéré par les schémas officiels de NumWorks) et Winbond W25Q128JV de 16 MB, à pinout compatible, que nous avions achetés pour ce challenge, et se sont mises au travail…
Several persons, over the world, took on the challenge. In France, there were especially Jean-Baptiste Boric and Damien "zardam" Nicolet. Therefore, these persons were mailed two QSPI Nor Flash chips, and started working with them: 1 x Adesto AT25SF641 of 8 MB (the model suggested by NumWorks' official schematics) and 1 x Winbond W25Q128JV of 16 MB, whose pinout is compatible. We had bought the chips for this challenge…

Trois (!) semaines plus tard, zardam disposait d'un firmware permettant de flasher le chip externe, comme il l'annonçait par ici. Seulement quelques semaines supplémentaires plus tard, toujours le même zardam avait produit une version patchée du firmware NumWorks de l'époque, comportant un build du puissant moteur CAS "giac" de Bernard Parisse (bien connu ici parce qu'il est à la base de Xcas, le logiciel des HP Prime G1 et G2 depuis le début, KhiCAS sur TI-Nspire et Casio, etc.), qui s'exécute depuis la Flash externe ajoutée sur la calculatrice. Une partie du firmware, en gros le code de NumWorks avec quelques modifications de zardam, s'exécute toujours depuis la Flash interne, grâce au script linker adéquat.
Three weeks later (!), zardam had a firmware able to flash the external chip, as he announced here. By only several weeks later, the same zardam had produced a patched version of the contemporary NumWorks firmware, featuring a build of the powerful "giac" CAS engine by Bernard Parisse (well known here because it's the foundation of Xcas, the HP Prime G1 and G2 firmware from the beginning, KhiCAS on the TI-Nspire and Casio calculators, etc.), running from the external Flash chip added to the calculator. Part of the firmware, basically NumWorks' code with several modifications by zardam, keeps running from the internal Flash memory, thanks to the appropriate linker script.

Voici la vidéo réalisée par zardam, présentant une version antérieure de son code, qui n'activait pas encore le mode QSPI qui a quadruplé la vitesse de lecture de la Flash (donc c'est nettement plus rapide maintenant):

Bref, des fonctionnalités plus proches de celles d'une calculatrice haut de gamme dans le corps d'une calculatrice de milieu de gamme, grâce à l'ajout d'un circuit coûtant moins d'1€ à l'unité (pour le chip de 8 MB) dans ce modèle conçu par le fabricant pour monter en gamme. le processus de soudage d'un circuit au pas de 1.27mm étant habituellement considéré comme faisable, même sans grande expérience, tant qu'on dispose d'un fer à souder avec une pointe dans un état correct. La performance est plutôt bonne pour le milieu de gamme, grâce au Cortex-M4 32 bits à 100 MHz utilisé par NumWorks - d'autant que contrairement à l'eZ80 à ~48 MHz des TI-84 Plus CE / TI-83 Premium CE (micro-architecture beaucoup moins efficace par cycle d'horloge et réalisant des opérations moins avancées que les ARM), le Cortex-M4 des calculatrices NumWorks n'est pas ralenti par des waitstates, car la RAM, les bus mémoires et les mémoires Flash peuvent fonctionner à 100 MHz.
Here's the video made by zardam, showcasing an older version of his code, which didn't enable the QSPI mode which quadrupled the Flash memory bandwidth (so it's much faster now):

Well, to sum up, this is a feature set closer to that of a higher-end calculator, in the body of a mid-range calculator, thanks to the addition of a < 1 USD/EUR chip (for the 8 MB one) into that model designed by the manufacturer for upgradability. The process for soldering a 1.27mm (50 mil) pitch chip is usually considered doable, even with limited experience, as long as the soldering iron's tip is in a decent state. The performance is rather good for a mid-range calculator, thanks to the 32-bit Cortex-M4 running at 100 MHz used by NumWorks - all the more unlike the ~48 MHz eZ80 powering the TI-84 Plus CE / TI-83 Premium CE (much less efficient micro-architecture per clock cycle, which performs less advanced operations), the NumWorks calculators' Cortex-M4 processor speed isn't hampered by waitstates, as the RAM, the memory bus and the Flash memories can run at 100 MHz.

zardam a donc clairement gagné le challenge, dès novembre 2017 :bj:
Un an plus tard, il a posté un résumé de certains éléments techniques et procédures dans un article sur son blog: modifications matérielles et logicielles réalisées, et la façon de les compiler et installer.
Je dois donc lui présenter mes excuses pour avoir pris beaucoup trop de temps, malgré un certain nombre de relances par d'autres membres de l'équipe, pour écrire, en partie à l'occasion de congés d'été, cet article promis dans la news annonçant le défi (sans indication de durée il est vrai, mais ce n'est pas une raison valable :P). A vrai dire, je ne pensais pas que quelqu'un s'en emparerait et produirait aussi rapidement un tel résultat... j'avais tort :)
All in all, zardam clearly won the challenge, as early as November 2017 :bj:
A year later, he posted a summary of several technical notes and procedures in an article on his blog: hardware and software changes, and the way to build and install them.
Therefore, I need to apologize to him for taking way too much time, despite multiple pings by other staff members, to write, partially during summer holidays, the article promised in the news item announcing the challenge (without giving a timeline, granted, but that's not a valid reason :P). To tell the truth, I didn't expect that anyone would raise up to the challenge and would produce such a result so quickly... I was wrong :)

Résumons et commentons certaines parties de son travail:
  • le premier programme permettant de flasher le chip externe de Flash se base sur deux éléments principaux de logiciel open source: libopencm3, une librairie pour gérer divers microcontrôleurs à base de coeurs ARM Cortex-M et leurs périphériques sans avoir à tout réinventer soi-même à partir de la datasheet et des éventuels exemples fournis par le fabricant, et Flashrom, auquel il faut fournir les paramètres et commandes du chip de Flash s'ils ne font pas encore partie de la banque de données standard du programme, mais qui s'occupe de tout (effacement de blocs, écriture, etc.) à partir de ces paramètres. zardam a eu bien raison d'utiliser ces briques de construction logicielle, d'autant qu'à l'époque, le firmware officiel NumWorks ne fournissait pas encore de capacité de communication USB: elle est arrivée 5 mois plus tard, dans la version 1.4 d'avril 2018.
  • zardam a implémenté un bootloader offrant le multi-boot dans un mini-firmware, pour permettre le basculement d'un firmware à un autre (y compris de quoi flasher une partie de la Flash interne du microcontrôleur à partir de la Flash externe) sans devoir passer par un ordinateur. Bonne idée, cela peut être utile dans certaines configurations de test qu'il devait rencontrer.
  • il semble que l'activation du mode QSPI de la Flash externe (pour plus de vitesse) avec le programme qu'il a fait ne doive être réalisée qu'une fois. C'est important, il pense que c'est en le faisant plusieurs fois qu'il a grillé le microcontrôleur principal STM32 de sa calculatrice, il a dû le remplacer. Cette opération de remplacement du chip principal est nettement plus difficile que le soudage du chip de Flash externe, car le pas des pattes est plus fin et les pattes sont beaucoup plus nombreuses. NdT: Il paraît que l'utilisation de flux de soudage aide.
Let's summarize, and comment on, several parts of his work:
  • the initial program for flashing the external chip ls based on two main pieces of open source software: libopencm3, a library for handling a variety of microcontrollers based on ARM Cortex-M cores and their devices without having to reinvent the wheel from scratch from the datasheet and code examples provided by the manufacturer (if any), and Flashrom, which needs to be given the Flash chip's parameters and commands if they're not part of the standard database of the program yet, but which takes care of everything (block erases, block writes, etc.) from these parameters. zardam totally did the right thing using these software building blocks, all the more at the time, NumWorks' official firmware didn't provide a USB communication ability yet: it came up 5 months later, in the 1.4 version released in April 2018.
  • zardam implemented a multi-boot-capable bootloader in a mini-firmware, so that the calculator can be switched from a firmware to another (including something to reflash the internal Flash chip from the external Flash chip) without having to be connected to a computer. It's a good idea, it can be useful in some testing configurations which were probably relevant to him.
  • it seems that the QSPI mode of the external Flash chip (for higher speed) with the additional program he made needs to be done only once. This is important, he thinks that doing it multiple times is the reason why fried his calculator's main STM32 microcontroller. He had to replace it, and the process for replacing the main chip is much harder than soldering the external Flash chip, as the pitch is finer and there are many more pins. Translator's note: it appears that using soldering flux can help.

Si vous voulez utiliser votre calculatrice NumWorks comme cobaye pour répliquer le travail de zardam, et ainsi la faire monter en gamme pour un très faible coût et un risque limité, basez-vous sur son billet de blog, qui détaille, comme déjà indiqué, les différentes étapes de la construction des images et du flashage :)
Peut-être que quelqu'un sera intéressé par la mise à jour de l'intégration firmware NumWorks <-> giac vers la version actuelle du firmware NumWorks ? ;)

Une nouvelle fois, bravo à zardam pour son travail :)

Liens externes utiles :
If you want to use your NumWorks calculator as a testbed for replicating zardam's work, thereby upgrading it at a very low cost and a limited hardware risk, use his blog's article, which lists, as already mentioned, the steps for building images and flashing the calculator :)
Maybe someone will be interested by upgrading the NumWorks firmware <-> giac integration to the current version of the NumWorks firmware ? ;)

Once again, congratulations to zardam for his work :)

Useful external links:
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6858
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Challenge NumWorks++: résumé / wrap up...

Message non lude critor » 01 Aoû 2019, 07:51

Merci pour cet article fort intéressant. :)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Challenge NumWorks++: résumé / wrap up...

Message non lude Lionel Debroux » 01 Aoû 2019, 08:08

Merci, mais il est peu utile, mon article... j'aurais dû le faire beaucoup plus tôt. En ne le faisant que la plus grosse partie de 2 ans plus tard, ce n'est pas ainsi que je vais inciter les gens à faire la manip.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6858
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Challenge NumWorks++: résumé / wrap up...

Message non lude Wistaro » 03 Aoû 2019, 07:30

Très intéressant !

Merci :)
Nouveau sur le site, Anonymous ? Avant de poster sur le chat et sur le forum, n'oublie pas de lire les règles. En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:
Image
Découvre mes programmes et mon site!
Avatar de l’utilisateur
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 87.5%
 
Messages: 3152
Images: 37
Inscription: 25 Fév 2013, 16:21
Localisation: Toulouse
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingénieur en électronique
YouTube: Wistaro
Twitter/X: Wistaro
GitHub: Wistaro

Re: Challenge NumWorks++: résumé / wrap up...

Message non lude critor » 04 Jan 2020, 17:23

Maintenant que nous avons le firmware Omega permettant de faire cohabiter les modifs/améliorations communautaires avec les derniers ajouts officiels de NumWorks, serait-il possible d'y pousser un support propre pour la puce Flash externe rajoutée sur N0100, histoire de pouvoir par exemple installer KhiCAS sur NumWorks N0100 ?

Merci.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Challenge NumWorks++: résumé / wrap up...

Message non lude M4x1m3 » 04 Jan 2020, 17:30

Je pense que oui. Honnêtement j'y ai pensé, maintenant que j'ai une n0100. J'aimerais ne pas trop prendre de risque avec mon HW, je vais donc attendre d'avoir une 2e n0100 avant de souder une puce de flash dessus, mais je compte le faire. Si les drivers sont déjà écris, adaptés à Ion, il ne devrait pas être trop dure de rajouter un modèle spéciale (MODEL=n0100++ par exemple) ou de faire une option de compilation (MODEL=n0100 HAS_FLASH=1) dans le build-system et d'ajouter une option FLASH_DRIVER pour pouvoir choisir son type de flash.
Image
"Regression testing"? What's that? If it compiles, it is good, if it boots up it is perfect.
Avatar de l’utilisateur
M4x1m3Programmeur
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 62.6%
 
Messages: 170
Images: 12
Inscription: 13 Oct 2019, 21:10
Localisation: Bas-Rhin (67)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: M1 Informatique
Twitter/X: M4xi1m3
GitHub: M4xi1m3


Retourner vers News NumWorks

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 12 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
892 utilisateurs:
>865 invités
>22 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)