π
<-
Chat plein-écran
[^]

News 2024
Mai (1)
Avril (1)
Mars (1)

News 2023
Août (4)
Juin (3)
Mai (2)
Avril (4)
Mars (2)

News 2022
Août (2)
Juin (4)
Mai (7)
Avril (9)
Mars (10)

News 2021
Août (7)
Juin (2)
Mai (6)
Avril (11)
Mars (10)

News 2020
Août (4)
Juillet (11)
Juin (6)
Mai (4)
Avril (8)
Mars (3)

News 2019
Août (1)
Juin (3)
Mai (5)
Avril (1)
Mars (2)

News 2018
Août (4)
Juin (5)
Mai (9)
Avril (13)
Mars (5)

News 2017
Août (4)

Performances, la NumWorks détrône la HP Prime ! :o

Nouveau messagede Admin » 09 Déc 2017, 19:07

Comme rappelé récemment dans l'épisode 19 de notre classement QCC de rentrée 2017, la HP Prime était depuis la rentrée 2013 la calculatrice graphique la plus rapide. Mais lors de la mise à jour de cet épisode suite à la sortie de la calculatrice NumWorks, nous remarquions que la NumWorks semblait la dépasser en performances (testées sur l'évaluation de programmes de calcul numérique).

Avec un processeur cadencé quatre fois moins vite, ARM Cortex-M4 à 100MHz pour la NumWorks contre ARM9 (ARMv5) à 400MHz pour la HP Prime (à moins que cette dernière information répandue sur Internet ne soit que la fréquence nominale et non la fréquence réelle ?) c'était assez surprenant. Nous ne pouvions exclure une erreur de mesure, les écarts ne faisant que quelques centièmes de seconde. En effet notre protocole de test utilisait le même programme pour tous les modèles, programme que l'on ne pouvait pas corser davantage à cause de limitations sur les modèles les plus faibles, et qui donc sur les meilleurs modèles terminait en moins d'une seconde, faisant ainsi perdre aux mesures en précision.

Aujourd'hui que le langage de programmation Python de la NumWorks n'est plus en version beta, et que la HP Prime gère aussi une forme de Python, tentons d'éclaircir un petit peu le mystère entourant les différences de performances entre ces deux modèles, et de les départager équitablement.

Nous allons cette fois-ci tester les performances avec un programme graphique. Reprenons le programme Mandelbrot inclus en exemple sur la NumWorks, et adaptons-le à l'identique pour la HP Prime. Nous ne dessinerons donc dans les deux cas que 320x222 pixels au lieu 320x240, puisque les écritures sur la barre de titre sont bloquées sur la NumWorks ce qui pourrait fausser la comparaison.

programme NumWorks en Python
(versions 1.2.0+)
programme HP Prime en simili-Python
(versions 12951+)
Code: Tout sélectionner
import kandinsky
def mandelbrot(W,H,N) :
for x in range(W):
  for y in range(H):
   z=complex(0,0)
   c=complex(2.7*x/(W-1)-2.1,-(1.87*y/(H-1)-.935))
   j=0
   while j<N and abs(z)<2:
    j=j+1
    z=z*z+c
   t=255*j/N
   col=kandinsky.color(int(t),int(.75*t),int(.25*t))
   kandinsky.set_pixel(x,y,col)
Code: Tout sélectionner
#cas
def fractal_python(W,H,N) :
local x,y,z,c,j,t,col
for x in range(W):
  for y in range(H):
   z=0
   c=2.7*x/(W-1)-2.1-i*(1.87*y/(H-1)-.935)
   j=0
   while j<N and abs(z)<2:
    j=j+1
    z=z*z+c
   t=255*j/N
   col=RGB(IP(t),IP(.75*t),IP(.25*t))
   PIXON_P(x,y,col)
FREEZE
WAIT(0)
#end


La NumWorks met seulement 1min26s à effectuer le tracer pendant que la HP Prime se traîne péniblement pendant 4min22s. On confirme donc, hélas, des performances très décevantes pour la HP Prime, le même programme mettant 3 fois plus de temps à allumer le même nombre de pixels. :'(

Notons que dans les deux cas, on peut voir à l’œil nu les pixels s'allumer progressivement de haut en bas sur chaque colonne, ce qui suggère bien un fonctionnement similaire des instructions graphiques, légitimant ainsi la comparaison.

Bien que les TI-Nspire disposent d'un Python non officiel, nous ne pouvons y exécuter exactement le même programme et c'est pour cela qu'elles sont absentes de ce test. En effet, les fonctions graphiques de l'évaluateur Python en question fonctionnent différemment et ne permettent pas d'écrire directement sur l'écran, obligeant à définir et écrire des zones hors écran (offscreen) qui seront remplies puis affichées d'un seul coup. Un très mauvais choix d'ailleurs dans le contexte scolaire de lycéens débutants d'imposer ce fonctionnement, alors qu'au contraire il faudrait leur laisser expérimenter l'écriture directe et en saisir les limites pour qu'il puissent alors comprendre l'intérêt de passer par une zone 'offscreen'. Pas possible non plus de choisir un autre langage interprété comme le TI-Basic, puisqu'il ne dispose pas de fonctions de sorties graphiques sur ces modèles. Le Lua n'est pas non plus une solution puisqu'il ne gère pas les nombres complexes d'une part, obligeant donc à passer par divers astuces risquant de fausser la comparaison, et d'autre part 'bufferise' les sorties écran, les temporisant donc pour les rendre effectives de façon groupée en fin d'exécution de la fonction de rafraîchissement on.paint(gc).



Pourquoi la HP Prime est-elle si lente ? Deux hypothèses :
  1. soit on incrimine le CAS, le langage simili-Python de la HP Prime n'étant disponible que dans le contexte CAS, et nous avions vu dans l'épisode en question que les calculs étaient nettement plus lents dans ce cadre
  2. soit on incrimine son évaluateur/traducteur Python

