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 Hors ligne Administrateur Points: 22888 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 ··· 28, 29, 30, 31, 32, 33, 34, 35, 36, 37 Suivante
Ninestars En ligne Membre Points: 2456 Défis: 24 Message

Citer : Posté le 29/08/2021 19:29 | # | Fichier joint


Ok, le voici !
Lephenixnoir Hors ligne Administrateur Points: 22888 Défis: 149 Message

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 :

% /Users/olivierlanneau/Documents/CASIO/gcc/build-libstdc++/./gcc/xgcc
# Doit afficher une ligne avec "Target: sh3eb-elf"

Ainsi que :

% ll $(/Users/olivierlanneau/Documents/CASIO/gcc/build-libstdc++/./gcc/xgcc -print-file-name=include)
Ninestars En ligne Membre Points: 2456 Défis: 24 Message

Citer : Posté le 29/08/2021 23:40 | #


La première commande me renvoie
xgcc: erreur fatale: pas de fichier à l'entrée
compilation terminée.

Et la seconde commande renvoie
total 160
-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
Lephenixnoir Hors ligne Administrateur Points: 22888 Défis: 149 Message

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 ?

% ll sh3eb-elf
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.
Lephenixnoir Hors ligne Administrateur Points: 22888 Défis: 149 Message

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.
Ninestars En ligne Membre Points: 2456 Défis: 24 Message

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
Lephenixnoir Hors ligne Administrateur Points: 22888 Défis: 149 Message

Citer : Posté le 30/08/2021 21:37 | #


Il faut que tu crées le symlink à la main du coup :

% ln -s $(sh-elf-gcc -print-file-name=include) sh3eb-elf/include

Quant à sys-include les instructions pour le créer sont dans le README, tu as dû y passer normalement.
Ninestars En ligne Membre Points: 2456 Défis: 24 Message

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 :
make[4]: Nothing to be done for install-data-am

Avec toutefois un tas de
Libraries have been installed in
Donc ça sent pas trop mauvais !
Lephenixnoir Hors ligne Administrateur Points: 22888 Défis: 149 Message

Citer : Posté le 31/08/2021 08:02 | #


Ça a l'air pas mal !

Ninestars a écrit :
- 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.

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

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.

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 :

Ça doit être bon
Caboun Hors ligne Membre Points: 1200 Défis: 0 Message

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
Lephenixnoir Hors ligne Administrateur Points: 22888 Défis: 149 Message

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 :

% cmake -B build -DCMAKE_INSTALL_PREFIX=$HOME/.local

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.
Caboun Hors ligne Membre Points: 1200 Défis: 0 Message

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 :
In file included from /home/***/.prefix/fxsdk/fxlink/ud2.c:4:
/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
Lephenixnoir Hors ligne Administrateur Points: 22888 Défis: 149 Message

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 :

% cmake -B build -DCMAKE_INSTALL_PREFIX=$HOME/.local -DFXLINK_DISABLE_UDISKS2=1

Edit: Tu peux annuler tes modifications avec git checkout CMakeLists.txt
Caboun Hors ligne Membre Points: 1200 Défis: 0 Message

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 !
Lephenixnoir Hors ligne Administrateur Points: 22888 Défis: 149 Message

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
Caboun Hors ligne Membre Points: 1200 Défis: 0 Message

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.
Lephenixnoir Hors ligne Administrateur Points: 22888 Défis: 149 Message

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.
Farhi Hors ligne Membre Points: 927 Défis: 0 Message

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.
"La créativité est contagieuse faites la tourner"
Albert Einstein
Gladosse Hors ligne Membre Points: 169 Défis: 2 Message

Citer : Posté le 17/11/2021 17:52 | #


essaye /configure
Farhi Hors ligne Membre Points: 927 Défis: 0 Message

Citer : Posté le 17/11/2021 17:55 | #


Non plus, ça marche pas, ni le "make" et "make install"
"La créativité est contagieuse faites la tourner"
Albert Einstein
Gladosse Hors ligne Membre Points: 169 Défis: 2 Message

Citer : Posté le 17/11/2021 17:59 | #


si tu fais
ls
est-ce que le fichier configure est present?

tu as peut etre oublie
cd fxsdk
Précédente 1, 2, 3 ··· 10 ··· 20 ··· 28, 29, 30, 31, 32, 33, 34, 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 61 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