Page 1 of 4

Découverte spécifications nouvelle NumWorks N0120 EX

Unread postPosted: 24 Feb 2022, 09:45
by Admin
Dans une actualité précédente, nous découvrions et t'annoncions la sortie prochaine d'une calculatrice NumWorks N0120 EX, nouvellement autorisée aux examens du Portugal dès la session 2022.

Rappelons les spécifications des modèles précédents :
  • rentrée 2017 - NumWorks N0100 : microcontrôleur STM32F412 (processeur Cortex-M4 ARMv7 à 100 MHz + 256 Kio de mémoire RAM + 1 Mio de mémoire Flash)
  • rentrée 2019 - NumWorks N0110 : microcontrôleur STM32F730 (processeur Cortex-M7 ARMv7 à 216 MHz + 256 Kio de mémoire RAM + 64 Kio de mémoire Flash) + 8 Mio de mémoire Flash externe

Ces deux modèles nous permettaient en Python 32K de stockage et 32K de heap (mémoire de tas), ce dernier étant très hautement insuffisant à l'exécution de scripts, nous empêchant de réaliser de grandes choses. :mj:

Une interrogation cruciale concernait donc les spécifications de la NumWorks N0120 EX. Après 5 ans de douloureuse attente, allait-on enfin avoir de quoi élargir le heap Python ?

Et bien tu n'attendras pas plus longtemps, la réponse c'est maintenant ! :D

La communauté des firmwares tiers Omega/Upsilon n'a pas été sage, mais ce n'est pas pour nous déplaire. M4x1m3 nous annonce que RapidZapper a pu trouver des informations juteuses dans un fichier Javascript public (celui servant aux transferts), nous détaillant tout cela en clair ! :o
Code: Select all
{N0100:{name:"N0100",ElectronicSignatureAddress:536836624,RAMAddressStart:536870912,RAMAddressEnd:537133056},
N0110:{name:"N0110",ElectronicSignatureAddress:535853584,RAMAddressStart:536870912,RAMAddressEnd:537133056},
N0120:{name:"N0120",ElectronicSignatureAddress:535947264,RAMAddressStart:603979776,RAMAddressEnd:604307456},
N0120Prototype:{displayed_name:"N0120",name:"N0120_PORTUGAL_PROTOTYPE_20210930",ElectronicSignatureAddress:535947264,RAMAddressStart:603979776,RAMAddressEnd:604307456}}

Y sont donc listés 4 modèles, dont 2 que tu connais déjà bien. Les 2 supplémentaires sont donc :
  • une NumWorks N0120
  • une NumWorks N0120 Portugal Prototype avec une date au 30 septembre 2021