Pour valider ou infirmer cette dernière hypothèse, traduisons le même programme dans le langage interprété HPPPL CAS originel de la HP Prime :
Code: Tout sélectionner
#cas
fractal_cas(w,h,n)
BEGIN
local x,y,z,c,j,t,col
FOR x FROM 0 TO w-1 DO
  FOR y FROM 0 TO h-1 DO
   z:=0
   c:=2.7*x/(w-1)-2.1-i*(1.87*y/(h-1)-.935)
   j:=0
   WHILE j<N AND abs(z)<2 DO
    j:=j+1
    z:=z*z+c
   END;
   t:=255*j/N
   col=RGB(IP(t),IP(.75*t),IP(.25*t))
   PIXON_P(x,y,col)
  END;
END;
FREEZE
WAIT(0)
#end

[

Et bien c'est pire, la HP Prime passant de 4min22s à 4mins35s. Ce qui implique que l'écriture à la Python ne complexifie pas la chose, et le temps additionnel étant probablement dû à l'évaluation des lignes supplémentaires de fin de bloc qui sont omises en Python.



Ce serait donc la faute du CAS ? Voyons si nous pouvons valider cette hypothèse en réécrivant le même programme en langage interprété HPPPL non-CAS :
Code: Tout sélectionner
EXPORT fractal(w,h,n)
BEGIN
local x,y,z,c,j,t,col
FOR x FROM 0 TO w-1 DO
  FOR y FROM 0 TO h-1 DO
   z:=0
   c:=2.7*x/(w-1)-2.1-i*(1.87*y/(h-1)-.935)
   j:=0
   WHILE j<N AND abs(z)<2 DO
    j:=j+1
    z:=z*z+c
   END;
   t:=255*j/N
   col=RGB(IP(t),IP(.75*t),IP(.25*t))
   PIXON_P(x,y,col)
  END;
END;
FREEZE
WAIT(0)
#end


Bien, la HP Prime tombe cette fois-ci à seulement 2min24s, doublant presque ses performances. Le contexte CAS limite bien les performances même quand on ne fait pas appel à ses spécificités, et il est ainsi dommage que le langage simili-Python ne soit donc disponible que dans ce cadre, surtout quand il n'y a aucune intention de faire du calcul exact ou littéral.

Toutefois, 2min24s c'est quand même nettement plus lent que les 1min26s de la NumWorks. D'autres facteurs interviennent donc visiblement, et l'on peut valider la constatation de l'épisode 19.

Cela ne veut pas forcément dire que son processeur est plus puissant, mais en tous cas en terme de performances effectives et ce depuis la rentrée 2017, la meilleure calculatrice graphique est donc la NumWorks. :bj:
Lien vers le sujet sur le forum: Performances, la NumWorks détrône la HP Prime ! :o (Commentaires: 66)

Nouvel OS NumWorks 1.2.0 - Calcul exact+littéral et Python !

Nouveau messagede Admin » 05 Déc 2017, 14:28

9033Aujourd'hui sort le nouveau firmware 1.2.0 pour ta calculatrice NumWorks. Découvrons ensemble les toutes dernières nouveautés et améliorations.

Sommaire :
  1. Moteur de calcul exact…
  2. … et littéral ?
  3. Environnement de développement Python
  4. Conclusion


1) Moteur de calcul exact…Go to top

Comme déjà présenté sur le stand NumWorks aux journées APMEP à Nantes, la première chose qui saute aux yeux après l’installation du nouveau firmware, c’est la présence enfin d’un moteur de calcul exact dans l’application Calculs ; l’un des points essentiels qui manquaient face aux modèles concurrents de milieu de gamme TI-83 Premium CE et Casio Graph 35/75/90+E. :bj:

NumWorks ne manque pas d’y rajouter sa petite touche habituelle d’originalité, avec un affichage mixte profitant intelligemment de la définition de l’écran en 320x240 pixels pour y présenter les résultats à la fois en écriture exacte et décimale. Cela a certes l’avantage évident d’éviter à l’utilisateur des manipulations plus ou moins complexes pour basculer de l’une à l’autre, comme il devrait le faire sur les autres modèles. Mais cet affichage a également des effets positifs sur les compétences de l’utilisateur, ayant l’avantage de lier ici clairement ces formes comme deux représentations du même objet mathématique au lieu de les séparer, et de plus avec une formulation mathématique correcte avec le symbole environ; de quoi améliorer à la fois l’acquisition des compétences Représenter et Communiquer. :bj:

Accessoirement pour peut-être mieux optimiser l’affichage par rapport à cette nouveauté, notons que dans l’application Paramètres il est désormais possible de choisir le nombre maximum de chiffres significatifs affichés, par défaut 7. Mais notons bien que même si c’est un paramètre global, il ne s’appliquera en pratique qu’à l’application Calculs.

Le moteur de calcul exact utilisé semble à priori aussi performant que la concurrence de milieu de gamme, gérant de même les binômes de radicaux ainsi que les nombres imaginaires (Terminales S, STI2D et STL-SPCL). :bj:

Rappelons pour référence que les modèles de milieu de gamme concurrents TI-83 Premium CE et Casio Graph 35/75/90+E gèrent deux familles de résultats réels exacts :
  • $mathjax$\pm\frac{a\pi}{b}$mathjax$
    pour la trigonométrie bien évidemment
  • $mathjax$\frac{\pm a\sqrt{b} \pm c\sqrt{d}}{f}$mathjax$
    qui est une famille de nombres avec des propriétés aisément vérifiables par les processeurs légers, et couvrant l’essentiel des besoins des lycéens jusqu’en Première

Quelle n’est donc pas notre surprise en découvrant que le moteur de calcul exact intégré gère d’autres formes plus complexes, notamment les valeurs trigonométriques remarquables en
$mathjax$k\frac{\pi}{5}$mathjax$
,
$mathjax$k\frac{\pi}{8}$mathjax$
et
$mathjax$k\frac{\pi}{10}$mathjax$
avec k entier. Valeurs non gérées chez la concurrence en-dessous des modèles haut de gamme (du moins, pas sans des programmes additionnels qui seront de toutes façons détruits par le mode examen). :o

