π
<-
Chat plein-écran
[^]

Script qui refuse de s’exécuter sur la Numworks N0100

Re: Script qui refuse de s’exécuter sur la Numworks N0100

Message non lude cent20 » 08 Sep 2019, 11:51

Lionel Debroux a écrit:Puisque l'utilisation d'un tas Python de 32 KB change le comportement... allons un peu plus loin ?
En pièce jointe, un build avec un tas de 40 KB


Jusque là j'ai tout compris !

Lionel Debroux a écrit:et un nombre maximum de noeuds réduit (3/4 de la valeur d'origine mentionnée plus haut, et sizeof(TreeNode) == 12, donc ça laisse 2048 noeuds). Comme le deuxième changement réduit davantage la RAM consommée que le premier ne l'augmente, le tas pour malloc (section .heap) est plus grand, 0xEB64 octets maintenant.
Je me demande si on ne pourrait pas réduire la taille de la pile (section .stack), aussi... sauf utilisation de grosses variables locales, 32 KB (0x7FF8) est élevé alors que le tas ne fait même pas le double de ça.

sizeof(TreeNode) == 12 parce qu'il y a deux int16_t et un int8_t, et un pointeur vers la vtable, donc du padding. De toute façon, la taille doit être multiple de 4 pour faciliter les copies mémoire, c'est également marqué en commentaire.


:#fou#:

J'ai tout compris, bien évidemment. ;)

Quelques questions en rapport avec le .bin :

Tu le génère depuis une machine sous quel OS ?
Tu fais comment pour attraper le .bin ?
Le mien sous debian 10 avec interface graphique (on ne rigole pas) s'efface immédiatement après l'echec du flashage, car il serait trop gros pour être envoyé (forcement 8mo>1mo), bon après aussi je ne savais pas qu'il avait été généré par défaut pour la N0110, ce n'est pas marqué dans la doc ni qu'il faut rajouter des paramètres pour compiler :#roll#: )
Image
Enseignant de mathématiques et d'informatique. Spécialité NSI : Des projets, des tutos, mais aussi de l'art
Calculatrice NumWorks : Des applications et des jeux, scripts, 📙 Découvrir la NumWorks
Avatar de l’utilisateur
cent20VIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 45.9%
 
Messages: 1009
Images: 64
Inscription: 17 Mai 2012, 09:49
Localisation: Avignon
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: nsi_xyz

Re: Script qui refuse de s’exécuter sur la Numworks N0100

Message non lude jean-baptiste boric » 08 Sep 2019, 12:12

Lionel Debroux a écrit:Je me demande si on ne pourrait pas réduire la taille de la pile (section .stack), aussi... sauf utilisation de grosses variables locales, 32 KB (0x7FF8) est élevé alors que le tas ne fait même pas le double de ça.


Je n'ai pas étudié la question en détail, mais le DFU de NumWorks s'exécute dans le bas de la pile afin de pouvoir mettre à jour le firmware sans scier sa propre branche au passage. Un autre cas qui me vient en tête est la décompression des images avec un buffer d'environ 8 KiB sur la pile (image_view.cpp).
Avatar de l’utilisateur
jean-baptiste boricPremium
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Prochain niv.: 4.5%
 
Messages: 374
Inscription: 21 Déc 2015, 22:22
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
GitHub: boricj

Re: Script qui refuse de s’exécuter sur la Numworks N0100

Message non lude parisse » 08 Sep 2019, 12:16

Prudence quand meme avec la stack, il peut y avoir des alloca.
Reste quand meme qu'etre oblige d'optimiser la taille d'un script est peut-etre pas ideal d'un point de vue pedagogique...
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.2%
 
Messages: 3502
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Script qui refuse de s’exécuter sur la Numworks N0100

Message non lude Lionel Debroux » 08 Sep 2019, 12:29

Tu le génère depuis une machine sous quel OS ?

Debian sid/unstable amd64, dont le gros deviendra Debian 11 dans plus de 2 ans. Debian 10 va très bien pour faire ce que tu veux. Moi aussi, j'ai une interface graphique :)

Tu fais comment pour attraper le .bin ?

Depuis la racine du clone d'epsilon:
Code: Tout sélectionner
make MODEL=n0100
make build/device/n0100/epsilon.bin

et je récupère ce dernier fichier pour l'uploader ici.

Quant à l'usage de la pile: tout à l'heure, j'ai justement ajouté -Wstack-usage=512 -Wframe-larger-than=512 dans CXXFLAGS de scripts/default.mak, et j'ai eu zéro warnings. Mais ça m'étonne, moi aussi... le buffer de 8000 octets dans image_view.cpp aurait dû être reporté, en effet.
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: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Script qui refuse de s’exécuter sur la Numworks N0100

Message non lude critor » 08 Sep 2019, 13:53

Voilà, l'exploit est annoncé en page d'accueil, vu qu'il change la donne en cette période de rentrée/acquisitions :
viewtopic.php?p=245130#p245130

J'ai normalement crédité tous les acteurs, dites-moi si il y a des modifications à apporter.

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

Re: Script qui refuse de s’exécuter sur la Numworks N0100

Message non lude cent20 » 08 Sep 2019, 14:59

Lionel Debroux a écrit:
Depuis la racine du clone d'epsilon:
Code: Tout sélectionner
make MODEL=n0100
make build/device/n0100/epsilon.bin

et je récupère ce dernier fichier pour l'uploader ici.



Merci beaucoup. Avec ça je peux compiler directement dans ma machine virtuelle et distribuer les .bin aux élèves. ça suffira pour commencer. Surtout que mes élèves en 1ère NSI auront cette année une TI 83 prenium sans python ni le module externe :whistle: , alors eux les .bin ils s'en moqueront totalement et le python on le fera sur PC mais ça sera moins ludique ...
Image
Enseignant de mathématiques et d'informatique. Spécialité NSI : Des projets, des tutos, mais aussi de l'art
Calculatrice NumWorks : Des applications et des jeux, scripts, 📙 Découvrir la NumWorks
Avatar de l’utilisateur
cent20VIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 45.9%
 
Messages: 1009
Images: 64
Inscription: 17 Mai 2012, 09:49
Localisation: Avignon
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: nsi_xyz

Re: Script qui refuse de s’exécuter sur la Numworks N0100

Message non lude cent20 » 26 Fév 2020, 22:46

Je profite du lancement d'un démineur, , un petit script de 3.09ko qui refuse de tourner sur les 16ko pour relancer ce topic.

Depuis le 8 septembre dernier, 5 mois ce sont écoulés nous avons bien progressé à python.
(nous étions parti de 0 en juillet 2019 !)

Et du coup le script de 6ko que l'on pensait incompressible fait désormais 4,00ko, il est ici : https://workshop.numworks.com/python/cent20/polynome et il refuse de tourner sur la version de Epsilon et son tas python de 16ko.

On a réussit à le réduire de 30% depuis les 6ko sans enlever de fonctionnalités essentielles. Mais rien à faire, sur Epsilon ça ne veut pas tourner.

Il tourne très bien sur Omega par contre, et le Pull Request de Lionel Debroux sur GitHub est le PR le plus populaire...

Et je n'ai pas encore crée un DM demandant à mes élèves de poster un commentaire sous ce PR, ni de cliquer sur les coeurs, ça c'est prévu pour septembre 2020.
Image
Enseignant de mathématiques et d'informatique. Spécialité NSI : Des projets, des tutos, mais aussi de l'art
Calculatrice NumWorks : Des applications et des jeux, scripts, 📙 Découvrir la NumWorks
Avatar de l’utilisateur
cent20VIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 45.9%
 
Messages: 1009
Images: 64
Inscription: 17 Mai 2012, 09:49
Localisation: Avignon
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: nsi_xyz

Précédente

Retourner vers Programmation Python

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 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.
1134 utilisateurs:
>1125 invités
>4 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)