Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » fxSDK, un SDK alternatif pour écrire des add-ins
Lephenixnoir En ligne Administrateur Points: 22890 Défis: 149 Message

fxSDK, un SDK alternatif pour écrire des add-ins

Posté le 29/08/2014 22:00

Cette page sert d'index pour la série de topics du fxSDK.

Le fxSDK est une collection d'outils permettant de développer des add-ins pour les calculatrices Casio des séries Graph. C'est une alternative au fx-9860G SDK et PrizmSDK qui ne sont plus activement maintenus, et le compagnon classique de mon noyau gint.

Index des topics

Ce projet existe depuis 2015, alors il y a pas mal de topics liés. En voici une liste complète !

Topics principaux

Installation du fxSDK

Tutoriels

Compatibilité sur calculatrice et PC

Côté PC, le fxSDK est compatible avec Linux, Mac OS, et WSL pour Windows ; normalement tout le monde peut l'utiliser. Je teste constamment sous Linux, et WSL est un Linux donc c'est testé aussi. Je n'ai pas de Mac OS donc il peut y avoir quelques surprises, mais en général c'est l'affaire de corriger un bug ou deux.

En termes de calculatrices, le fxSDK supporte :

Calculatrices monochromes
  • Graph 35+E II
  • Graph 35+ USB / Graph 35+E (SH3/SH4)
  • Graph 75/75+/75+E
  • Graph 85/85 SD/95 (SD) (pas activement testé)

Calculatrices couleurs
  • Graph 90+E / fx-CG 50
  • Prizm fx-CG 10/20

Comment installer le fxSDK et coder des add-ins

Le fxSDK s'installe à partir de dépôts Git sur la forge de Planète Casio (par exemple Lephenixnoir/fxsdk). Il y en a un peu beaucoup, donc manuellement c'est assez long. Pour que ça aille plus vite et pour simplifier le travail des débutants, il y a un outil appelé GiteaPC qui peut faire ça pour vous.