NumWorks aurait-il géré une liste de formes exactes un peu plus nombreuses ou générales que celles des moteurs exacts de milieu de gamme concurrents ?

En fait, il ne semble pas y avoir de limite selon nos tests. Pour tout calcul n’utilisant pas d’écriture décimale, aussi complexe soit-il, la calculatrice est désormais potentiellement capable de retourner une valeur exacte. En pratique, des conséquences fort sympathiques pour tous les élèves de séries générales et technologiques, avec un modèle de milieu de gamme enfin conforme aux programmes de Terminale qui ne font travailler quasiment que sur les fonctions logarithmique et exponentielle, dont les formes exactes qui en découlent n’étaient pas gérées par les modèles concurrents de milieu de gamme ! :bj:

En théorie, cela impliquerait que le fonctionnement interne du moteur utilise non pas une liste de formes prédéfinies, mais des arbres binaires de calculs, soit la base d’un moteur de calcul littéral. Et si en fait… :o


2) … et littéral ?Go to top

… et bingo, le nouveau moteur de calcul NumWorks ne fait pas que fonctionner comme un moteur de calcul littéral, il fait vraiment du calcul littéral ! :bj:

Il semble toutefois très limité, et ne saurait en rien être comparé avec les moteurs de calcul dits CAS intégrés aux modèles haut de gamme :
  • D’une part il ne sait rien faire d’autre que simplifier des expressions littérales. Pas de possibilité de préciser si l’on souhaite que la simplification se fasse par factorisation ou développement.
  • D’autre part, il n’y a eu aucun ajout de fonction utilisant ce moteur. Pas de possibilité donc contrairement aux modèles CAS de résoudre des équations, dériver, primitiver, calculer des limites, déterminer des ensembles de définition ou encore obtenir des tableaux d’étude de fonction comme sur HP Prime et Casio fx-CP400+E.

Une autre sérieuse limitation est que le moteur refuse bizarrement de travailler sur des expressions littérales contenant des inconnues nommées avec d’autres lettres que x. S’agirait-il d’un moteur de calcul littéral avec un alphabet à 1 lettre ?

En fait non. Après avoir écumé les touches et menus, on se rend compte qu’il s’agit d’un alphabet à 2 lettres, le moteur de calcul littéral fonctionnant avec les lettres minuscules x et n. En pratique, cela nous donne une fois de plus des conséquences très agréables au niveau lycée. Il sera par exemple très aisé pour les élèves d’interroger le moteur de calculs pour lui faire recracher nombre de formules du cours, pour les exponentielles par exemple, à un renommage de variables près.

Même si cela reste très limité par rapport aux modèles haut de gamme, ce calcul littéral extrêmement basique pourra parfaitement couvrir les besoins de nombre de lycéens de séries non scientifiques pour lesquels les derniers sujets de BAC fournissent de plus en plus les expressions littérales à utiliser au lieu de les demander. Pour les séries plus scientifiques, si il y aurait un point à rajouter en priorité pour nous, ce serait la dérivation.

La calculatrice NumWorks une fois mise à jour fait du calcul littéral. Mais avec toutes les limitations que nous venons de lister, on peut toutefois se demander si son moteur de calcul mérite ou pas l’appellation "moteur de calcul littéral" et si dans l’affirmative on peut pousser jusqu’à l’appellation de "CAS" (Computer Algebra System) ou pas, tout dépendant des définitions que l’on retient. Cette nuance est en effet essentielle car nombre d’examens/pays interdisent le CAS (Portugal, Pays-Bas, Baccalauréat International, plusieurs examens américains…), et ce serait plus que dommage que la NumWorks s'y fasse refuser…

Quoiqu’il en soit, après mise à jour la NumWorks devient bel et bien capable de faire du calcul littéral. Nous ne pouvons honnêtement qu’en tirer un bilan extrêmement positif. Pour la première fois en ce jour historique, le calcul littéral devient accessible sans programmes additionnels (qui de toutes façons seraient détruits par le mode examen) sous la barre psychologique des 100 € et donc avec un prix à seulement 2 chiffres, 80€ pour rappel, c'est une véritable Révolution ! :bj:


3) Environnement de développement Python :Go to top

L’application Python bénéficie pour sa part d’améliorations significatives présentées en avant-première au séminaire national d’Algorithmique au lycée le 20 novembre dernier, seule calculatrice à avoir l’honneur d’y être mentionnée d’ailleurs car seule calculatrice conforme aux évolutions du programme mises en oeuvre cette rentrée 2017 et auxquelles était dédié ce séminaire.

Jusqu’à présent l’éditeur de scripts Python de la NumWorks était en version beta, et était même jugé plutôt inutilisable en classe selon certains commentaires. De notre côté, nous l’avions toujours vu comme un aperçu certes limité - car probablement développé en vitesse - mais très encourageant, d’une fonctionnalité forcément destinée à évoluer rapidement. Un peu comme une démo jouable. Et voici aujourd’hui le grand jour. ;)

Oubliez le script unique à écraser et recommencer à chaque utilisation, l’application Python gère désormais plusieurs scripts *.py, que l’on peut librement rajouter, nommer, renommer et bien évidemment supprimer. Ils prendront alors la forme de modules pouvant être importés ou lancés directement (standalone). :bj:

Niveau éditeur nous avons aussi de belles améliorations avec une indentation automatique se déclenchant sur les retours à la ligne après saisie de toute instruction introduisant un bloc (boucles, conditionnelles…). On peut également remarquer que les espaces saisis en début de ligne sont désormais insérés et supprimés par paires. De quoi saisir plus rapidement du code Python respectant les conventions d’écriture et d’indentation (indentation avec 2 ou 4 espaces), tout en économisant la durée de vie de sa touche espace. ;)

Avec le nouveau bouton s’appelant console ou shell selon la langue ou via l’exécution directe d’un script (standalone), on a justement accès à une console de type REPL (Read Eval Print Loop). Notons qu’il est possible pour chaque script existant de choisir si il doit être importé automatiquement à l’ouverture de la console via le bouton ou pas, ce qui évitera d’avoir à ressaisir les mêmes commandes d’importation à chaque utilisation. Cette console est particulièrement aboutie, permettant même de remonter dans l’historique pour copier une commande. En cas de déclenchement d’une erreur, elle précise même le numéro de ligne l’ayant déclenchée, permettant enfin une correction rapide du code. Dommage toutefois que l'éditeur ne numérote pas les lignes, surtout en cas d'erreur dans un script conséquent.

Mais ce n’est pas tout. L’éditeur ainsi que la console disposent désormais d’une formidable aide à la saisie via la touche boîte à outils (toolbox). :D

On y dispose entre autres d’un catalogue listant alphabétiquement les fonctions disponibles, mais notamment en tête de liste tous caractères spéciaux et symboles utiles au langage Python qui n’avaient pas été inclus sur les touches clavier : :bj:
  • # pour les commentaires
  • % pour le reste d’une division euclidienne
  • \n pour les retours à la ligne dans des chaînes de caractères
  • \t pour les tabulations dans des chaînes de caractères
  • &, ^ et | pour les opérations bit à bit
Quant aux différentes fonctions suivant alphabétiquement ces caractères, on peut y accéder très rapidement en tapant leur première lettre au clavier. Cela manque toutefois d’intuitivité, puisqu’il faudra deviner qu’il faut taper manuellement
alpha
à chaque fois pour débloquer cette fonctionnalité.

On y trouve également des raccourcis pour créer rapidement des blocs d’instructions de boucles et conditionnelles, déclinés eux-mêmes en prime sous plusieurs modèles afin d’accélérer encore davantage leur saisie. :bj:

Enfin la boîte à outils permet de lister les modules disponibles intégrés, et donc de détailler et saisir rapidement les différentes fonctions qu’ils proposent. Outre le module de dessin kandinsky, on note l’ajout de deux nouveaux modules : math, ainsi que cmath pour les nombres imaginaires/complexes très utiles aux Terminales S, STI2D et STL-SPCL.

Profitons-en pour remarquer que toutes ces fonctions, qu’elles soient accédées par les modules ou par le catalogue, disposent d’une ligne explicative; une aide intégrée fort appréciable ! :bj:

Citons aussi la touche
var
qui, de façon complémentaire, permettra de lister les fonctions et variables globales existantes dans le contexte courant, c’est-à-dire définies dans les scripts importés et également dans le script courant si nous sommes dans l’éditeur.


Par défaut l’application est préchargée avec trois scripts d’exemples que l’on peut librement modifier :
  • factorial.py qui définit une fonction factorielle récursive
  • polynomial.py qui fournit une fonction permettant de récupérer en écriture décimale les racines réelles d’un polynôme du second degré (Première)
  • mandelbrot.py qui trace une fractale avec des paramètres légèrement différents de l’exemple de la dernière version, et constitue une réécriture intégrale en utilisant les fonctions et le module cmath.

Concernant la fractale, on peut toutefois bien évidemment modifier légèrement le programme pour lui redonner les mêmes paramètres que dans l’ancienne version et ainsi pouvoir comparer les performances :
version sans cmath
firmware 1.1.2
version avec cmath+fonction
firmware 1.2.0
Code: Tout sélectionner
import kandinsky
N=10
for x in range(320)
for y in range(222)
  zr=0
  zi=0
  cr=2.7*x/319-2.1
  ci=-1.87*y/221+0.935
  i=0
  while i<N and zr*zr+zi*zi<4
   i=i+1
   s=zr
   zr=zr*zr-zi*zi+cr
   zi=2*s*zi+ci
  rgb=int(255*i/N)
  col=kandinsky.color(int(rgb),int(.75*rgb),int(.25*rgb))
  kandinsky.set_pixel(x,y,col)
Code: Tout sélectionner
import kandinsky
def mandelbrot(N) :
for x in range(320):
  for y in range(222):
   z=complex(0,0)
   c=complex(2.7*x/319-2.1,-1.87*y/221+0.935)
   i=0
   while i < N and abs(z) < 2:
    j=j+1
    z=z*z+c
   rgb=int(255*i/N)
   col=kandinsky.color(int(rgb),int(.75*rgb),int(.25*rgb))
   kandinsky.set_pixel(x,y,col)

Appel avec mandelbrot(10)


On note un gain en performances significatif de près de 10%, le temps d’exécution passant de 2min30 à 2min17 ! :bj:



Conclusion :Go to top

Finalement une très belle mise à jour. Notre classement QCC de rentrée 2017 qui classait la calculatrice NumWorks proche de l’entrée de gamme TI-82 Advanced n’est clairement plus d’actualité. La calculatrice a su évoluer très rapidement, et se doter d’une part d’un moteur de calcul littéral qui n’est plus l’apanage des modèles avec un prix à 3 chiffres. Le constructeur joue ainsi un rôle d’agitateur nous semblant aller dans le sens de l’intérêt des acheteurs et donc des lycéens français. D’autre part, la calculatrice a su se doter d’un environnement de développement Python complet, en conformité avec les nouveaux programmes de Seconde en vigueur depuis cette rentrée 2017. Si nous ne sommes clairement plus dans des fonctionnalités d’entrée de gamme et que le prix de milieu de gamme est désormais bien positionné, on peut toutefois se demander si la calculatrice NumWorks ne va pas finir par nous offrir au même prix des fonctionnalités haut de gamme, si bien sûr le développement continue au même rythme. :bj:

Par rapport au Python, il nous semble toutefois important de préciser qu’il manque encore un point essentiel qui empêchera à notre avis la machine d’être adoptée sérieusement pour son enseignement au lycée. L’activation du mode examen détruira en effet définitivement toutes les données saisies, y compris tous les scripts Python. Mauvaise surprise par exemple de découvrir après coup que le mode examen exigé pour le DS de Physique-Chimie aura détruit toute trace du projet d’ICN/ISN/TPE, ou du devoir/DM de Maths à achever pour le lendemain.
Précisons accessoirement que les scripts d’exemples préchargés n’échappent pas à cet effacement. polynomial.py qui aurait pu être très utile pour les élèves de Première disparaîtra donc également les jours d’évaluation. Petit détail, les scripts d’exemples ne réapparaîtront pas automatiquement après une désactivation normale du mode examen. Il faudra utiliser le bouton reset au dos de la machine.
Il faudrait selon nous pouvoir disposer assez rapidement d’une connectivité permettant d’importer et exporter à loisir ses scripts Python. Ce serait également le moyen en classe de s’échanger de proche en proche un support de travail fourni par l’enseignant, que ce soit le script du jour à étudier/modifier, ou de mini bibliothèques destinées à fournir quelques fonctions utiles clés en main pour construire les projets par dessus.

A très bientôt dans le fil d'actualités NumWorks on espère ! ;)



Liens :
Lien vers le sujet sur le forum: Nouvel OS NumWorks 1.2.0 - Calcul exact+littéral et Python ! (Commentaires: 81)

Dumpe et reflashe facilement ta NumWorks depuis Chrome !

Nouveau messagede Admin » 27 Nov 2017, 22:52

Pour mettre à jour ta calculatrice NumWorks tu avais jusqu'à présent deux solutions :
  • visiter la page du Workshop NumWorks où tout se déroulait automatiquement dans ton navigateur Internet sans te demander ton avis
  • installer le SDK où tu pouvais alors librement compiler et/ou spécifier le firmware à programmer
Si tu souhaitais reflasher ta calculatrice NumWorks avec le firmware de ton choix, ben justement pas le choix, tu te devais d'installer le SDK. SDK dont l'installation n'est pas triviale de base, et génère en prime quelques difficultés additionnelles selon le système d'exploitation de ton ordinateur...

Mais depuis la semaine dernière, NumWorks a changé le processus de mise à jour pour utiliser l'API "WebUSB" avec le navigateur Google Chrome. Pour cela, la page de mise à jour diffuse pour Windows un pilote DFU (Device Firmware Upgrade), là encore un standard... ;) Sur macOS et Linux, pas besoin de pilote additionnel :)
Ce qui implique que ta calculatrice NumWorks peut désormais être reprogrammée par n'importe quel outil tiers prévu pour ce standard ! Si si, pas besoin d'attendre le bon vouloir du constructeur comme sur d'autres modèles, ça c'est de l'ouverture ! :bj:


On peut par exemple utiliser (sous le navigateur Google Chrome) la page de démo dfu-util du projet Github webdfu :
  • Si tu es sur Windows, il te suffit d'installer le pilote DFU si ce n'est pas encore fait
    Pour Linux, c'est un fichier à mettre dans /etc/udev/rules.d, et sur macOS, il n'y a rien à faire :)
  • Connecte alors ta calculatrice en USB.
  • Enfonce et relâche son bouton reset à l'aide d'une pointe de porte-mine par exemple.
  • Si tu as tout fait correctement, cliquer sur le bouton Connect de la page en question te fera apparaître un périphérique STM32 BOOTLOADER qu'il te suffit de sélectionner et valider.
  • Te seront alors listées les interfaces DFU disponibles pour ce périphérique, et c'est l'interface Internal Flash qui nous intéresse aujourd'hui, à sélectionner et valider.


Une fois tout ceci fait, tu peux enfin librement sélectionner l'image firmware de ton choix parmi tes fichiers et la programmer sur ta calculatrice à l'aide du bouton Download. :bj:

Et surprise, tu trouveras même un peu plus bas un bouton Upload qui inversement te permettra de récupérer une image du firmware actuellement installé sur ta calculatrice ! :bj:
De quoi peut-être récupérer et archiver de vieilles versions avant de les écraser avec une mise à jour, ou encore pour les étudier. :)
Nous venons par exemple de sauvegarder correctement la version 1.1.2 qui n'est plus distribuée par le site officiel, et comme prévu on récupère bien 1Mio de code.



Téléchargement : pilote (Windows) DFU pour NumWorks (pas besoin sur macOS ou Linux)
Lien : https://devanlai.github.io/webdfu/dfu-util/
Lien vers le sujet sur le forum: Dumpe et reflashe facilement ta NumWorks depuis Chrome ! (Commentaires: 10)

Mise à jour NumWorks simplifiée et sur Linux, grâce à WebUSB

Nouveau messagede Admin » 23 Nov 2017, 21:27

Pour mettre à jour ta calculatrice NumWorks tu avais jusqu'à présent deux solutions :
  • installer le SDK où tu pouvais alors librement compiler et/ou spécifier le firmware à programmer
  • visiter la page du Workshop NumWorks où tout se déroule automatiquement dans ton navigateur Internet, comme pour la mise à jour du TI-Innovator de Texas Instruments.
    La première fois, il te suffisait d'installation le bridge fourni.
Le SDK n'étant pas forcément aisé à installer sur tous les systèmes, la méthode usuelle était celle du Workshop.


Toutefois, le bridge du Workshop n'était fourni que pour Windows et macOS - cela ne fonctionnait en effet pas sur Linux.


Aujourd'hui, NumWorks vient de finaliser et mettre en ligne une refonte complète du Workshop (qui passe d'ailleurs en HTTPS). Désormais, le code de la page utilise l'API "WebUSB" non spécifique à un système d'exploitation. En théorie, cela peut donc marcher partout, et c'est notamment le cas pour Linux, du moment que l'on utilise Google Chrome (v61+). :bj:

Pourquoi Chrome, certains se demanderont ? Parce qu'à l'heure actuelle, c'est le seul navigateur pour le moment à supporter WebUSB :P
(Bon, OK, Opera aussi est censé fonctionner, mais c'est parce qu'il utilise le moteur de Chrome :))


Sous Windows, précisons que la nouvelle méthode impliquera à la première utilisation d'installer le pilote DFU (Device Firmware Upgrade) fourni par la page.
Sur Linux, un petit fichier (pour autoriser la communication) à enregistrer sera aussi fourni, mais comme sur macOS, pas de logiciel à installer !


Sinon, quelqu'un se dévoue pour tester une mise-à-jour à partir de son appareil Android ? voire d'un Chromebook (Edit: ça marche sur Chromebooks !) :)


Lien : https://workshop.numworks.com
Source : https://twitter.com/numworks/status/933719555045842944 (Edit: puis https://www.numworks.com/blog/webusb-firmware-update/ )
Lien vers le sujet sur le forum: Mise à jour NumWorks simplifiée et sur Linux, grâce à WebUSB (Commentaires: 19)

Sortie firmware NumWorks 1.1.3

Nouveau messagede Admin » 04 Oct 2017, 15:28

8861Aujourd'hui sort le nouveau firmware 1.1.3 pour ta calculatrice NumWorks.

8862Au menu des nouveautés retraçables dans l'historique du code source :
  • Ajout de l'écart-type échantillon dans l'application Statistiques.
    Cet écart-type est calculé différemment de celui vu en Mathématiques en Première, mais est utilisé en Physique-Chimie, et en Mathématiques dans l'enseignement secondaire d'autres pays. Il est ici présent à part en toute fin de liste, ce qui devrait éviter des confusions regrettables aux élèves de Première. La NumWorks tend ainsi à s'adapter aux besoins du monde entier. ;)
    88658864
  • La taille de la colonne x/n dans le tableau de valeurs des applications Fonctions/Suites a été réduite pour pouvoir lire les valeurs de trois colonnes sur un même écran sans aucune besoin de faire défiler horizontalement.
    8863
  • Correction de quelques résultats undef sur les nombres complexes.
  • Ajout des symboles "partie entière" et "plafond".
  • Insertion automatique de ans avant sto.
  • Raccourci shift droite ou shift gauche déplace le curseur à la fin ou au début de la ligne de texte.
  • Meilleur algorithme pour l'intégrale numérique.
  • Correction du comportement de la touche
    x,n,t
    dans sum, product, diff et int.
  • Lorsque le mode alpha est verrouillé, l'appui sur
    shift
    permet de basculer entre minuscules et majuscules.



Profitons-en pour remercier les contributeurs ayant rendu cette version possible : Ian Abbot, Adrien Bertrand, TJ Horner, Damien Nicolet et Jacob Young.



Pour installer cette version, il te suffit de suivre les instructions sur le lien ci-dessous.



Lien : http://workshop.numworks.com
Lien vers le sujet sur le forum: Sortie firmware NumWorks 1.1.3 (Commentaires: 5)

Challenge NumWorks++ | Flash chip hardware mod

Nouveau messagede Lionel Debroux » 01 Oct 2017, 17:36


Objectif :
8667Réussir à upgrader matériellement sa calculatrice NumWorks pour la doter d'une mémoire Flash externe à l'emplacement prévu pour sur la carte mère.

Cet emplacement, c'est le "U7" sur les schémas. On peut le voir sur la photo ci-contre, à gauche.
Et même en vidéo, avec un chip de flash : :P
Show/Hide spoilerAfficher/Masquer le spoiler


Officiellement, ce U7 est prévu pour un AT25SF641, "64-Mbit, 2.7V Minimum SPI Serial Flash Memory with Dual I/O, Quad I/O and QPI Support".
Cependant, il semble possible d'utiliser une Flash NOR similaire (même boîtier SOIC-8, même pin layout, même tension d’alimentation, consommations typiques / pic et timings similaires) de 64 ou 128 Mbits (8 ou 16 MB).
Les mémoires Flash NOR QSPI de 256 Mbits et plus utilisent souvent d’autres boîtiers, comme SOIC-16 ou WSON-8, nécessitant une adaptation matérielle, et sont donc plus difficiles à intégrer par des utilisateurs moins expérimentés/outillés.

Il est nettement préférable de coopérer avec les autres développeurs qui s’intéressent à réaliser la même opération pour accélérer le processus… et également de ne pas interférer, voire de collaborer, avec NumWorks.
Goal :
8667Make a successful hardware upgrade of your NumWorks calculator, adding an external Flash memory chip onto the suitable location of the motherboard.

This location is labeled "U7" on the schematics). You can see it in this photo, on the left side.
And even in this official video, with a Flash chip: :P
Show/Hide spoilerAfficher/Masquer le spoiler


The official purpose of that location on the motherboard is to house a AT25SF641 chip : "64-Mbit, 2.7V Minimum SPI Serial Flash Memory with Dual I/O, Quad I/O and QPI Support".
However, using a similar chip (same SOIC-8 package, same pin layout, same supply voltage, similar typical / peak power consumptions) providing 64 or 128 Mbits (8 or 16 MB) of NOR Flash memory. QSPI NOR Flash memories of capacity larger than or equal to 256 Mbits often use different packages, e.g. SOIC-16 or WSON-8, requiring some kind of hardware adaptation, and therefore are harder for users with lower skills or worse tooling to integrate.

Collaborating with fellow developers who have the same aim is highly desirable to proceed faster… as is lack of interference with, or even collaboration with, NumWorks.



Ce qu'il faut faire :
Partie matérielle :
Souder le chip de Flash, 8 plots au pas de 1.27mm (1/20”, 50 mils). C’est bien sûr plus difficile que de souder du matériel au pas de 2.54mm ou 2mm, mais reste accessible. Comme toujours, il ne faut pas trop chauffer le chip et le PCB.
Note additionnelle: il est possible que l’ajout du chip ait un impact sur l'alimentation globale sur la carte mère. Peut-être faut-il s'attendre à des complications à ce niveau là ?

