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 05/11/2023 15:39 | #
Ah d'accord, et donc pour faire passer les addins faut utiliser l'explorateur de fichier...
Il n'y a aucun moyen que Wsl puisse accéder au périphériques USB, genre en lançant en admin ?
Citer : Posté le 05/11/2023 15:49 | #
C'est une fonctionnalité que WSL doit avoir, pas une question de droits. Après il y a des choses, par exemple https://learn.microsoft.com/en-us/windows/wsl/connect-usb ; peut-être que ça marche maintenant. Je n'ai pas Windows donc il faudrait que quelqu'un teste pour qu'on sache exactement quoi faire si ça marche.
Citer : Posté le 05/11/2023 17:35 | #
J'ai l'impression que tout le monde embête Lephe avec WSL libUSB en ce moment (moi y compris).
Citer : Posté le 05/11/2023 17:36 | #
Passez sous Linux
Caltos : G35+EII, G90+E (briquée )
Citer : Posté le 05/11/2023 17:55 | #
Je veux bien mais Lordi de la région ne veut pas
Je suis allé sur le forum d’ubuntu et en fait il bloque grub, il faut donc changer le lanceur d’ubuntu, ce qui est bien chiant
Citer : Posté le 05/11/2023 18:38 | #
C'est étrange car j'ai un amis qui y a installé un Arch Linux, peut-être que les nouveaux modèles le bloquent mais ça me parait quand même étrange ... Tu es allé vérifié dans le bios la liste des boots disponibles ?
Citer : Posté le 05/11/2023 22:08 | #
Ça doit juste être le BIOS qui est bloqué. Je pense que de toute façon si tu nettoie le disque et que tu mets Linux dessus (Ubuntu ou ce que tu veux) ça va booter dessus; c'est exactement ce que j'ai fait.
Caltos : G35+EII, G90+E (briquée )
Citer : Posté le 06/11/2023 15:32 | #
Mais ce que je voulais faire c'était le mettre en dual boot, pour garder quand même MCNL et mes jeux... Mais dans tous les cas ce n'est pas le bon topic pour en parler, désolé Lephe' [/HS]
Citer : Posté le 06/11/2023 15:37 | #
Y'a pas de souci, j'ai besoin de savoir quels sont les besoins et les limites !
Citer : Posté le 12/11/2023 16:23 | #
Bonjour,
J'ai installé le fxSDK sur un Debian 12 : aucun soucis tout a fonctionné parfaitement du premier coup.
Quelques soucis par contre avec ma Fedora 38.. Mais bon, il suffit que ça fonctionne sur un OS ...
Félicitation pour ce travail et pour les nombreux tuto.
Développer un Add In en C ou en C++ et tirer partie de la puissance des calculatrices est dorénavant à portée de main.
Un question au sujet d'un projet. J'ai crée un dépôt sur la forge gitea pour l'ensemble des sources. Pour le reste (explications, copies d'écrans, binaire, ...) je dois créer un projet de programmation ?
Merci,
Citer : Posté le 12/11/2023 16:30 | #
Je vois pas d'autre manière, alors oui
Je suis en train de travailler sur TD'PC : un Tower Defense sur G35+EII (Bien sûr que oui je travaille dessus )
Cursor Location
Proies
Citer : Posté le 12/11/2023 16:32 | #
Salut,
Tu peux simplement publier le binaire en tant que programme (Profil -> mes programmes -> Soumettre un programme) mais si tu as des choses a dire qui ne rentrent pas dans le format, tu pourrais faire un nouveau sujet du forum en "projet de programmation" effectivement .
Caltos : G35+EII, G90+E (briquée )
Citer : Posté le 12/11/2023 17:12 | #
Merci
Citer : Posté le 12/11/2023 18:38 | #
Quelques soucis par contre avec ma Fedora 38.. Mais bon, il suffit que ça fonctionne sur un OS ...
Chez moi ça marchait sur fedora 38 (j'ai pas encore essayé sur fedora 39), t'as eu quelle erreur ?
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
Citer : Posté le 20/01/2024 17:24 | #
Le fxsdk, il marche si je code en C++?
Citer : Posté le 20/01/2024 18:20 | #
Yup. Faut juste préciser LANGUAGES CXX dans CMakeLists.txt et lier avec -lstdc++ pour avoir la lib standard.
Citer : Posté le 20/01/2024 18:30 | #
Oui aucun problème.
La libstdc++ est intégrée depuis la version 2.9.0
Il faut juste configurer le projet correctement via le CMakeLists.txt à la racine du projet.
cmake_minimum_required(VERSION 3.15)
#préciser le langage CXX
project(myaddin VERSION 1.0 LANGUAGES CXX C ASM)
include(GenerateG3A)
include(Fxconv)
#gint2.9 en version mini
find_package(Gint 2.9 REQUIRED)
set(SOURCES
src/main.cpp
# ...
)
# Shared assets, fx-9860G-only assets and fx-CG-50-only assets
set(ASSETS
# ...
)
set(ASSETS_cg
assets-cg/example.png
# ...
)
fxconv_declare_assets(${ASSETS_cg} WITH_METADATA)
add_executable(myaddin ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}})
target_compile_options(myaddin PRIVATE -Wall -Wextra -Wattributes -O3 -std=c++20)
target_link_options(myaddin PRIVATE -Wl,-Map=Build_Addin.map -Wl,--print-memory-usage -fno-use-cxa-atexit -fpermissive)
#mettre -lstdc++ dans les librairies à inclure
target_link_libraries(myaddin Gint::Gint -lstdc++)
if("${FXSDK_PLATFORM_LONG}" STREQUAL fxCG50)
generate_g3a(TARGET myaddin OUTPUT "MyAddin.g3a"
NAME " " ICONS assets-cg/icon-uns.png assets-cg/icon-sel.png)
endif()
Citer : Posté le 20/01/2024 19:06 | #
Yup. Faut juste préciser LANGUAGES CXX dans CMakeLists.txt et lier avec -lstdc++ pour avoir la lib standard.
Oui aucun problème.
La libstdc++ est intégrée depuis la version 2.9.0
Il faut juste configurer le projet correctement via le CMakeLists.txt à la racine du projet.
cmake_minimum_required(VERSION 3.15)
#préciser le langage CXX
project(myaddin VERSION 1.0 LANGUAGES CXX C ASM)
include(GenerateG3A)
include(Fxconv)
#gint2.9 en version mini
find_package(Gint 2.9 REQUIRED)
set(SOURCES
src/main.cpp
# ...
)
# Shared assets, fx-9860G-only assets and fx-CG-50-only assets
set(ASSETS
# ...
)
set(ASSETS_cg
assets-cg/example.png
# ...
)
fxconv_declare_assets(${ASSETS_cg} WITH_METADATA)
add_executable(myaddin ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}})
target_compile_options(myaddin PRIVATE -Wall -Wextra -Wattributes -O3 -std=c++20)
target_link_options(myaddin PRIVATE -Wl,-Map=Build_Addin.map -Wl,--print-memory-usage -fno-use-cxa-atexit -fpermissive)
#mettre -lstdc++ dans les librairies à inclure
target_link_libraries(myaddin Gint::Gint -lstdc++)
if("${FXSDK_PLATFORM_LONG}" STREQUAL fxCG50)
generate_g3a(TARGET myaddin OUTPUT "MyAddin.g3a"
NAME " " ICONS assets-cg/icon-uns.png assets-cg/icon-sel.png)
endif()
Citer : Posté le 20/01/2024 19:10 | #
Essaie, tu verras bien.
Citer : Posté le 20/01/2024 19:20 | #
Comment j'essaie? Il y a juste Compile for CG et Compile for FX. Bon je verrais demain car je n'ai pas l'ordinateur. Bravo pour le travail du fxsdk!
Citer : Posté le 20/01/2024 19:22 | #
Comme on l'a mentionné avec Sly, il s'agit surtout de modifier CMakeLists.txt.