Page 1 of 1

83 Premium CE 5.5 : 50K de scripts Python importables !

Unread postPosted: 12 May 2020, 13:33
by critor
1132511355Le fonctionnement matériel de ta TI-83 Premium CE Edition Python est absolument passionnant, du véritable travail d'horloger. :)
Elle renferme 3 puces essentielles :
  • un cœur principal JB-007-01 S7TM2-010 qui renferme entre autres le processeur eZ80 et sa mémoire RAM
  • une mémoire Flash externe Winbond 25Q32JVSIQ de 4 Mio de capacité, qui renferme :
    • le code d'amorçage (Boot) de 128 Kio
    • le système d'exploitation
    • un espace de stockage de 3 Mio de capacité qui accueille les applications ainsi que toutes les variables que tu places en mémoire d'archive
  • et un cœur secondaire Atmel ATSAMD21 dédié à l'application Python

10240L'étude du cœur secondaire Atmel avait déjà bien commencé du temps où il était proposé sur le module externe d'extension TI-Python pour l'ancien modèle TI-83 Premium CE. Il comporte :
  • un processeur 32 bits Cortex-M0+/ARMv6 cadencé à 48MHz
  • une mémoire Flash interne de 256 Kio
  • une mémoire SRAM de 32 Kio

La mémoire SRAM Atmel est utilisée :
  • d'une part pour l'exécution du firmware CircuitPython
  • d'autre part pour l'exécution de tes scripts Python, notamment à travers le tas (heap) et la pile (stack) comme évoqué récemment

Aujourd'hui nous nous intéressons à la mémoire Flash Atmel interne. Elle renferme
  • le firmware CircuitPython que nous venons de mentionner
  • et un espace de stockage destiné à accueillir les fichiers utilisés par le firmware ainsi que tes scripts Python importables, avec une capacité mesurée de 58,5 Kio du temps où on pouvait analyser le module TI-Python externe par connexion USB directe à un ordinateur

Bref, ce qu'il faut comprendre avec la TI-83 Premium CE Edition Python, c'est que même si tu peux stocker jusqu'à 3 Mio de scripts Python dans la mémoire Flash externe, ces derniers ne seront pas utilisables. L'application Python ne te permet en effet de lister, modifier, importer ou lancer directement que les seuls scripts présents dans la mémoire RAM associée au cœur principal eZ80, soit jusque dans les 150K si elle est bien vide.

Ensuite, lorsque tu accèdes à l'environnement Python, tous les scripts Python présents dans la mémoire RAM eZ80 (150K) sont copiés dans l'espace de stockage du cœur Atmel (58,5 Kio).

Comme ce dernier est de capacité inférieure, Texas Instruments avait par défaut fixé des limites pour éviter de l'épuiser. Tu avais droit jusqu'à présent à :
  • jusqu'à 80 fichiers de scripts Python différents
  • pour une taille globale de 40 Kio, soit très en-dessous des 58,5 Kio de capacité avec 55,5 Kio d'espace libre lorsque nous avions testé sur le module TI-Python externe
Si tu dépassais l'une des ces deux limites avec les seuls scripts Python présents en mémoire RAM eZ80, l'application Python refusait de démarrer et t'affichait alors l'écran d'erreur ci-contre.

Tu te devais alors soit de supprimer des scripts Python, soit d'en déplacer certains en mémoire d'archive. Un travail de sélection/jonglage pouvant être assez fastidieux.

Et bien bonne nouvelle pour toi avec la prochaine mise à jour 5.5, qui retardera nettement ces légers embêtements. :)

Les limites y sont en effet augmentées de 20% selon nos tests. Tu as désormais droit en mémoire RAM eZ80 de ta calculatrice à très exactement :
  • jusqu'à 100 fichiers de scripts Python différents :bj:
  • pour une taille globale de 50 Kio, bien plus proche cette fois-ci de l'espace libre estimé donc à 55,5 Kio sur le cœur Atmel :bj:
De quoi aller bien plus loin dans tes projets, merci TI ! :D

Re: 83 Premium CE 5.5 : 50K de scripts Python importables !

Unread postPosted: 12 May 2020, 13:59
by Bisam
C'est une bonne nouvelle de voir cette taille légèrement augmenter... mais franchement, je ne comprends pas pourquoi il est utile à l'exécution de conserver les scripts en RAM !
Le principe même du Python est de s'exécuter à la volée, donc, certes, il est nécessaire de stocker sur le tas des informations provenant des différents scripts... mais normalement, chaque script n'est exécuté et donc lu qu'une seule fois. Il est donc parfaitement inutile d'encombrer la RAM avec ces scripts. On pourrait même imaginer les lire 1 par 1 sans que cela soit gênant.

Un protocole permettant cette lecture script par script ou mieux encore un protocole permettant de lire des scripts directement depuis la mémoire d'archive aurait été bien plus utile qu'une mémoire RAM si petite pour stocker des informations non nécessaires (et même redondantes puisque copiées depuis un autre stockage).

Re: 83 Premium CE 5.5 : 50K de scripts Python importables !

Unread postPosted: 12 May 2020, 15:24
by critor
Je trouve ça dommage qu'il y ait obligation d'avoir les scripts en RAM pour pouvoir les lancer/importer.
Je parle bien évidemment dans le contexte de scripts que l'on n'a pas besoin d'éditer.

Cela encombre la petite RAM, alors qu'il y avait toute la place possible en Flash...

Après d'un autre côté, comme le coprocesseur Python ne pourrait dans l'absolu importer au mieux que 55K de scripts, TI s'est peut-être dit que les 150K de RAM étaient suffisants, qu'il n'y avait pas besoin de s'embêter à lui faire gérer la communication avec la Flash externe.

Re: 83 Premium CE 5.5 : 50K de scripts Python importables !

Unread postPosted: 12 May 2020, 15:39
by Bisam
En fait, je parlais de la RAM associée au coprocesseur Python. D'après moi, chaque script peut être lu séparément puis oublié et Python gère ensuite tout seul les objets créés par ces scripts.
Mais bon, je suis loin d'avoir les capacités techniques nécessaires pour tout comprendre à un si bas niveau : je peux me tromper.

Re: 83 Premium CE 5.5 : 50K de scripts Python importables !

Unread postPosted: 12 May 2020, 15:41
by critor
Certes.

Effectivement, tous les scripts Python de la RAM eZ80 sont copiés d'un coup au démarrage de l'environnement Python.
Si on les copiait un par un seulement lorsque nécessaire (importation explicitement demandée), il n'y aurait plus cette limitation.

Re: 83 Premium CE 5.5 : 50K de scripts Python importables !

Unread postPosted: 29 May 2020, 19:51
by DoOmnimaga
Vraiment dommage que les scripts doivent être en RAM pour être lancés. Alors que TI a enfin permis l'exécution de programmes TI-BASIC, ASM et C à partir de l'archive à partir de l'OS 5.3.1 je crois, le fait que les scripts python doivent être en RAM semble un peu une régression pour moi, surtout avec la suppression de l'ASM et du C.