Partie logicielle :
  • Ajouter (éventuellement récupérer et adapter) dans l’OS NumWorks un framework et des drivers pour des chips externes de Flash
    Voir la datasheet du chip ciblé. Au minimum, le framework d’accès bas niveau à la Flash externe devrait être prévu pour sélectionner un chip de Flash parmi plusieurs à la compilation, mais ça serait encore mieux si on complétait (les deux ne sont pas mutuellement exclusifs) ceci par une sélection dynamique / validation au runtime, basée sur les données CFI;
  • Prouver que le chip de Flash est utilisable et utilisé
    1ère étape : fournir une démonstration simple, vraisemblablement assez rapide à développer, de votre choix. Une des possibilités est d’effacer une partie de la mémoire externe, puis d’y écrire une application embarquée dans le firmware mais indépendante du reste du firmware, ceci lors du démarrage de l’OS (le premier, ou à chaque fois). Un exemple d’application pourrait être un petit jeu avec sauvegarde des paramètres et/ou highscores.
    2ème étape : fournir une démonstration plus complexe: embarquer dans l’OS une application destinée à s’exécuter en mémoire externe qui dépend du code (fonctions de calcul flottant, etc.) de l’OS en mémoire interne. Ceci nécessite du travail sur le système de build et probablement sur certains aspects de l’OS lui-même. Une des applications les plus difficiles à déporter est probablement l'application Python.
What you need to do:
In the hardware area:
Solder the Flash chip, 8 pins with 1.27mm (1/20”, 50 mils) spacing. Of course, it’s harder than soldering hardware with 2.54mm or 2mm spacing, but it remains reasonably easy. As usual, excessive heating of the chip and the PCB is a bad thing to do.
Additional note: the addition of a chip might impact the global power supply chain on the motherboard. Maybe some issues are to be expected in that area ?

In the software area:
  • Add (possibly by borrowing and modifying) a framework and drivers for external Flash chips to NumWorks’ OS
    See the targeted chip’s datasheet. At a minimum, the framework for low-level access to an external Flash memory should be designed to allow selecting a single Flash chip from a set at compile time, but it would be even better if compile-time selection were complemented (they’re not mutually exclusive) by runtime selection / validation of the chip, based on CFI data;
  • Prove that the Flash memory chip is usable and being used
    1st step : build a simple showcase of your choice, whose development should be relatively quick. One of the options is to erase a portion of the external memory, then write an application embedded into the main firmware but independent from it, when the OS boots (for the first time, or every time). For instance, a small game which saves configuration and/or highscores.
    2nd step : build a more complex showcase: embed into the OS an application designed to execute from external memory, depending from code (e.g. floating-point functions) from the OS in internal memory. This needs some work on the build system and probably the OS itself. The Python application is probably the hardest to move.

Challenge additionnel niveau software :
L’étape suivante, encore plus difficile, mais beaucoup plus utile, est de coder une méthode générique de transfert de firmware vers la mémoire Flash externe. C’est utile pour gérer plusieurs applications en mémoire externe (c’est une autre étape, mais pas très différente de la gestion d’une seule application en mémoire externe), et nécessaire si on veut pouvoir utiliser plus de code+données que ce qui peut rentrer en mémoire interne, comme le PoC de portage NumWorks réalisé par Bernard Parisse sur le simulateur NumWorks.

Quelques ressources et informations:
Additional software challenge :
The next step, which is even harder but much more useful, is to provide a generic way to transfer firmware to external Flash memory. This is useful to handle multiple applications in external memory (another step, but not that different from handling a single application in external memory), and a prerequisite for using of an amount of code+data too large to fit into the internal memory, such as the NumWorks Giac port PoC performed by Bernard Parisse on the NumWorks simulator.

Several resources and pieces of information:
Show/Hide spoilerAfficher/Masquer le spoiler
  • Le boot code du STM32F412VG, qui s’occupe du transfert du firmware à travers USB en utilisant le protocole DFU, ne semble pas gérer le flashage d’une mémoire externe, cf. AN2606 “STM32 microcontroller system memory boot mode”. C’est au demeurant compréhensible, parce qu’il y a une grande variété de chips de mémoire externe, disposant de jeux de commandes variés, et qu’il faudrait donner à l’utilisateur le moyen de modifier ce bootloader pour ajouter le support de ses chips…
  • AN4852 “Programming an external Flash memory using the UART bootloader built-in STM32 microcontrollers” : http://www.st.com/content/ccc/resource/ ... 281415.pdf
    Logiciel correspondant à cette AN :
    http://www.st.com/en/embedded-software/ ... tboot.html. Protocole utilisé: AN3155.
  • Autres logiciels pour STM32, dont des stacks USB :
    http://www.st.com/en/embedded-software/ ... tware.html.

Au pire, il est toujours possible de modifier/faire et utiliser un firmware spécial pour la mémoire interne capable de flasher la mémoire externe, qui s’utiliserait de la façon suivante:
  • en utilisant le bootloader ST, transférer par DFU le FW spécial de flashage de la mémoire externe, comme les autres FW pour mémoire interne;
  • en utilisant le FW spécial, transférer par un certain protocole, logiquement DFU, les données pour la mémoire externe et les écrire au fur et à mesure;
  • en utilisant de nouveau le bootloader ST, transférer par DFU vers la mémoire interne la partie principale du FW NumWorks…