De cela nous pouvons déjà faire 2 hypothèses :
  • soit la prochaine génération N0120 sera déclinée en 2 modèles différents, une NumWorks N0120 EX pour le Portugal, et une NumWorks N0120 peut-être un peu moins verrouillée pour le reste du monde
  • soit l'entrée supplémentaire comme son nom l'indique correspond simplement à un prototype non final envoyé au Portugal (la validation des modèles à autoriser aux examens nécessitant bien évidemment des tests plusieurs mois avant l'annonce qui vient de tomber), et il n'y aura bien qu'une seule NumWorks N0120 à la fin

Niveau spécifications, nous avons déjà une première bonne nouvelle à t'apprendre. Un simple calcul RAMAddressEnd-RAMAddressStart nous apprend en effet que nous n'avons plus 256 Kio de RAM, mais 320 Kio ! :bj:
Nous avons donc 64 Kio de RAM supplémentaire, et nous espérons qu'ils seront en grande partie alloués à l'augmentation du heap Python, voir accessoirement à celle de la mémoire de stockage même si ce problème est bien négligeable à côté du précédent.



Mais ce n'est pas tout. Les informations du script permettent de trouver des fichiers de données .json associés à 2 firmwares différents concernant chacune de ces NumWorks N0120 :
Code: Select all
{"id":76,"version":"16.3.5","patch_level":"5176779","device_model":{"id":6,"name":"N0120"},"size":3230445}
{"id":75,"version":"16.3.5","patch_level":"2181d13","device_model":{"id":5,"name":"N0120_PORTUGAL_PROTOTYPE_20210930"},"size":3230557}


Et il est alors possible d'accéder aux fichiers .dfu contenant les firmwares en question, et nous apportant quelques informations complémentaires :
Code: Select all
Element 0 : Address: 0x8000000 Size: 0xffc38 <internal>
Element 1 : Address: 0x903f0000 Size: 0x10000 <external>
Element 2 : Address: 0x907f0000 Size: 0x10000 <external>
Element 3 : Address: 0x90000000 Size: 0xfa6e8 <external>
Element 4 : Address: 0x90400000 Size: 0xfa6e8 <external>


Nous aurions donc toujours 8 Mio de mémoire Flash externe, mais la Flash interne au microcontrôleur serait ici plus grosse que sur le modèle précédent, non plus 64 Kio mais 1 Mio, soit 16 fois plus ! :bj:



Bref pour résumer, la NumWorks N0120 EX c'est donc :
  • un microcontrôleur avec 320 Kio de mémoire RAM et 1 Mio de mémoire Flash
  • 8 Mio de mémoire Flash externe

Reste encore un dernier mystère, à savoir le microcontrôleur en question et donc son processeur.

La question va rester en suspens car il y a deux approches qui pour le moment donne des résultats contradictoires.

Une recherche par spécifications (320 Kio de RAM + 1 Mio de Flash) par Lionel Debroux, nous amène à la série des STM32F7, et plus précisément aux STM32F745, STM32F746 ou STM32F756, modèles listés équipés de équipés de 320K de RAM et 1M de Flash sur certaines déclinaisons.

M4x1m3 a pour sa part procédé différemment, en décompilant les firmwares trouvés par RapidZapper. Les registres totalement incompatibles avec le STM32F730 de la NumWorks N0110 l'amènent à chercher ailleurs. Un microcontrôleur compatible serait selon lui le STM32H743, sauf que quelque chose cloche. Il n'a pas 320K de RAM mais 1M...

Nous continuons à creuser et t'en dirons davantage dès que possible.

Source : viewtopic.php?f=97&t=25503&start=20#p266790

Re: Découverte spécifications nouvelle NumWorks N0120 EX

Unread postPosted: 24 Feb 2022, 12:01
by Lionel Debroux
critor wrote:Mais ce n'est pas tout. Les informations du script permettent de trouver des fichiers de données .json associés à 2 firmwares différents concernant chacune de ces NumWorks N0120 :
Code: Select all
{"id":76,"version":"16.3.5","patch_level":"5176779","device_model":{"id":6,"name":"N0120"},"size":3230445}
{"id":75,"version":"16.3.5","patch_level":"2181d13","device_model":{"id":5,"name":"N0120_PORTUGAL_PROTOTYPE_20210930"},"size":3230557}

Des firmwares de 3 MB ?
Certes, je n'ai pas suivi depuis quelques temps l'évolution de la taille du firmware NumWorks, et je ne connais pas par coeur la taille de la dernière version en date. Néanmoins, j'ai l'impression que que cela représente une augmentation significative de taille: ça ne fait pas si longtemps que le firmware officiel remplissait tout juste le MB de Flash des N0100 ? En mettant bout à bout des updates comportant à la fois des informations pour la Flash interne (dont la validation de signature) et la Flash externe, pourquoi pas un transfert non compressé, et même un encodage base64 augmentant la taille de 8/6 environ, on n'arriverait pas à 3 MB.
Alors quoi ? Des infos partielles de debug auraient certainement été remarquées par M4x1m3, donc je n'y crois pas trop. Beaucoup d'asserts et de localisations dans le source + messages correspondants ? De nouvelles fonctionnalités ?

Re: Découverte spécifications nouvelle NumWorks N0120 EX

Unread postPosted: 24 Feb 2022, 12:04
by RapidZapper
Lionel Debroux wrote:
critor wrote:Mais ce n'est pas tout. Les informations du script permettent de trouver des fichiers de données .json associés à 2 firmwares différents concernant chacune de ces NumWorks N0120 :
Code: Select all
{"id":76,"version":"16.3.5","patch_level":"5176779","device_model":{"id":6,"name":"N0120"},"size":3230445}
{"id":75,"version":"16.3.5","patch_level":"2181d13","device_model":{"id":5,"name":"N0120_PORTUGAL_PROTOTYPE_20210930"},"size":3230557}

Des firmwares de 3 MB ?
Certes, je n'ai pas suivi depuis quelques temps l'évolution de la taille du firmware NumWorks, et je ne connais pas par coeur la taille de la dernière version en date. Néanmoins, j'ai l'impression que que cela représente une augmentation significative de taille: ça ne fait pas si longtemps que le firmware officiel remplissait tout juste le MB de Flash des N0100 ? En mettant bout à bout des updates comportant à la fois des informations pour la Flash interne (dont la validation de signature) et la Flash externe, pourquoi pas un transfert non compressé, et même un encodage base64 augmentant la taille de 8/6 environ, on n'arriverait pas à 3 MB.
Alors quoi ? Des infos partielles de debug auraient certainement été remarquées par M4x1m3, donc je n'y crois pas trop. Beaucoup d'asserts et de localisations dans le source + messages correspondants ? De nouvelles fonctionnalités ?


Le firmware découvert contient 2 userland soit le BL de 1Mb + 2x1Mb de userland

Rien de très nouveau en software

Re: Découverte spécifications nouvelle NumWorks N0120 EX

Unread postPosted: 24 Feb 2022, 12:06
by Lionel Debroux
Deux userland, voyez-vous ça. Alors ça s'explique, en effet.

Re: Découverte spécifications nouvelle NumWorks N0120 EX

Unread postPosted: 24 Feb 2022, 12:33
by cent20
Ne nous enflammons pas trop, imaginez si ses nouvelles spécifications ne soient pas exploitées pour ne pas créer une obsolescence trop rapide des anciens modèles…

J’ai quand même l’impression que l’on va attendre longtemps l’augmentation des tas python, et le stockage des scripts en flash pour en stocker plus que 32ko et ça le rend triste.

Après autant le fichier est un leurre et l’adressage est faux pour vous guider (vous ou les concurrents) sur une fausse piste, autant le nouveau CPU a 512 voir 1024 Ko de RAM 😍

Re: Découverte spécifications nouvelle NumWorks N0120 EX

Unread postPosted: 24 Feb 2022, 12:39
by critor
cent20 wrote:Après autant le fichier est un leurre et l’adressage est faux pour vous guider (vous ou les concurrents) sur une fausse piste, autant le nouveau CPU a 512 voir 1024 Ko de RAM 😍

Ce qui expliquerait la contradiction en fin d'article.
Ou alors c'est une erreur de copié-collé des spécifications du prototype envoyé au Portugal pour validation, et les spécifications finales vont légèrement différer, en mieux on espère.

Nous verrons bien , espérons que tu aies raison et que ce soit 512K de RAM ou plus.
Pour référence, tu avais mis combien dans ta liste au Père Noël NumWorks ? ;)

Re: Découverte spécifications nouvelle NumWorks N0120 EX

Unread postPosted: 24 Feb 2022, 12:59
by DoOmnimaga
Ça ne m'impressionne pas. La TI-82 Advanced Edition Python a 150 Ko de RAM utilisateur avec un langage qui permet des scripts de 3 Mo stockés dans l'archive. Va-t-il y avoir au moins moyen de stocker ses scripts python dans la Flash dans un futur proche?

Re: Découverte spécifications nouvelle NumWorks N0120 EX

Unread postPosted: 24 Feb 2022, 13:22
by critor
Et le processeur, ça t'impressionne ?
Si c'est le STM32H743, les spécifications annoncent 480 MHz.

De quoi peut-être rivaliser avec la regrettée HP Prime G2 avec ses 528 MHz qui n'a maintenant plus aucun avenir suite à l'ultime des trop nombreuses bêtises de HP, et qui n'aura donc tristement jamais pu être exploitée à son plein potentiel.
HP aurait mieux fait de vendre sa branche calculatrices à NumWorks plutôt qu'à ces incapables de chez Moravia, au moins ils en auraient fait quelque chose à la différence.

Re: Découverte spécifications nouvelle NumWorks N0120 EX

Unread postPosted: 24 Feb 2022, 14:26
by Lionel Debroux
Même si HP avait proposé à NumWorks d'acheter sa branche calculatrices, ce sur quoi je n'ai aucune information, NumWorks n'avait peut-être pas les moyens de réaliser cet achat ?

Même si la performance des Cortex-M des STM32 ne rivalise pas avec celle des Cortex-A, comme le processeur de la Prime, elle est en effet très supérieure à celle qu'offre l'eZ80 tel qu'il est mis en oeuvre sur les TI-eZ80, où la vitesse de la Flash le limite significativement, que ce soit sur les révisions matérielles < ou >= M.

Re: Découverte spécifications nouvelle NumWorks N0120 EX

Unread postPosted: 24 Feb 2022, 14:39
by jean-baptiste boric
critor wrote:De quoi peut-être rivaliser avec la regrettée HP Prime G2 avec ses 528 MHz qui n'a maintenant plus aucun avenir suite à l'ultime des trop nombreuses bêtises de HP, et qui n'aura donc tristement jamais pu être exploitée à son plein potentiel.


Le Cortex-M7 du STM32H7 de la NumWorks n'a que peu de points communs avec le Cortex-A7 du iMX6 ULL de la HP Prime G2. Comparer leurs fréquences sans contexte n'a que peu de sens. L'un est un micro-contrôleur optimisé pour la latence et la consommation électrique, l'autre est un SoC doté de caches d'instructions/données, d'une unité de calcul vectoriel NEON, capable de faire tourner Linux et des machines virtuelles.

Les calculatrices NumWorks n'ont pas vraiment besoin d'un MCU plus rapide pour l'usage qu'ils en font, ils ont retenu un STM32H7 probablement pour la RAM intégrée supplémentaire disponible sur cette série. Ils auraient à la place rajouté une puce SDRAM externe si c'était moins cher pour eux. Pour moi, le principal goulot d'étranglement sur la N0100/N0110 est la lenteur de leur framebuffer. Les calculatrices concurrentes ont un contrôleur d'affichage intégré et changer la couleur d'un pixel se résume à écrire en RAM alors que la calculatrice NumWorks doit envoyer des commandes à travers un bus i8080. C'est particulièrement notable avec des jeux vidéos où la fréquence de rafraîchissement s'effondre à moins d'optimiser les commandes de dessins.