Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » SDK gcc pour addin 35e2/portage KhiCAS
Parisse Hors ligne Membre Points: 506 Défis: 0 Message

SDK gcc pour addin 35e2/portage KhiCAS

Posté le 16/04/2019 20:58

Souhaitant porter KhiCAS sur la nouvelle casio 35, j'ouvre le sujet d'un SDK pour la Graph 35e2. La branche liberation du code source d'Eigenmaths (https://git.planet-casio.com/Nemh/Eigenmath/tree/liberation) contient une version gcc qui suffit pour compiler Eigenmaths, elle convient aussi pour tommath (entiers longs utilisables avec giac) mais pas pour porter la uSTL, la libc est incomplete, il manque par exemple printf, fprintf, errno, etc. Et cette libc est fournie sans code source (c'est probablement la libc du SDK de Casio?).
Je pense qu'il doit etre possible de porter la libc que j'utilise pour KhiCAS (https://www-fourier.ujf-grenoble.fr/~parisse/casio/libfxcg.tar.gz), en remplacant principalement dans stdio.c les appels fxcg vers libfx. Mais Lephenixnoir me suggere d'utiliser le portage de newlib par Memallox https://git.planet-casio.com/Memallox/libc
Question: est-ce que ce portage est compatible avec la 35e2?
Existe-t-il une version compilee (libc.a et fichiers headers) quelque part?



Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 29/04/2019 18:27 | #


D'après la doc tu peux les capturer avec KEY_CTRL_CLIP et KEY_CTRL_PASTE. Je n'ai jamais essayé, cependant.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Parisse Hors ligne Membre Points: 506 Défis: 0 Message

Citer : Posté le 29/04/2019 19:18 | #


ah oui, ca a l'air de marcher, peut-etre depuis que j'ai desactive le curseur clignotant.

Ajouté le 30/04/2019 à 16:43 :
Update avec les programmes qui fonctionnent (en tout cas les 2 ou 3 programmes simples que j'ai testes).
L'editeur utilise le soulignement pour distinguer les mots clefs lorsque la grande fonte (8x6) est active. Dans l'editeur de scripts, on passe de la grande a la petite fonte avec shift-SETUP. Il y a aussi du parenthese matching si on deplace le curseur sur une parenthese ouvrante/fermante (ou crochet).
Il y a encore plein de quirks mais essentiellement ca marche, y compris le debugger et la tortue (limitee a 128 instructions, je peux sans doute un peu augmenter mais c'est au detriment de la memoire pour le reste).
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 03/05/2019 10:11 | #


Je viens de tester tout ça, et je suis impressionné. C'est très propre à l'écran et çe marche super bien

Il y a peut-être des progrès possibles à la con sur l'UI, type améliorer le rendu de la petite police sur les onglets en bas ou des choses du genre, mais pas beaucoup plus.

Je n'ai pas trouvé l'option pour passer de la grande à la petite police, est-ce qu'il faut compiler depuis les sources pour l'avoir ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Parisse Hors ligne Membre Points: 506 Défis: 0 Message

Citer : Posté le 03/05/2019 16:26 | #


Le passage de petite a grande fonte (shift-SETUP) fonctionne dans l'editeur d'expression 2d et dans l'editeur de script, mais pas dans l'historique des calculs. Je ne sais pas trop si je vais le rajouter. L'idee etant qu'un niveau selectionne dans l'historique se visualise en tapant sur la touche F3 (si c'est un graphe represente par Graphic object, alors la ligne du dessus est reevaluee automatiquement pour afficher le graphe, si c'est un etat de la tortue alors l'ecran 2d de la tortue est affiche).
Je viens de faire des modifs pour qu'on puisse sauvegarder une session plus facilement. Par session, j'entends l'historique des calculs, les variables, et le contenu de l'editeur de script (un nom de session et 3 extensions de fichier). Comme ca, on a les programmes dans un fichier .py et des exemples de commandes pour l'utiliser dans le fichier historique .xw et on charge tout en une seule operation.
Il faudrait que je reflechisse pour avoir une certaine compatibilite du format de sauvegarde des sessions avec celui des sessions de Xcas ou/et Xcas pour Firefox.
Il y a encore plein de petits trucs a corriger. Je pense aussi qu'il faudra que je backporte la console de la 35 vers la 90, elle est plus clean et je la trouve plus fonctionnelle.
Est-ce que shift-OPTN fonctionne?
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 03/05/2019 16:35 | #


Ah, je vois ! Effectivement, l'éditeur interactif peut changer la police. J'aime beaucoup le concept de l'éditeur 2D, ça rajoute une dimension à l'interactivité Je remarque qu'il y quelques glitchs quand je passe en petit, certains pixels qui devraient être noirs à cause du surlignement sont encore blancs.

Shift+OPTN ne fonctionnera pas je pense, c'est un raccourci intercepté par GetKey() pour allumer ou éteindre le rétroéclairage ; je crois que j'en ai parlé un peu plus tôt.

Au passage, je pense avoir fini de porter mon kernel sur la Graph 35+E II ; seul le driver de l'écran a été affecté. Ça ne te concerne pas, mais ça donnera au moins une alternative à fxlib dans le futur

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Parisse Hors ligne Membre Points: 506 Défis: 0 Message

Citer : Posté le 03/05/2019 18:26 | #


Oui, il y a des petits ajustements a faire, je me pencherai dessus quand le reste sera au point, ce matin, j'etais encore a me battre avec un crash...

Ajouté le 04/05/2019 à 12:58 :
J'ai modifie le format de sauvegarde des sessions, tout est contenu dans un seul fichier maintenant, ce qui devrait simplifier grandement les echanges.
Attention il faut effacer d'eventuels fichiers .xw des versions precedentes avant d'utiliser la version a jour de l'addin.
Critor En ligne Administrateur Points: 2673 Défis: 18 Message

Citer : Posté le 12/05/2019 11:29 | #


Avec la dernière version, je peux par exemple faire solve(a*x^2+b*x+c=0,x), ça marche.

Mais si je fais roots(a*x^2+b*x+c,x), ça plante systématiquement.

Ajouté le 12/05/2019 à 14:59 :
Mince, je viens au mieux de semi-bricker ma Graph 35+E II.

J'étais en train de tester KhiCAS dans le but de faire une annonce illustrée à son sujet.
J'ai obtenu quelques plantages lors de calculs ou scripts Python...

Et le dernier plantage, dans le cadre d'un script Python, a visiblement été fatal.
La calculatrice demande un OS au (re)démarrage, c'est fort aucune Casio ne m'avait jamais fait ça :


Avec en prime un plantage sur ce même écran :


L'article KhiCAS va devoir attendre puisque je n'ai plus rien pour tester/illustrer; dommage car je souhaitais justement l'annoncer ça avant la mise à jour Python de Casio.
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 12/05/2019 15:03 | #


J'ai déjà vu cet écran que j'ai activé manuellement le mode OSUpdate... tu as tout tenté sur le redémarrage/les piles/les démarrages dans des modes exotiques de test/les démarrages par câble ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Critor En ligne Administrateur Points: 2673 Défis: 18 Message

Citer : Posté le 12/05/2019 15:06 | #


Je connais cet écran oui, mais là il s'affiche tout seul.

Au mieux l'OS a été corrompu par un effet de bord de KhiCAS lors de son dernier plantage... auquel cas il va me falloir attendre la mise à jour 3.10 du 22 mai pour pouvoir remettre ma machine en état...
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 12/05/2019 15:08 | #


Peux-tu communiquer avec la calculatrice dans cet état, notamment par le protocole 7 ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Critor En ligne Administrateur Points: 2673 Défis: 18 Message

Citer : Posté le 12/05/2019 15:19 | #


J'ai accès à l'écran OSerror, mais comme fxRemote et p7 n'ont pas été mis à jour depuis des lustres ça ne m'avance à rien.
Pas d'accès au diags dans ce contexte (dans le contexte du boot, [OPTN][EXP][AC] lance OSerror).

En branchant l'USB, j'ai la popup qui se superpose à un plantage :
]

Et dans ce contexte, la touche [MENU] redevient fonctionnelle :


Mais aucune appli n'est lançable, toute validation plante et/ou redémarre la calculatrice.


Je note que mes applis additionnelles ne sont plus listées. C'est peut-être donc la mémoire de stockage qui a eu une écriture malencontreuse dans le contexte de mon dernier plantage KhiCAS. Et dans ce cas, si ça plante l'OS au démarrage, je ne vois pas comment réinitialiser ça...
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 12/05/2019 15:25 | #


Les autres touches de communication sont-elles utilisables ? Peux-tu lancer le menu constructeur pour tester la checksum de la ROM ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Critor En ligne Administrateur Points: 2673 Défis: 18 Message

Citer : Posté le 12/05/2019 15:28 | #


Pour le menu constructeur, il me faut commencer par éteindre la machine avant de faire [OPTN][EXP][AC].
Or ça la fait planter/redémarrer, donc je me retrouve dans le contexte du boot où [OPTN][EXP][AC] lance OSerror...
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 12/05/2019 15:49 | #


Hmm, c'est compliqué...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Parisse Hors ligne Membre Points: 506 Défis: 0 Message

Citer : Posté le 12/05/2019 19:15 | #


Pour roots, je soupconne un depassement de capacite quelque part, car ca marche sur la 90. En remplacant a l'etape de detection des multiplicites la factorisation complete par de la factorisation squarefree, ca a l'air de passer (et c'est mieux de toute facon). J'ai mis a jour l'addin (avec l'aide en ligne qui devrait etre a peu pres correcte).

Je n'ai malheureusement aucune competence pour debloquer la calc :-(
C'etait un script complique? Faisant intervenir quoi? Pour le moment, les scripts que j'ai teste fonctionnaient, mais c'etait toujours des scripts ne necessitant pas enormement de ressources et testant de l'algorithmique en rapport avec les maths (ou la tortue).
Critor En ligne Administrateur Points: 2673 Défis: 18 Message

Citer : Posté le 12/05/2019 21:47 | #


J'ai tenté les scripts de test de performances :
https://tiplanet.org/forum/viewtopic.php?t=22585&p=242160#p242160

Celui sur les flottants a fonctionné sans problème.

Celui sur les entiers et tableaux a mis un peu plus de temps (un peu plus de 2 minutes, mais relativement je m'y attendais) mais a alors affiché une popup de plantage à la place du résultat.
Et c'est depuis que la calculatrice ne veut plus démarrer correctement.

Alors soit il y a eu une panne matérielle qui s'est déclenché pile pendant ces 2 minutes mais j'en doute...
Soit KhiCAS a réussi a écrire dans une zone Flash où il n'aurait pas dû :
- une page Flash de l'OS (l'écran OSupdate étant entre autres déclenché en cas de mauvaise somme de contrôle - réparation le 22 mai dans ce cas si je n'arrive pas à négocier d'ici-là, aucune idée)
- ou alors une page Flash de la mémoire de stockage qui arriverait à faire planter l'initialisation de l'OS (et comme sur Casio on n'a à ma connaissance pas de menu de secours pour vider la mémoire de stockage, là ce serait possiblement plus embêtant...)

Encore heureux que KhiCAS ne m'ait pas écrit dans une page Flash du Boot, car là je n'aurais plus aucun espoir... (oui, les pages du Boot ne sont pas protégées contre l'écriture sur les Casio Graph, et donc cet incident me préoccupe beaucoup).
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 12/05/2019 22:02 | #


En principe il n'est pas possible d'écrire dans la ROM à moins d'appeler les sycalls correspondants, ce que je me refuse à croire que KhiCAS ait fait.

Je n'ai en tête qu'un programme bizarre que Julese50 m'a envoyé, et qui semblait capable de modifier une chaîne de caractères en ROM. Je crois aujourd'hui que le cache est responsable de ce comportement, et que la ROM n'était pas affectée. Je pourrais le vérifier facilement.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Critor En ligne Administrateur Points: 2673 Défis: 18 Message

Citer : Posté le 12/05/2019 22:25 | #


Je n'ai jamais dit que le code était en clair dans le code de KhiCAS.

Mais un enchaînement de circonstances a quand même bel et bien réussi à déclencher ça.
Parisse Hors ligne Membre Points: 506 Défis: 0 Message

Citer : Posté le 12/05/2019 22:27 | #


KhiCAS n'ecrit jamais dans la flash pendant l'execution d'un script (sauf si on utilise la commande write mais elle est desactivee actuellement sur la 35). Sinon, KhiCAS lit et sauvegarde des fichiers de sessions ou des scripts dans \\fls0 mais seulement quand on execute l'action correspondante depuis les menus Fichier (ou automatiquement quand on change d'application).
C'est donc soit un probleme materiel ou bien c'est du a une corruption de la memoire, mais c'est quand meme tres etonnant qu'un crash puisse provoquer l'ecriture de quelque chose en permanent dans la calculatrice. Etant donne que je ne comprends pas ce que fait le script en question avec ces genseed/genarr/sortarr, difficile de juger ou un depassement de capacite a pu se produire. Il y a beaucoup d'instructions de manipulation de liste, et un des premiers bugs assez incomprehensibles que j'ai du contourner au debut du portage sur la 35, c'etait l'inversion des elements d'une liste de la USTL qui crashait. Pas impossible qu'il y ait un autre plantage par la. Ou alors c'est simplement un malloc qui renvoie 0 mais n'est pas detecte par le code ensuite et ca provoque un crash (peut-etre au moment ou il essaie d'afficher le resultat). Quelle capacite memoire est necessaire?
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 12/05/2019 22:29 | #


Ça me paraît bien plus facile de casser le système en modifiant des paramètres en RAM ou des registres périphériques conservés après reset que de modifier la ROM. N'oublie pas que AHelper a brické une Prizm juste en jouant avec le MMU.

Ça reste bizarre et je trouve d'autres hypothèses plus crédibles, comme un bug dans Bfile.

Ajouté le 12/05/2019 à 22:30 :
Il faut que je précise que l'adresse 0 est mappée sur 4 ko vers le premier secteur de la ROM, déréférencer le pointeur nul n'est donc possiblement pas une erreur. Mais même si tu y écris, ça ne doit pas passer le cache, et de toute façon si tu avais modifié la ROM ainsi la calculatrice ne pourrait plus démarrer comme elle le fait.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Parisse Hors ligne Membre Points: 506 Défis: 0 Message

Citer : Posté le 13/05/2019 07:47 | #


Si c'est de la ram, alors enlever les piles devrait resoudre le probleme non?

Ajouté le 14/05/2019 à 21:31 :
En comparant les sources de l'UI sur la 90 et sur la 35, je suis tombe sur un syscall de la 90, Bkey_SetAllFlags(0x80) (syscall 0x0EA1) qui permet semble-t-il de desactiver la touche built-in CATALOG. Est-ce que ca fonctionne aussi sur la 35? Ca serait bien pratique sur la 35 de faire apparaitre le catalogue de KhiCAS quand on tape cette touche...

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 103 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd