π
<-
Chat plein-écran
[^]

Correctif TI-Python flottants + complexes sur Trinket M0

:32ti73: :32ti73e: :32ti73e2: :32ti76f: :32ti80: :32ti81: :32ti82: :32ti85: :32ti86: :32ti82s: :32ti82sf: :32ti82sfn: :32ti83: :32ti83p: :32ti83pb: :32ti83pr: :32ti83pfr: :32ti83pse: :32ti84p: :32ti84pse: :32ti84ppse: :32ti84pfr: :32ti84pcse: :32ti83pfrusb: :32ti82p: :32ti82a: :32ti84pce: :32ti83pce:

Re: Correctif TI-Python flottants + complexes sur Trinket M0

Message non lude Lionel Debroux » 23 Fév 2019, 22:05

Un petit rebase sur le dernier code d'upstream, ce qui permet de supprimer quelques hacks que j'ai dû faire. Pas d'autres changements. Mon repo https://github.com/debrouxl/circuitpython est à jour :)

* branche master: DPFP + cmath + fonctions spéciales maths + LONGLONG longint + storage + os:
Code: Tout sélectionner
LINK build-trinket_m0/firmware.elf

864 bytes free in flash out of 188416 bytes ( 184.0 kb ).
26652 bytes free in ram for stack out of 32768 bytes ( 32.0 kb ).

Create build-trinket_m0/firmware.bin
Create build-trinket_m0/firmware.uf2
Converting to uf2, output size: 375296, start address: 0x2000
Wrote 375296 bytes to build-trinket_m0/firmware.uf2.


* branche master2: DPFP + cmath + fonctions spéciales maths + MPZ longint:
Code: Tout sélectionner
LINK build-trinket_m0/firmware.elf

272 bytes free in flash out of 188416 bytes ( 184.0 kb ).
26760 bytes free in ram for stack out of 32768 bytes ( 32.0 kb ).

Create build-trinket_m0/firmware.bin
Create build-trinket_m0/firmware.uf2
Converting to uf2, output size: 376320, start address: 0x2000
Wrote 376320 bytes to build-trinket_m0/firmware.uf2.
Fichiers joints
circuitpython_trinketm0_dpfp_mpzlongint_20190223_2138_debrouxl.tar.bz2
Version avec entiers longs longs, mais pas io, os et storage
(271.82 Kio) Téléchargé 19 fois
circuitpython_trinketm0_dpfp_longlonglongint_20190223_2142_debrouxl.tar.bz2
Version avec entiers longs moyens, os, storage
(281.87 Kio) Téléchargé 17 fois
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxModo.G
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 5.5%
 
Messages: 6411
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: -
GitHub: debrouxl

Re: Correctif TI-Python flottants + complexes sur Trinket M0

Message non lude Lionel Debroux » 18 Mar 2019, 22:42

Encore un petit rebase sur le dernier code d'upstream, légèrement postérieur à 4.0.0-beta.5 ( b4b8ffa0e23a276f20aa8f9d689da420a71a4ab2 ). Comme d'habitude, mon repo https://github.com/debrouxl/circuitpython est à jour. Pour une fois, je n'ai pas eu à résoudre de conflits... c'est appréciable :)

Un petit changement depuis la dernière fois: comme des bugfixes dans le code upstream ont augmenté la taille de plusieurs centaines d'octets, j'ai dû désactiver MICROPY_PY_BUILTINS_STR_SPLITLINES, mais la taille du build MPZ longint est encore plus proche de la limite que la fois précédente...

* branche master: DPFP + cmath + fonctions spéciales maths + LONGLONG longint + storage + os:
Code: Tout sélectionner
LINK build-trinket_m0/firmware.elf

772 bytes free in flash out of 188416 bytes ( 184.0 kb ).
26652 bytes free in ram for stack out of 32768 bytes ( 32.0 kb ).

Create build-trinket_m0/firmware.bin
Create build-trinket_m0/firmware.uf2
Converting to uf2, output size: 375296, start address: 0x2000
Wrote 375296 bytes to build-trinket_m0/firmware.uf2.


* branche master2: DPFP + cmath + fonctions spéciales maths + MPZ longint:
Code: Tout sélectionner
LINK build-trinket_m0/firmware.elf

180 bytes free in flash out of 188416 bytes ( 184.0 kb ).
26760 bytes free in ram for stack out of 32768 bytes ( 32.0 kb ).

