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)
- Suivez le tutoriel d'utilisation de GiteaPC, qui explique comment obtenir le fxSDK.
Méthode automatique avec plugin VS Code
- Yannis300307 a créé un plugin VS Code Casio Dev Tools qui fonctionne sous Windows (avec WSL) et Debian (probablement les dérivés aussi).
Méthode AUR pour les utilisateurs Arch/Manjaro/dérivés (ils se reconnaîtront)
- 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)
- Compilez et installez le cross-compilateur GCC pour SuperH.
- 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.
Citer : Posté le 29/08/2021 19:29 | # | Fichier joint
Ok, le voici !
Citer : Posté le 29/08/2021 20:11 | #
Ta fxlibc n'est pas bien installée je pense, stdio.h n'est simplement pas trouvé. Peux-tu tester :
# Doit afficher une ligne avec "Target: sh3eb-elf"
Ainsi que :
Citer : Posté le 29/08/2021 23:40 | #
La première commande me renvoie
compilation terminée.
Et la seconde commande renvoie
-rw-r--r-- 1 olivierlanneau staff 719 29 aoû 17:04 assert.h
-rw-r--r-- 1 olivierlanneau staff 74 29 aoû 17:04 complex.h
-rw-r--r-- 1 olivierlanneau staff 2430 29 aoû 17:04 ctype.h
-rw-r--r-- 1 olivierlanneau staff 320 29 aoû 17:04 errno.h
-rw-r--r-- 1 olivierlanneau staff 664 29 aoû 17:04 fcntl.h
-rw-r--r-- 1 olivierlanneau staff 71 29 aoû 17:04 fenv.h
drwxr-xr-x 3 olivierlanneau staff 96 29 aoû 17:04 fxlibc
-rw-r--r-- 1 olivierlanneau staff 6037 29 aoû 17:04 inttypes.h
-rw-r--r-- 1 olivierlanneau staff 958 29 aoû 17:04 locale.h
-rw-r--r-- 1 olivierlanneau staff 71 29 aoû 17:04 math.h
-rw-r--r-- 1 olivierlanneau staff 654 29 aoû 17:04 setjmp.h
-rw-r--r-- 1 olivierlanneau staff 1266 29 aoû 17:04 signal.h
-rw-r--r-- 1 olivierlanneau staff 4473 29 aoû 17:04 stdio.h
-rw-r--r-- 1 olivierlanneau staff 3759 29 aoû 17:04 stdlib.h
-rw-r--r-- 1 olivierlanneau staff 3866 29 aoû 17:04 string.h
drwxr-xr-x 8 olivierlanneau staff 256 29 aoû 17:04 sys
-rw-r--r-- 1 olivierlanneau staff 25 29 aoû 17:04 syscall.h
drwxr-xr-x 7 olivierlanneau staff 224 29 aoû 17:04 target
-rw-r--r-- 1 olivierlanneau staff 1791 29 aoû 17:04 threads.h
-rw-r--r-- 1 olivierlanneau staff 566 29 aoû 17:04 time.h
-rw-r--r-- 1 olivierlanneau staff 2402 29 aoû 17:04 unistd.h
Citer : Posté le 30/08/2021 08:56 | #
Oups j'ai oublié -v sur la première commande. Mais peu importe, c'est le bon compilo aucun doute. Et les headers fxlibc sont là, donc la compilation ne reflète pas ce qui devrait se passer.
Est-ce que dans ton dossier GCC (le parent de build-libstdc++) tu as bien sh3eb-elf avec ces éléments ?
Permissions Size User Date Modified Name
drwxr-xr-x - el 30 May 14:15 bin
lrwxrwxrwx 86 el 30 May 14:52 include -> <CHEMIN>/sh-elf-gcc/lib/gcc/sh3eb-elf/11.1.0/include
lrwxrwxrwx 79 el 30 May 14:52 lib -> <CHEMIN>/sh-elf-gcc/lib/gcc/sh3eb-elf/11.1.0
drwxr-xr-x - el 13 Jun 18:20 sys-include
En particulier le faut le lien symbolique include et que si tu ll le répertoire visé tu aies bien stdio.h dedans.
Citer : Posté le 30/08/2021 21:11 | #
Nouvelle version : fxSDK 2.6.0
Release associée de gint : gint 2.6.0
Deux changements dans cette version :
Les deux sont des changements assez pétés, je vous laisse voir les messages respectifs pour les détails.
Citer : Posté le 30/08/2021 21:35 | #
Dans le dossier CASIO/gcc/sh3eb-elf j'ai un dossier bin et un dossier lib. Visiblement, rien d'autre dedans : )
Génial la capture vidéo sur l'ordi, plus besoin de passer par l'émulateur ni de filmer l'écran irl !
Balèze ! bravo
Citer : Posté le 30/08/2021 21:37 | #
Il faut que tu crées le symlink à la main du coup :
Quant à sys-include les instructions pour le créer sont dans le README, tu as dû y passer normalement.
Citer : Posté le 31/08/2021 00:22 | #
C'est bien parce que en même temps j'apprends des trucs à chaque fois, là j'ai découvert ce qu'est un symlink
Ok, du coup j'ai désormais dans CASIO/gcc/sh3eb-elf j'ai bien :
- bin
- lib
- include : symlink vers CASIO/gcc/lib/gcc/sh3eb-elf/10.2.0/include
- sys-include : avec dedans plein de symlink de .h + stdint.h (pas stdio.h je pense que tu t'es trompé dans ton message plus haut)
J'ai lancé echo '#include "stdint-gcc.h"' > ../sh3eb-elf/sys-include/stdint.h mais il "ne s'est rien passé". En tout cas j'ai eu aucune affichage et comme je sais pas ce que fait la commande
Ensuite make all-target-libstdc++-v3 puis make install-strip-target-libstdc++-v3 qui s'est terminé sans que je sache trop si ça a bien fonctionné, ça fini par :
Avec toutefois un tas de
Citer : Posté le 31/08/2021 08:02 | #
Ça a l'air pas mal !
- sys-include : avec dedans plein de symlink de .h + stdint.h (pas stdio.h je pense que tu t'es trompé dans ton message plus haut)
En effet pas de stdio.h ici (mais je ne crois pas avoir dit ça, enfin en tous cas tu as raison.
echo ça affiche ce que tu demandes, ici #include "stdint-gcc.h". Et le reste de la commande, de la forme > fichier, est une primitive du shell (qui ne fait donc pas partie de la commande echo) pour rediriger l'affichage vers un fichier. En bref, cette commande écrit #include "stdint-gcc.h" dans le fichier ../sh3eb-elf/sys-include/stdint.h ce qui "génère" le header. En sortie tu n'as rien parce que c'est une commande toute simple et que la sortie est déjà dans le fichier.
Ça doit être bon
Citer : Posté le 22/09/2021 09:42 | #
Bonjour,
Tout d'abord bravo pour cet ambitieux projet.
Je viens de redécouvrir ma vieille Graph 85 dans un carton et cela m'a motivé pour y faire quelques tests, ce qui m'a conduit vers ce tutoriel.
Je tente de configurer mon PC sous Ubuntu en suivant les 3 étapes, mais reste bloqué à l'installation du FxSDK.
J'ai bien suivi toutes les commandes évoquées dans le tuto cross-compilateur-gcc, j'en suis donc à l'étape "Installer le fxSDK", étape qui me pose problème.
Voici ce que j'ai fait :
- récupéré les fichiers dans mon répertoire ~/.local avec git clone 'https://gitea.planet-casio.com/Lephenixnoir/fxsdk.git'
- depuis ce nouveau répertoire (cd fxsdk), fait make, mais la commande n'est pas reconnue
- J'ai vu qu'il y avait un CMake, donc j'ai tenté de faire cmake, mais à l'issue de cette commande il n'y a pas d'exécutable de créé.
- Je tente quand même un "fxsdk new MyAddin" (commande proposée dans le ReadMe du repo git), mais sans résultat
Je comprends que des modifications ont été faites sur le FxSDK depuis ce tutoriel, peut-être que celles-ci nécessitent d'autres commandes.
Auriez-vous une piste ? Avez-vous une idée de là où ça coince pour moi ?
Merci d'avance
Citer : Posté le 22/09/2021 09:48 | #
Merci ! Bon retour sur Planète Casio. Tu n'es franchement pas loin, les instructions détaillées sont un peu cachées en bas du README.
CMake ne fait que créer un Makefile qu'il faut ensuite lancer. Je conseille de faire cmake -B build pour compiler dans un sous-dossier build. À l'issue de cette commande, tu peux faire make -C build et même directement make -C build install.
Cela dit, je conseille d'installer dans un dossier local genre ~/.local, auquel cas il faut ajouter un paramètre (standard) à la commande CMake :
Le dépôt n'est pas trop pensé pour être clôné dans ~/.local (j'aurais un peu peur que le code du dépôt se mélange aux fichiers installés), si ce n'est pas trop tard je conseille de le mettre ailleurs (ou d'installer ailleurs, ~/.prefix est un classique). Dans tous les cas il faudra t'assurer que le dossier de destination est dans ton PATH, il y a un petit tutoriel si jamais tu ne sais pas déjà le faire par coeur.
Citer : Posté le 22/09/2021 09:56 | #
Merci pour ton retour.
Je teste ça ce soir et je croise les doigts.
Ajouté le 22/09/2021 à 19:35 :
Je progresse !
Suite à ton message, j'ai effacé le repo git de .local pour le cloner dans .prefix, puis j'ai fait la commande "cmake -B build -DCMAKE_INSTALL_PREFIX=$HOME/.local"
Cela n'est pas allé jusqu'au bout, (message : No package 'udisks2' found).
Comme c'est indiqué dans le Readme que Udisks2 est optionnel, j'ai ouvert CMakeLists.txt et j'ai commenté toutes les lignes contenant "UDISKS2", notamment "option(FXLINK_DISABLE_UDISKS2 "Do not build the UDisks2-based features of fxlink")". Je pense qu'on peut faire plus simple au passage, mais au moins ça me permet d'executer le cmake sans erreur.
En revanche quand j'entre "make -C build install" j'ai un nouveau message d'erreur :
/home/***/.prefix/fxsdk/fxlink/ud2.h:10:10: fatal error: udisks/udisks.h: Aucun fichier ou dossier de ce type
10 | #include <udisks/udisks.h>
| ^~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/fxlink.dir/build.make:141 : CMakeFiles/fxlink.dir/fxlink/ud2.c.o] Erreur 1
make[2] : on quitte le répertoire « /home/***/.prefix/fxsdk/build »
make[1]: *** [CMakeFiles/Makefile2:80 : CMakeFiles/fxlink.dir/all] Erreur 2
make[1] : on quitte le répertoire « /home/***/.prefix/fxsdk/build »
make: *** [Makefile:130 : all] Erreur 2
make : on quitte le répertoire « /home/***/.prefix/fxsdk/build »
Je tente d'installer le paquet udisks mais on m'indique qu'il est obsolète et ne peut être installé.
Où me suis-je trompé ?
Merci d'avance
Citer : Posté le 22/09/2021 19:57 | #
Tu t'es trompé quand tu as voulu modifier le CMakeLists.txt ! La ligne option(FXLINK_DISABLE_UDISKS2 etc) indique justement l'existence d'une option, qu'il te suffit d'activer sur la ligne de commande :
Edit: Tu peux annuler tes modifications avec git checkout CMakeLists.txt
Citer : Posté le 22/09/2021 20:35 | #
Je savais que ça devait fonctionner a peu près comme ça, mais je n'avais pas la bonne règle.
Et pour le coup ça marche nickel. Merci beaucoup !
Citer : Posté le 22/09/2021 20:36 | #
Super ! Bon courage pour le reste des installations (il doit y en avoir encore un peu), et amuse-toi bien
Citer : Posté le 23/09/2021 15:03 | #
C'est bon tout fonctionne. J'ai pu compiler mon premier .g1a !
Petite question en revanche : le programme de test (Sample fxSDK add-in.) fait tout de même 25852 octets. Ça te paraît cohérent ? J'imagine que cela peut monter assez vite avec toutes les librairies chargées.
Citer : Posté le 23/09/2021 15:41 | #
Aaah tu as mis le doigt sur l'inconvénient le plus évident de gint : tu trimballes beaucoup de code. Selon si tu utilises beaucoup de fonctions ou pas tu vas généralement payer entre 25 ko et 75 ko (sur la Graph 90+E de toute façon il y a déjà dans les 27 ko qui sont pris par l'icône du g3a, gint ou pas).
Donc oui c'est normal ; a priori ton propre code devrait vite dépasser celui de gint en termes de place.
Citer : Posté le 17/11/2021 17:51 | #
Bonjour, j'ai un problème pour Installer le fxSDK (J'utilise Windows avec WSL)
Alors j'ai réussi à installer le cross-compilateur gcc mais quand je fait "./configure" après avoir clone le git ça me met ça :
"-bash: ./configure: No such file or directory"
Et pourtant il a bien clone, j'ai bien le dossier fxsdk avec des fichiers à l'intérieur.
Albert Einstein
Citer : Posté le 17/11/2021 17:52 | #
essaye /configure
Citer : Posté le 17/11/2021 17:55 | #
Non plus, ça marche pas, ni le "make" et "make install"
Albert Einstein
Citer : Posté le 17/11/2021 17:59 | #
si tu fais
tu as peut etre oublie