Si vous utilisez Windows, vous aurez besoin de WSL pour accéder à un système Linux dans Windows. Heureusement, Microsoft a fait ça bien et c'est facile à faire. Voyez le tutoriel d'installation de WSL 2 (et l'explication rapide de ce que WSL 2 est).

Si vous utilisez Mac OS, ouvrez l’œil en lisant les topics pour ne pas manquer les informations supplémentaires et éventuelles déviations par rapport à la procédure normale sous Linux.

Méthode automatique avec GiteaPC (plus rapide / recommandée pour les débutants)
  1. Suivez le tutoriel d'utilisation de GiteaPC, qui explique comment obtenir le fxSDK.

Méthode AUR pour les utilisateurs Arch/Manjaro/dérivés (ils se reconnaîtront)
  1. Dark Storm maintient MiddleArch, un dépôt de paquets précompilés qui a entre autres le fxSDK.

Méthode manuelle (plus fine / classique pour les habitués)
  1. Compilez et installez le cross-compilateur GCC pour SuperH.
  2. installez (dans cet ordre) les dépôts fxSDK, OpenLibm, fxlibc, gint ; en option, Slyvtt/µSTL_2.3.

Description sommaire du fxSDK

Pour une introduction à l'utilisation du fxSDK qui montre comment utiliser les outils pour développer un add-in, lisez plutôt les tutoriels d'utilisation de gint. Cette section est juste une description sommaire.

Le cœur du fxSDK est un cross-compilateur GCC pour SuperH, habituellement nommé sh-elf-gcc. Bien sûr on a avec toute la suite d'outils, dont as, ld, objdump, objcopy (entre autres). Contrairement au vieux compilateur du SDK, GCC est un compilateur moderne avec beaucoup d'options et capable de très solides optimisations.

Sur la calculatrice, c'est le noyau gint qui fait la majorité du travail. Il remplace fxlib/libfxcg et une partie de l'OS pour vous offrir des fonctionnalités plus cool et plus rapides. Les add-ins développés avec le fxSDK utilisent gint toutes les trois lignes !

Il y a enfin plusieurs outils utiles sur le PC qui sont utilisés durant le développement ou l'utilisation des add-ins :

  • fxsdk est un script shell qui permet de créer et compiler les projets sans se prendre trop la tête. Le système de compilation officiel pour les add-ins est CMake, mais un système plus ancien de Makefile est encore supporté.
  • fxconv est un outil très polyvalent qui convertit à la compilation les assets (images, polices, maps....). Il permet de travailler avec des logiciels et formats de fichiers normaux sur le PC et d'avoir automatiquement un format optimisé sur la calculatrice. fxconv est extrêmement extensible et chaque projet peut ajouter des conversions personnalisées.
  • fxgxa crée les fichiers g1a (format des add-ins pour Graph monochromes) et g3a (format des add-ins pour Graph couleurs) à partir des programmes compilés.
  • fxlink est un outil de communication qui peut transférer des fichiers vers les Graph 35+E II et Graph 90+E en ligne de commande, mais aussi échanger interactivement avec les add-ins gint par le câble USB, et est couramment utilisé pour réaliser des captures d'écran ou captures vidéo des add-ins.


Changelog et informations techniques

Ci-dessous se trouve la liste des posts annonçant les nouvelles versions du fxSDK, ainsi que des liens vers les instructions/tutoriels supplémentaires publiés avec.

VersionDateInfos supplémentaires
fxSDK 2.9.129 Août 2022
fxSDK 2.9.021 Août 2022Réinstallation complète nécessaire
fxSDK 2.8.017 Mai 2022
fxSDK 2.7.119 Mars 2022
fxSDK 2.7.031 Décembre 2021Collecter toutes les images d'un projet avec fxconv
fxSDK 2.6.030 Août 2021Génération de structures complexes avec fxconv
fxSDK 2.5.24 Juillet 2021
fxSDK 2.5.14 Juillet 2021
fxSDK 2.5.025 Mai 2021
fxSDK 2.4.027 Avril 2021
fxSDK 2.3.130 Janvier 2021
fxSDK 2.3.029 Janvier 2021Introduction de fxconv-metadata.txtInstructions de migration vers CMake
Séparation de libprof en fx/cg



Précédente 1, 2, 3 ··· 10 ··· 20 ··· 25, 26, 27, 28, 29, 30, 31 ··· 35, 36, 37 Suivante
Lephenixnoir En ligne Administrateur Points: 22890 Défis: 149 Message

Citer : Posté le 29/01/2021 18:46 | #


Nouvelle version : fxSDK 2.3.0

Release associée de gint : gint 2.3.0

Et voici la version 2.3 du fxSDK. C'est une version très orientée vers la distribution, pour rendre plus facile le partage des outils, programmes et bibliothèques, et la gestion des projets. J'espère que vous y trouverez votre compte, toute l'intention est de vous aider et/ou simplifier la vie.

Cette version arrive aussi avec GiteaPC qui fait le plus gros du boulot pour utiliser et mettre à jour des bibliothèques en deux coups de clavier. Je vous suggère d'y jeter un oeil, vous pourriez tourner avec tout à jour en 5-10 minutes.

Trois tutoriels accompagnent cette version :
Utilisation de GiteaPC pour gérer un environnement de développement
[Tutoriel] Compiler des add-ins avec CMake (fxSDK)
Lephenixnoir/Template-gint-library d'écrit l'utilisation du fxSDK et de CMake pour créer une bibliothèque gint

Voici les détails des changements !

Nouveautés
• Ajouté un système plus élégant de conversion pour fxconv. Explications et instructions de migration.
• Ajouté le support de CMake comme système de compilation. Tout l'écosystème fxSDK bénéficie de ce support, j'ai par exemple modifié mes libs en conséquence. Explications et instructions de migration.
• Ajouté des modules CMake utilitaires : pour déterminer la version d'un projet à partir des tags et commits Git, et pour faciliter l'écriture de Find<Package>.cmake pour les bibliothèques

Changements
• libprof est désormais séparée en libprof-fx et libprof-cg. Brèves instructions de migration.
• La commande fxsdk update a été supprimée, les mises à jour de Makefile étant toujours plus compliquées qu'une simple copie. Si vous voulez éviter de vous y intéresser, considérez l'utilisation de CMake, qui est plus simple à comprendre et à gérer pour les débutants.
fxg1a donnera toujours un nom interne (celui de la forme @ADDIN) correct donc ce n'est plus la peine de le spécifier. De toute façon personne ne s'en sert, c'était juste un coup à se planter de format (ce qui rend l'add-in invisible sur le menu principal).
fxsdk new ne demande plus d'informations interactivement. Pour les Makefile il choisit des valeurs par défaut sensibles (à modifier dans project.cfg), pour CMake vous devez modifier CMakeLists.txt (dans lequel vous devez déjà ajouter les fichiers source etc).
fxsdk new a une nouvelle option --makefile pour générer des Makefile (par défaut il utilise CMake).

