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 15/07/2015 17:36 | #
Je pense quand même le mettre dans /usr/bin parce que c'est plus commode... t'en penses quoi ?
Citer : Posté le 15/07/2015 17:38 | #
C'est mieux que dans $HOME/bin, c'est sur
Citer : Posté le 15/07/2015 19:37 | #
Voilà, le wrapper est presque finalisé.
Encore quelques réglages et améliorations et ça devrait être terminé...
Ajouté le 15/07/2015 à 22:45 :
Dernier commit, c'est fini.
Mon TODO ne comporte plus que trois lignes complètement anecdotiques...
Je ne sais pas comment on le code et puis personne ne s'en sert.
Ça c'est pou pouvoir remplir manuellement la(les) section(s) non-significative(s) pour reconnaître les programmes ou autre usage quelconque, cela dit on a déjà l'internal app name pour ça.
J'ai des valeurs bizarres quand je lis des bitmaps 16-bit, mais la sortie est bonne. Faudrait que je m'y remette en détail...
Citer : Posté le 15/07/2015 22:49 | #
Super, je màj dès que possible (j'aurais peut être une icône correcte du coup )
Citer : Posté le 15/07/2015 22:50 | #
j'aurais peut être une icône correcte du coup
Je te l'accorde... ^^'
Citer : Posté le 16/07/2015 07:14 | #
Ben, faut savoir qu'actuellement l'icône est en négatif par rapport à ce qu'elle devrait être ><
Enfin bon, si ton truc corrige ça tant mieux.
Citer : Posté le 16/07/2015 07:38 | #
Ben, faut savoir qu'actuellement l'icône est en négatif par rapport à ce qu'elle devrait être ><
Enfin bon, si ton truc corrige ça tant mieux.
C'est assez vieux ça, un des premiers commits que j'ai renvoyés...
C'est corrigé maintenant, évidemment
Ajouté le 16/07/2015 à 07:40 :
En fait mes tests étaient complètement biaisés parce que quand tu enregistres un format de bmp avec gimp (Shift+Ctrl+E), tu choisis l'encodage, mais si ensuite tu rappuies sur Ctrl+E, il te le met en 24 bits au lieu de garder ton encodage originel. x) (sauf si ledit encodage est en 1-bit)
Citer : Posté le 16/07/2015 07:41 | #
Ah, le salaud
Au passage, c'est bien Photoshop qui n'adapte pas le format de fichier à l'extension, l'autre jour il m'a sorti un jpg illisible, en fait c'était du psd ><
Citer : Posté le 19/04/2016 09:24 | #
ce projet est il toujours en cours ?
si oui il y a il une version d'essai pour commencer a l'utiliser
Citer : Posté le 19/04/2016 09:26 | #
https://bitbucket.org/Lephenixnoir/fxsdk
Citer : Posté le 19/04/2016 09:31 | #
ce projet est il toujours en cours ?
Oui, certainement ! Je bosse dessus à plein temps depuis le début des vacances (je ne l'avais jamais explicité mais gint c'est la lib qui supporte le fxSDK en fait...).
Mais après réflexion, j'ai décidé de laisser tomber l'interface graphique que j'avais commencée. Le fxSDK cherche surtout à apporter de la fonctionnalité, des optimisations et des outils, et cette interface n'apporte rien de plus qu'un générateur de Makefile (qui n'est pas suffisant pour la justifier). Du coup je suis en train d'écrire divers outils en ligne de commande destinés à compléter et simplifier le développement sous Linux.
si oui il y a il une version d'essai pour commencer a l'utiliser
Oui, le repo Bitbucket indiqué par Intelligide contient une version, mais il faut d'abord compiler gcc (étape incontournable de toute façon !) et installer Qt (qui ne sert que pour l'interface graphique). Elle n'est pas du tout à jour
Citer : Posté le 22/04/2016 17:03 | #
et peut-on trouver une version a jour?
Citer : Posté le 22/04/2016 17:09 | #
Il n'y a pas de version à jour, parce que les versions actuelles se contentent d'afficher une fenêtre et de faire une interface avec les outils de compilation.
Les versions que j'ai en local sont constituées de plusieurs libs (la libc, gint) et outils (encodeur d'images, de polices, wrapper, analyseur d'os, etc.) qui forment le noyau du SDK. Il n'y aura pas d'interface graphique avant longtemps, et peut-être pas tout court.
Je ne mets pas encore à jour le topic parce que je n'ai rien publié, mais ça viendra.
Citer : Posté le 22/04/2016 17:13 | #
La libc ça serai peut-être bien de la mettre en ligne vu qu'elle est quasi-complète et que du coup les fonctions qui ne sont pas écrites pourront l'être non ?
Citer : Posté le 22/04/2016 17:25 | #
Quasi complète ? Ben euh, y'a au moins 4 ou 5 versions sur mon disque et la seule qui soit parfaitement fiable -- celle de gint -- ne comporte que des versions rapides de memcpy() et memset()... ^^'
Citer : Posté le 22/04/2016 17:38 | #
Et moi qui croyais que t'en avais une version potable… >_<
Citer : Posté le 22/04/2016 17:39 | #
C'est compliqué parce qu'à chaque fois il est nécessaire de pouvoir l'intégrer dans d'autres projets, et ça génère souvent des incompatibilités... c'est un peu compliqué, mais d'anciennes versions que j'avais n'auraient pas pu tourner en totalité avec gint().
Après, oui, 90% de ce que j'ai écrit est réutilisable, mais ça je le reprendrai quand j'aurai fini gint... Et j'ai encore plein de problèmes avec de foutu clavier ! >_<
Citer : Posté le 22/04/2016 17:42 | #
Met-le en ligne, tu te fera aider au moins…
Et puis c'est pas comme si la libc c'était un truc vraiment compliqué (je parle pour les fonctions bidons, pas le printf).
Citer : Posté le 22/04/2016 17:45 | #
Les fonctions bidons sont déjà écrites, et si tu les veux pour ton projet... ben, c'est bidon justement ^^'
Citer : Posté le 22/04/2016 17:53 | #
Bon bah avis à qui entendra, le GitLab n'attend que vous pour proposer une implémentation de la lib standard du C sans se baser sur la fxlib.
Citer : Posté le 22/04/2016 17:55 | #
Bon bah avis à qui entendra, le GitLab n'attend que vous pour proposer une implémentation de la lib standard du C sans se baser sur la fxlib.
Tu comprends mal ce que je dis... ^^'
En plus je te rappelle que ça fera des collisions avec fxlib !