Cette capacité de flashage de la mémoire externe à travers DFU pourrait être intégrée au firmware standard, et avoir une stack USB intégrée au firmware standard serait de toute façon une bonne idée pour le long terme, mais c’est plus de travail.
Show/Hide spoilerAfficher/Masquer le spoiler
  • The STM32F412VG’s boot code, which handles firmware transfer through USB using the DFU protocol, doesn’t seem to handle flashing an external memory chip, see AN2606 “STM32 microcontroller system memory boot mode”. This is understandable, given that there’s a huge variety of external memory chips with different command sets, and therefore, users would need a way to modify the bootloader in order to add support for the chips they want to target…
  • AN4852 “Programming an external Flash memory using the UART bootloader built-in STM32 microcontrollers” : http://www.st.com/content/ccc/resource/ ... 281415.pdf
    The software corresponding to this AN is:
    http://www.st.com/en/embedded-software/ ... tboot.html. The protocol used is described in AN3155.
  • Other pieces of software for the STM32 family, among which are USB stacks:
    http://www.st.com/en/embedded-software/ ... tware.html.
In the worst case, one can modify/create and use a special firmware suitable for internal memory, able to reflash external memory. The usage flow would be as follows:
  • using ST’s bootloader to make a DFU transfer of the special FW for reflashing the external memory, just like other firmwares suitable for internal memory;
  • using the special firmware to make a (probably DFU) transfer of the data to be written into external memory, and write these data blocks the fly;
  • using ST’s bootloader again to make a DFU transfer of the main part of the NumWorks firmware to internal memory…
The ability to flash external memory through DFU could be integrated into the standard firmware, and integrating an USB stack to the standard firmware would be a good thing for the longer term anyway, but it’s more work.



Participation de TI-Planet/UPECS :
Achat + livraison de 2 chips de Flash (un 8 Mo, un 16 Mo avec les mêmes tension d’alimentation, consommation, timings, pas de bloc de boot) à ceux qui voudraient participer, dans la limite des stocks :
Si vous avez la capacité de réaliser des adaptations matérielles, vous pouvez utiliser par exemple des W25Q257JV (256 Mbits) et W25Q512JV (512 Mbits, consommation un peu plus élevée) dont les boîtiers WSON-8 ont le même pinout que le SOIC-8 du W25Q128JV et dont les boîtiers SOIC-16 sont plus faciles à souder que les boîtiers WSON-8, mais vous devrez vous débrouiller pour les acheter :)


Lots à gagner :
Si vous réussissez, vous vous aurez fait votre propre cadeau: une "NumWorks++"... :P Mais, on peut aller un peu plus loin :
  • Bien entendu des news à l'honneur du grand bidouilleur ou de l’équipe de grands bidouilleurs, et des possibilités rendues disponibles
  • Compte(s) Premium TI-Planet
  • Stickers TI-Planet et/ou autres goodies


Vous-êtes intéressé par le challenge et souhaitez participer ? Répondez au topic et/ou envoyez un court e-mail de présentation à info@tiplanet.org :)
What TI-Planet/UPECS takes care of :
We'll buy and ship 2 flash chips (one of 8 MB, and one of 16 MB with the same voltage, consumption, timings, lack of a boot block) to those willing to participate, as long as our supplies last:
If you can make hardware adaptations, you can use for instance W25Q257JV (256 Mbits) and W25Q512JV (512 Mbits, higher power consumption) chips whose WSON-8 packages have the same même pinout as the W25Q128JV’s SOIC-8 and whose SOIC-16 packages are easier to solder onto an adapter PCB than WSON-8 packages, but you’re on your own :)


Prizes :
If you succeed, you will have made yourself you own gift: a "NumWorks++"… :P But, we can go a little further:
  • Of course, news articles about the great [team of] hacker(s) and the possibilities made available
  • Premium TI-Planet account(s)
  • TI-Planet stickers and/or other goodies


If you're interested in the challenge and would you like to participate, reply to the topic and/or drop a short introduction e-mail to info@tiplanet.org :)


News rédigée par / written by Lionel & Adriweb.
Lien vers le sujet sur le forum: Challenge NumWorks++ | Flash chip hardware mod (Commentaires: 132)

1er programme communautaire NumWorks : fractales de Julia

Nouveau messagede Admin » 25 Sep 2017, 17:11

8684Après le premier fork de firmware et la première application tierce, voici aujourd'hui la publication du premier programme Python communautaire pour la calculatrice NumWorks.

Signé loupiot, il s'agit d'une extension du générateur de fractale Mandelbrot venant comme exemple avec la machine, permettant maintenant de générer d'autres fractales de l'ensemble de Julia :



Rappelons que comme la calculatrice NumWorks ne dispose pas à ce jour d'un protocole de transfert de données, la seule façon de charger ce programme sera de recopier à la main son code source lié ci-dessous.



Code : viewtopic.php?f=100&t=20533
Lien vers le sujet sur le forum: 1er programme communautaire NumWorks : fractales de Julia (Commentaires: 0)

1ère application tierce-partie sur calculatrice NumWorks !

Nouveau messagede Admin » 11 Sep 2017, 20:17

8687Jean-Baptiste Boric, qui s'était déjà illustré sur HP Prime avec la création d'un firmware tiers, s'est depuis intéressé à la calculatrice NumWorks et à ses 8 applications intégrées.

Il vient ainsi de nous signer la semaine dernière la toute première application non officielle.

En soit rien de bien intéressant, un simple Hello World, mais c'est l'exploit qui importe. Tu n'es pas satisfait(e) des 8 applications intégrées ? Il te suffira d'en rajouter puisque c'est désormais possible ! :bj:

Toutefois en pratique, les choses ne sont pas aussi simples. La calculatrice NumWorks ne dispose pas à ce jour d'un protocole de transfert d'applications, ni même d'une gestion des applications en mémoire. La seule façon de rajouter ou supprimer une application non officielle sera à date de recompiler intégralement le firmware. :(




Source : https://github.com/boricj/numworks-hello-world via https://tiplanet.org/forum/viewtopic.php?f=97&t=20413&start=140#p221260
Lien vers le sujet sur le forum: 1ère application tierce-partie sur calculatrice NumWorks ! (Commentaires: 0)

-
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.
1032 utilisateurs:
>945 invités
>81 membres
>6 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)