Ajouté le 29/01/2021 à 19:36 :
Les instructions d'utilisation de GiteaPC ont été mises à jour avec des instructions spécifiques pour la création et la migration d'environnements de développement fxSDK/gint, ce qui conclut cette release (à quelques détails près).

Enjoy!
Lephenixnoir En ligne Administrateur Points: 22890 Défis: 149 Message

Citer : Posté le 30/01/2021 23:11 | #


Comme toujours avec les releases plus ou moins grosses, des bugs sont aussitôt trouvés, aussitôt corrigés.

Nouveau patch : fxSDK 2.3.1

Release associée de gint : gint 2.3.1

Corrections de bugs
• Corrigé la détection du dossier d'installation du compilateur dans le système CMake, qui était mal détecté sur les systèmes où la locale n'est pas anglaise.
Ninestars Hors ligne Membre Points: 2456 Défis: 24 Message

Citer : Posté le 04/04/2021 23:07 | #


J'ai regardé les quelques dernières pages sans trouver de réponde, donc désolé de te déranger encore un peu,
mais j'ai une erreur au make install
the -R and -r options may not be specified together.
Lephenixnoir En ligne Administrateur Points: 22890 Défis: 149 Message

Citer : Posté le 04/04/2021 23:15 | #


Une erreur à cause des différences de cp sous Mac OS, il semblerait. Essaie s'il te plaît de modifier la ligne 96 du Makefile par un cp -rp, ça devrait marcher aussi bien. Une fois la modif faite relance ton make install (ou la commande GiteaPC si tu t'es servi de ça).
Ninestars Hors ligne Membre Points: 2456 Défis: 24 Message

Citer : Posté le 05/04/2021 00:01 | #


Merci, j'ai cherché sur internent mais je ne vois pas comment modifier ça, je n'ai pas la main sur le fichier. Je ne suis pas un as de git
Comment dois-je faire ?