Create build-trinket_m0/firmware.bin
Create build-trinket_m0/firmware.uf2
Converting to uf2, output size: 376832, start address: 0x2000
Wrote 376832 bytes to build-trinket_m0/firmware.uf2.
Fichiers joints
circuitpython_trinketm0_dpfp_mpzlongint_20190318_2236_debrouxl.tar.bz2
Version avec entiers longs longs, mais pas io, os et storage
(271.7 Kio) Téléchargé 19 fois
circuitpython_trinketm0_dpfp_longlonglongint_20190318_2235_debrouxl.tar.bz2
Version avec entiers longs moyens, os, storage
(282.45 Kio) Téléchargé 23 fois
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxModo.G
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 5.5%
 
Messages: 6411
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: -
GitHub: debrouxl

Re: Correctif TI-Python flottants + complexes sur Trinket M0

Message non lude Lionel Debroux » 29 Mar 2019, 19:20

Et un nouveau rebase sur upstream, commit 5478610e591f404baeb60d01d0997754ba4734cb . Comme d'habitude, mon repo https://github.com/debrouxl/circuitpython est à jour.

La taille de CircuitPython ayant encore augmenté, j'ai dû passer de MICROPY_ERROR_REPORTING_DETAILED à MICROPY_ERROR_REPORTING_NORMAL pour gagner plus de 500 octets et rester dans la limite de 184 KB... C'est dommage, c'était un des points sur lesquels mes firmwares étaient plus avancés que le firmware de TI, qui semble utiliser MICROPY_ERROR_REPORTING_NORMAL, d'après un message d'erreur qu'on trouve dans l'image binaire - c'est la version NORMAL et non la version DETAILED.

* branche master: DPFP + cmath + fonctions spéciales maths + LONGLONG longint + storage + os:
Code: Tout sélectionner
LINK build-trinket_m0/firmware.elf

736 bytes free in flash out of 188160 bytes ( 183.75 kb ).
26648 bytes free in ram for stack out of 32768 bytes ( 32.0 kb ).

Create build-trinket_m0/firmware.bin
Create build-trinket_m0/firmware.uf2
Converting to uf2, output size: 375296, start address: 0x2000
Wrote 375296 bytes to build-trinket_m0/firmware.uf2.


* branche master2: DPFP + cmath + fonctions spéciales maths + MPZ longint:
Code: Tout sélectionner
LINK build-trinket_m0/firmware.elf

160 bytes free in flash out of 188160 bytes ( 183.75 kb ).
26744 bytes free in ram for stack out of 32768 bytes ( 32.0 kb ).

Create build-trinket_m0/firmware.bin
Create build-trinket_m0/firmware.uf2
Converting to uf2, output size: 376320, start address: 0x2000
Wrote 376320 bytes to build-trinket_m0/firmware.uf2.
Fichiers joints
circuitpython_trinketm0_dpfp_mpzlongint_20190329_1835_debrouxl.tar.bz2
Version avec entiers longs longs, mais pas os et storage
(271.93 Kio) Téléchargé 23 fois
circuitpython_trinketm0_dpfp_longlonglongint_20190329_1833_debrouxl.tar.bz2
Version avec entiers longs moyens, os, storage
(282.2 Kio) Téléchargé 15 fois
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxModo.G
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 5.5%
 
Messages: 6411
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: -
GitHub: debrouxl

Re: Correctif TI-Python flottants + complexes sur Trinket M0

Message non lude Lionel Debroux » 23 Avr 2019, 07:27

Un nouveau rebase sur upstream, commit 03f9048778ecad2bbd7d07d01f3b64153a36c177 , et l'habituelle mise à jour de mon repo https://github.com/debrouxl/circuitpython .

J'ai eu pas mal de soucis pour réaliser cette version, parce que les changements dans upstream, en particulier une mise à jour du submodule tinyusb et la nécessité d'activer le module board, avaient à la fois cassé la communication USB avec l'ordinateur et fait dépasser la taille disponible. Le pauvre critor a testé plus de versions qui ne fonctionnaient pas que de versions qui fonctionnaient, avant que je puisse comprendre en partie et poster dans un bug report. Il s'est avéré que ce n'était pas le même problème que l'autre utilisateur, je n'enlevais simplement pas les capacités USB HID, USB MIDI et les strings correspondantes des descripteurs USB. Auparavant, cela ne posait pas de problème, mais maintenant, si. Quand on vire toutes ces données inutiles des descripteurs, on gagne de l'ordre de 400 octets (2 pour mille), en plus...
Quant à la limite de taille, j'ai fini par voir que le module board référençait I2C, SPI et UART, dont on se contre-fiche sur le TI-Python Adapter, faute de ports. Si on désactive les références à chacun de ces trois objets, on gagne immédiatement environ 10 KB (!), parce que plein d'éléments de code et données non référencés peuvent alors être éliminés par le linker. En fin de compte, pour rester dans la limite des 183.75 KB tout en ne réduisant pas trop la fonctionnalité pour les autres boards à base d'ATSAMD21 qui proposent les I/O habituelles, j'ai choisi d'activer l'implémentation MPZ des entiers longs - comme le fait TI - ainsi qu'os et storage, et de désactiver seulement l'I2C. Avec ça, il reste de la marge - qui sera partiellement rognée avec l'inclusion de l'émulation de la protection de TI - et il n'y a donc, pour l'instant, plus besoin que d'une seule version des binaires :)