Ajouté le 05/04/2021 à 00:30 :
C'est bon j'ai trouvé (et surtout, j'ai compris). Etape suivante !
Kikoodx Hors ligne Labélisateur Points: 2979 Défis: 11 Message

Citer : Posté le 16/04/2021 11:26 | #


Bonjour ! J'ai créé un template de projet fxsdk sur le Gitea. Pas grand chose vraiment, mais dans l'espoir que cela aide quelques personnes je le partage ici.
https://gitea.planet-casio.com/KikooDX/gint-project-template

Cette base comprend :
un README plus complet que nécessaire
une LICENSE 0BSD (vous êtes libres d'en utiliser une autre ou de la supprimer !)
un exemple d'inclusion de function
un CMakeLists.txt facilement customisable avec pas mal de warnings par défaut
une tarte au citron
une configuration clang-format prête à partir
quelques autres détails que j'ai oublié

Si vous avez des commentaires/retours, je peux réduire ou augmenter cette base au besoin.
Ce sera tout, bonne fin de matinée
mi lape ala.

J'suis un méga chômeur
Cakeisalie5 Hors ligne Membre de CreativeCalc Points: 1869 Défis: 10 Message

Citer : Posté le 16/04/2021 11:29 | #


Je cherche encore la tarte au citron.

Promotion ordinaire sur les inscriptions sur Planète Casio : en ce moment, c'est gratuit !
Mon blogBesoin d'utilitaires de transfert vers et depuis la calculatrice sous GNU/Linux ?
Lephenixnoir En ligne Administrateur Points: 22890 Défis: 149 Message

Citer : Posté le 16/04/2021 11:40 | #


Nice ! Il faut que je refasse ce topic, j'ajouterai une référence à ton template pour sûr. En attendant j'ai mis un lien dans le TODO comme ça j'oublierai pas.

Rien à dire sur le template, à part que -Os ne fait rien de particulier pour réduire la taille du code, c'est juste -O2 moins 5-10 optis qui ont tendance à faire augmenter le poids du fichier.
Kikoodx Hors ligne Labélisateur Points: 2979 Défis: 11 Message

Citer : Posté le 16/04/2021 11:47 | #


Cakeisalie5 a écrit :
Je cherche encore la tarte au citron.

Cherche aux tréfonds de ton âme, la tarte au citron t'y attend.

Lephenixnoir a écrit :
Rien à dire sur le template, à part que -Os ne fait rien de particulier pour réduire la taille du code, c'est juste -O2 moins 5-10 optis qui ont tendance à faire augmenter le poids du fichier.

Je n'ai pas trouvé de meilleure description, est-ce que tu peux me suggérer quelque chose ?
mi lape ala.

J'suis un méga chômeur
Lephenixnoir En ligne Administrateur Points: 22890 Défis: 149 Message

Citer : Posté le 16/04/2021 11:48 | #


C'est pas très important, mais je peux suggérer ça.

# -Os: like -O2 without space-expensive optimizations
# -O2: good speed/compile time tradeoff
# -O3: gotta go fast
Kikoodx Hors ligne Labélisateur Points: 2979 Défis: 11 Message

Citer : Posté le 16/04/2021 11:53 | #


J'ai poussé le changement (et corrigé un oubli de ma part en passant), merci
mi lape ala.

J'suis un méga chômeur
Lephenixnoir En ligne Administrateur Points: 22890 Défis: 149 Message

Citer : Posté le 27/04/2021 15:56 | #


Nouvelle version : fxSDK 2.4.0

Release associée de gint : gint 2.4.0

Cette release accompagne gint 2.4.0, même s'il n'y a pas beaucoup de changements. Il n'y a qu'un ajout :

• Ajouté un nouvel outil fxlink qui permet pour l'instant de monter les calculatrices Stockage de Masse USB (Graph 35+E II et Graph 90+E) via UDisks2 pour transférer des fichiers entièrement sur la ligne de commande. D'autres fonctionnalités viendront dans la prochaine version, couplées avec le driver USB dans gint.

Et surtout des modifications sur la compilation du fxSDK et les questions compatibilité :

• Le fxSDK est maintenant compilé avec CMake
• Les flags x86/x64 par défaut de CMake sont désactivés sur les OS qui en fournissent
• L'ordre des arguments de fxg1a et mkg3a est ajusté pour marcher avec le getopt POSIX de musl
__VA_OPT__ est remplacé par ##__VA_ARGS__ pour marcher avec clang (berk)
• libpng est localisée avec PkgConfig et pas FindPNG, à cause de subtilités de frameworks sous Mac
• Corrigé une erreur stupide qui se produisait s'il y avait "gcc" dans le chemin d'installation du compilo
Ninestars Hors ligne Membre Points: 2456 Défis: 24 Message

Citer : Posté le 27/04/2021 19:31 | #


Génial !
Plein de bonnes nouvelles en somme pour faciliter l'installation. J'ai l'impression que mon cas t'as fait ajuster quelques petits trucs
Je suis pressé de pouvoir utiliser fxlink

PS : tu as pu récupérer le doc que je t'avais envoyé par MP ?

PS 2 : lien mort pour fxsdk 2.4
Loieducode Hors ligne Membre Points: 157 Défis: 0 Message

Citer : Posté le 27/04/2021 19:38 | #


Lephenixnoir a écrit :
• Ajouté un nouvel outil fxlink qui permet pour l'instant de monter les calculatrices Stockage de Masse USB (Graph 35+E II et Graph 90+E) via UDisks2 pour transférer des fichiers entièrement sur la ligne de commande. D'autres fonctionnalités viendront dans la prochaine version, couplées avec le driver USB dans gint.

Finalement, fini le montage manuel, le rm du .g3a et le cp!
Vim > Emacs
Lephenixnoir En ligne Administrateur Points: 22890 Défis: 149 Message

Citer : Posté le 27/04/2021 19:57 | #


Merci ! Oui ton installation m'a pas mal aidé. J'ai bien reçu et récupéré ton doc, désolé de ne pas t'avoir envoyé de réponse. C'est un truc assez gros à traiter et donc je ne l'ai pas encore fait. ^^"

J'ai corrigé le lien, j'avais édité à la main celui de gint mais modifié la mauvaise partie lol.

Finalement, fini le montage manuel, le rm du .g3a et le cp!

Exactement ! fxlink -sw addin.g3a marche. Bon c'est très primitif, c'est juste un cp des arguments vers le point de montage, on peut pas récupérer dans l'autre sens, etc. mais ça cherche pas à remplacer le gestionnaire de fichiers.

Ajouté le 10/05/2021 à 18:49 :
En discutant avec Druzyek j'ai pensé que je pourrais publier des versions binaires du fxSDK, avec toutes les libs déjà compilées et peut-être même le compilo aussi (pourvu que l'architecture ne varie pas trop).

Par contre, comme le fxSDK est fréquemment mis à jour pour l'instant, ça n'empêcherait pas d'avoir à mettre à jour. Mais ça permettrait de passer d'une version à l'autre en remplaçant un dossier par le même dossier extrait d'un zip plus récent, donc ce serait sans doute pratique.
Dark storm Hors ligne Labélisateur Points: 11579 Défis: 176 Message

Citer : Posté le 10/05/2021 21:01 | #


Lephe à deux doigts de réinventer Appimage.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 22890 Défis: 149 Message

Citer : Posté le 10/05/2021 21:19 | #


Non juste à deux doigts de réinventer le logiciel téléchargé sous la forme d'un tar.gz. N'abusons rien

Non mais sinon tu conviendras que c'est pas moi qui pousse pour ça. C'est qu'il y a des vrais problèmes de gestion dans la nature pour les utilisateurs. Si ça ne tenait qu'à moi je n'aurais même pas écrit GiteaPC, moi je peux gérer 30 dépôts en parallèle.

Honnêtement, je pense que je ne suis pas fou, et pourtant il est évident que la publication et le déploiement du fxSDK est un problème très épineux. J'ose même dire : beaucoup plus épineux que ce que vous imaginez. J'ose le dire parce que malgré mon expérience en développement similaire à celle des autres membres de Planète Casio, j'étais incapable d'imaginer tout ce qui m'est tombé dessus une fois que j'ai vraiment publié le projet (ou de façon plus crue : je pense que vous ne comprendrez pas non plus à moins de vous retrouver dans la même démarche).

Depuis quelques temps, même si je hais toujours les gestionnaires de paquets des langages, les Dockers, les FlatPak et tout le bordel, je comprends très distinctement pourquoi ils ont été inventés. Déployer un programme ça n'a rien à voir avec développer un programme. Il y a un aspect simple sur lequel c'est beaucoup plus dur : quand tu programmes, tu as un langage et une bibliothèque standard qui ont un comportement garanti ; strlen() est consistant, l'opérateur + est consistant, etc. Alors que quand tu déploies, tu as affaire à des OS, outils en ligne de commande, paquets installés ou pas installés, etc. qui sont une jungle sans nom. Y'a aucun outil qui n'existe pas en version BSD ou GNU, y'a pas un outil qui soit garanti installé sur la machine de l'utilisateur, y'a que des inconnues. On ne se l'imagine pas quand on code ça.
Dark storm Hors ligne Labélisateur Points: 11579 Défis: 176 Message

Citer : Posté le 10/05/2021 22:11 | #


Non juste à deux doigts de réinventer le logiciel téléchargé sous la forme d'un tar.gz.

CQFD :
$ osu.AppImage --appimage-extract
squashfs-root/.DS_Store
squashfs-root/.DirIcon
squashfs-root/AppRun
squashfs-root/osu!.desktop
squashfs-root/osu!.png
squashfs-root/usr
squashfs-root/usr/bin
squashfs-root/usr/bin/Commons.Music.Midi.dll
squashfs-root/usr/bin/Dapper.dll
squashfs-root/usr/bin/DeltaCompressionDotNet.dll
squashfs-root/usr/bin/DiffPlex.dll

Bon là c'est du .NET, donc c'est de la dll à la Windows, mais c'est pour l'exemple.

Déployer un programme ça n'a rien à voir avec développer un programme.

Tout comme le forgeron laisse le cordonnier faire l'étui de son couteau, est-ce que c'est au développeur de packager son appli ?
Je conçois parfaitement que linker statiquement (comme Go), embarquer ses dépendances (comme Appimage, Flatpak et autres) ou même son système complet (comme Docker) ; permet à un dev seul de packager son logiciel sans prise de tête. (Et c'est sûrement souhaitable). Pour le reste, autant ne pas réinventer la roue.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 22890 Défis: 149 Message

Citer : Posté le 10/05/2021 22:14 | #


Tout comme le forgeron laisse le cordonnier faire l'étui de son couteau, est-ce que c'est au développeur de packager son appli ?

Si le fxSDK était un logiciel célèbre comme Firefox, il serait packagé par les mainteneurs des distributions. Malheureusement, ce n'est pas le cas. Et quelqu'un doit s'y coller.
Dark storm Hors ligne Labélisateur Points: 11579 Défis: 176 Message

Citer : Posté le 10/05/2021 22:16 | #


C'est ce que je voulais dire par "ne pas réinventer la roue". Quitte à packager un truc complet, Appimage a l'air de correspondre parfaitement au cahier des charges.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 22890 Défis: 149 Message

Citer : Posté le 10/05/2021 22:19 | #


Je ne connais pas vraiment la différence avec un tar.gz pour être honnête. Si le fichier AppImage embarque juste de quoi extraire, ça revient à peu près au même, la vraie différence pour moi c'est le fait de fournir des binaires. (Et puis c'est vite fait de dire « réinventer AppImage » alors que le taux d'utilisation de AppImage est certainement très minoritaire par rapport aux logiciels distribués dans une archive, qui existent depuis bieeeen plus longtemps.)

La subtilité derrière c'est de faire les mises à jour. Je ne sais même pas si fournir des binaire m'intéresse. Pour être honnête, je m'en passerais volontiers.
Précédente 1, 2, 3 ··· 10 ··· 20 ··· 25, 26, 27, 28, 29, 30, 31 ··· 35, 36, 37 Suivante

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 v42 © créé par Neuronix et Muelsaco 2004 - 2023 | Il y a 70 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