* branche master: DPFP + cmath + fonctions spéciales maths + MPZ longint + storage + os:
Code: Tout sélectionner
LINK build-trinket_m0/firmware.elf

1036 bytes free in flash out of 188160 bytes ( 183.75 kb ).
26736 bytes free in ram for stack out of 32768 bytes ( 32.0 kb ).

Create build-trinket_m0/firmware.bin
Create build-trinket_m0/firmware.uf2
Converting to uf2, output size: 374272, start address: 0x2000
Wrote 374272 bytes to build-trinket_m0/firmware.uf2.
Fichiers joints
circuitpython_trinketm0_dpfp_longint_20190422_2237_debrouxl.tar.bz2
Version avec entiers longs longs, os et storage
(270.83 Kio) Téléchargé 22 fois
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxModo.G
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 5.5%
 
Messages: 6411
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: -
GitHub: debrouxl

Re: Correctif TI-Python flottants + complexes sur Trinket M0

Message non lude Lionel Debroux » 26 Avr 2019, 19:48

Rebase sur le commit upstream e072f0d893eb7854b01a7c4e1a8cfcae9af51026 , équivalent à 4.0.0-rc.1, puisque leur release officielle 4.0 s'approche à grands pas. Aucun changement.

* branche master: DPFP + cmath + fonctions spéciales maths + MPZ longint + storage + os:
Code: Tout sélectionner
LINK build-trinket_m0/firmware.elf

1068 bytes free in flash out of 188160 bytes ( 183.75 kb ).
26736 bytes free in ram for stack out of 32768 bytes ( 32.0 kb ).

Create build-trinket_m0/firmware.bin
Create build-trinket_m0/firmware.uf2
Converting to uf2, output size: 374272, start address: 0x2000
Wrote 374272 bytes to build-trinket_m0/firmware.uf2.
Fichiers joints
circuitpython_trinketm0_dpfp_longint_20190426_2039_debrouxl.tar.bz2
Version avec entiers longs longs, os et storage
(270.82 Kio) Téléchargé 21 fois
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxModo.G
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 5.5%
 
Messages: 6411
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: -
GitHub: debrouxl

Re: Correctif TI-Python flottants + complexes sur Trinket M0

Message non lude zardam » 27 Avr 2019, 01:11

Je suis finalement parvenu à faire "accepter" un firmware tiers à la calculatrice, avec le module "officiel" :)

Le principe est d'utiliser un bootloader modifié qui "ne fait rien" quand la calculatrice veut mettre à jour le module. Le problème c'est qu'en dehors du lancement de l'application, elle veut aussi mettre à jour le module lorsque l'on sort de l'éditeur de script avec le menu "exec". C'est un peu pénible de devoir attendre mais bon... ça fonctionne :

11219

Ci-joint la mise à jour du bootloader et la version modifiée du firmware de Lionel.

ATTENTION : ce bootloader n'accepte plus les UF2 "standards", mais uniquement ceux avec un le header UF2_MAGIC_START0 = 0x0A324755 (ce qui empêche effectivement la calculatrice de mettre à jour le module).

Les sources du bootloader modifié sont ici : https://github.com/zardam/uf2-samdx1/tree/tipython

Pour CircuitPython, c'est un peu pénible avec les sous modules git, mais les deux modifications sont :
- tools/uf2/utils/uf2conv.py : UF2_MAGIC_START0 = 0x0A324755
- lib/tinyusb/src/class/msc/msc_device.c : ajouter "p_csw->status = MSC_CSW_STATUS_PASSED;" ligne 322 (au début de la fonction "mscd_xfer_cb"). J'ai l'impression que c'est un bug de la tinyusb, qui ne reset pas le statut entre deux transferts à chaque fois.
Fichiers joints
update-bootloader.uf2.zip
(7.24 Kio) Téléchargé 23 fois
firmware.uf2.zip
(147.06 Kio) Téléchargé 21 fois
Avatar de l’utilisateur
zardamPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 26%
 
Messages: 211
Images: 13
Inscription: 11 Oct 2017, 23:39
Genre: Non spécifié
Calculatrice(s):

Re: Correctif TI-Python flottants + complexes sur Trinket M0

Message non lude zardam » 27 Avr 2019, 01:18

PS : la mise à jour du bootloader pour revenir en arrière (accepter les UF2 standard).

Attention, ce n'est pas le bootloader "officiel", mais il fonctionne avec la calculatrice.
Fichiers joints
revert-update-bootloader.uf2.zip
(7.22 Kio) Téléchargé 17 fois
Avatar de l’utilisateur
zardamPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 26%
 
Messages: 211
Images: 13
Inscription: 11 Oct 2017, 23:39
Genre: Non spécifié
Calculatrice(s):

Re: Correctif TI-Python flottants + complexes sur Trinket M0

Message non lude Lionel Debroux » 27 Avr 2019, 08:31

Super, très bien joué :)
Je vais adopter ça rapidement.

Pour CircuitPython, c'est un peu pénible avec les sous modules git, mais les deux modifications sont :
- tools/uf2/utils/uf2conv.py : UF2_MAGIC_START0 = 0x0A324755
- lib/tinyusb/src/class/msc/msc_device.c : ajouter "p_csw->status = MSC_CSW_STATUS_PASSED;" ligne 322 (au début de la fonction "mscd_xfer_cb"). J'ai l'impression que c'est un bug de la tinyusb, qui ne reset pas le statut entre deux transferts à chaque fois.

Comme tu as trafiqué le bootloader, c'est plus simple que les changements que tu avais fait précédemment.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxModo.G
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 5.5%
 
Messages: 6411
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: -
GitHub: debrouxl

Re: Correctif TI-Python flottants + complexes sur Trinket M0

Message non lude critor » 27 Avr 2019, 09:03

Merci, super. :D

En dehors du TI-Python, peux-tu préciser la compatibilité de ce bootloader ?
Trinket je suppose ? D'autres pyboards ?

Autre question, combien de temps prend la reprogrammation du boot ?
La dernière fois sur Trinket, ce qui m'avait embêté c'était l'absence de feedback.
Donc par crainte de tout casser j'avais attendu je crois presque 2 minutes que Windows se décide à reporter du changement sur l'USB.
Image
Avatar de l’utilisateur
critorAdmin.
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 0.1%
 
Messages: 34179
Images: 8850
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
Classe: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

Re: Correctif TI-Python flottants + complexes sur Trinket M0

Message non lude zardam » 27 Avr 2019, 10:19

critor a écrit:En dehors du TI-Python, peux-tu préciser la compatibilité de ce bootloader ?
Trinket je suppose ? D'autres pyboards ?


C'est un bootloader pour trinket m0, il fonctionne aussi sur mon clone d'arduino zero. Pour le reste, je ne peux pas trop m'avancer, mais je suppose que la plupart des cartes SAMD21 sont assez similaires, au moins au niveau de l'USB. Pour les aventureux, prévoir de pouvoir restaurer le bootloader au cas ou (une bluepill en blackmagic probe par exemple), ou de compiler une version dédiée à la carte.

critor a écrit:Autre question, combien de temps prend la reprogrammation du boot ?

C'est quasi immédiat. À la fin, la carte reboote d'elle même dans le bootloader. Ça peut passer inaperçu si l'OS remonte automatiquement le lecteur.

J'ai une autre piste pour éviter la tentative de mise à jour, mais pour l'instant, ça ne fonctionne pas (la carte et/ou la calculatrice sont dans un état incohérent ensuite). Je vais essayer de creuser à l'occasion.

PS : Je me suis équipé d'un https://www.dreamsourcelab.com/product/dslogic-plus/ et j'en suis assez content. Il fonctionne parfaitement avec https://sigrok.org/wiki/PulseView et le firmware (y compris le FPGA) sont open source : https://github.com/DreamSourceLab/DSLogic-hdl et https://github.com/DreamSourceLab/DSLogic-fw
Avatar de l’utilisateur
zardamPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 26%
 
Messages: 211
Images: 13
Inscription: 11 Oct 2017, 23:39
Genre: Non spécifié
Calculatrice(s):

PrécédenteSuivante

Retourner vers News TI-z80 (TI-73, 76, 80, 81, 82, 83, 84, 85, 86)

Qui est en ligne

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

-
Rechercher
-
Sujets à la une
Omega, le fork étendant les capacités de ta NumWorks, même en mode examen !
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Concours TI-Planet-Casio de rentrée 2019. 3 défis pour plus d'une 15aine de calculatrices graphiques et nombre de goodies sortant de l'ordinaire ! :D
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...

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 
-
Stats.
519 utilisateurs:
>490 invités
>23 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)