Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » fxSDK, un SDK alternatif pour écrire des add-ins
LephenixnoirEn ligneAdministrateurPoints: 15231 Défis: 136 Message

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

Posté le 29/08/2014 22:00

Le fxSDK est une alternative au SDK habituel de Casio. Il permet de développer des add-ins pour la famille de la Graph 35+E et la Graph 90+E, et offre de meilleures performances et plus de possibilités !

Les outils du fxSDK

Le fxSDK marche sous Linux et a été compilé pour Mac OS ; il ne marche pas encore pour Windows mais on peut en discuter.

Il se fonde sur l'indispensable compilateur gcc et sa suite d'outils : as, ld, objdump, objcopy (entre autres). Contrairement au vieux compilateur du SDK, gcc est un compilateur moderne avec beaucoup de possibilités. Il n'est pas fourni avec le fxSDK et fait l'objet d'un tutoriel d'installation à part.

Côté calculatrice, c'est le noyau gint qui fait le travail. Il remplace fxlib 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 !

Le fxSDK fournit également des outils spécifiques pour compiler et étudier les programmes de la calculatrice.

fxsdk est un petit gestionnaire de projet qui vous permet de créer et compiler facilement des projets sans vous prendre la tête avec le Makefile. Parfait si vous ne voulez pas connaître toutes les détails compliqués.

fxg1a sert à créer les fichiers g1a finaux à partir du programme compilé. C'est le successeur de mon vieux g1a-wrapper qui était beaucoup moins puissant.

fxconv convertit des données pour vos add-ins, commes vos images ou polices, dans des formats spécifiques de gint. C'est un peu comme le Sprite Coder mais ça vous évite de copier des gros tableaux dans votre programme et surtout le dessin est beaucoup plus performant !

fxos est un désassembleur et manipulateur d'OS capable de retrouver et disséquer des syscalls en un tour de poignet. C'est un outil de reverse-engineering dont l'usage principal est de produire des listings assembleur annotés pour comprendre très rapidement le code.

Il y a pas mal de différences avec le SDK de Casio donc passer au fxSDK nécessite un peu d'adaptation.

Installer le fxSDK sur votre ordinateur

Ça se passe en trois étapes :

1. Compiler un compilateur gcc à destination de la calculatrice
2. Installer le fxSDK
3. Installer le noyau, gint

Je suppose ici que vous connaissez les bases de la ligne de commande, mais si ce n'est pas le cas, n'hésitez pas à laisser un commentaire pour demander.

La première chose est de vous préparer un cross-compilateur gcc. Vous pouvez sauter l'installation du g1a-wrapper et venir ici dès que la libgcc est installée. Assurez-vous que le compilateur est dans le PATH est vous serez prêt ! C'est le plus gros morceau donc une fois que vous aurez ça, vous aurez déjà pratiquement fini.

Clônez le dépôt git du fxSDK depuis la forge de Planète Casio (vous pouvez aussi utiliser SSH).

% git clone 'https://gitea.planet-casio.com/Lephenixnoir/fxsdk.git'

Configurez le fxSDK ; vous pouvez taper "./configure --help" voir les options disponibles. Par défaut, le fxSDK sera installé dans votre dossier personnel (dans ".local").

% cd fxsdk
% ./configure

Ensuite compilez et installez ! Si vous avez choisi un dossier d'installation différent avec --prefix ou si vous compilez sous Mac, vous pourriez avoir besoin de sudo à l'installation.

% make
% make install

Assurez-vous que votre dossier de destination est dans votre PATH, puis vous pouvez installer gint.

Vous êtes alors prêt à partir !

Développer des programmes avec le fxSDK

TODO: Ajouter l'utilisation de fxsdk.

Toute la partie programmation revient à développer des programmes avec gint. Les tutoriels d'utilisation de gint couvrent tous ce dont vous aurez besoin, y compris l'utilisation de fxconv.


Fichier joint


Pages : Précédente1 ... , 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ... 21Suivante
LephenixnoirEn ligneAdministrateurPoints: 15231 Défis: 136 Message

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 ?
Dark stormHors ligneMembre d'honneurPoints: 10783 Défis: 174 Message

Citer : Posté le 15/07/2015 17:38 | #


C'est mieux que dans $HOME/bin, c'est sur
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
LephenixnoirEn ligneAdministrateurPoints: 15231 Défis: 136 Message

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...
* e-strips

Je ne sais pas comment on le code et puis personne ne s'en sert.
* custom sequences

Ç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.
* fully support 16-bit

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...
Dark stormHors ligneMembre d'honneurPoints: 10783 Défis: 174 Message

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 )
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
LephenixnoirEn ligneAdministrateurPoints: 15231 Défis: 136 Message

Citer : Posté le 15/07/2015 22:50 | #


Dark storm a écrit :
j'aurais peut être une icône correcte du coup

Je te l'accorde... ^^'
Dark stormHors ligneMembre d'honneurPoints: 10783 Défis: 174 Message

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.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
LephenixnoirEn ligneAdministrateurPoints: 15231 Défis: 136 Message

Citer : Posté le 16/07/2015 07:38 | #


Dark storm a écrit :
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)
Dark stormHors ligneMembre d'honneurPoints: 10783 Défis: 174 Message

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 ><
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
Suruq gameHors ligneMembre de CreativeCalcPoints: 619 Défis: 20 Message

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
There is only one thing that makes a dream impossible to achieve : the fear of failure
IntelligideHors ligneMembre de CreativeCalcPoints: 46 Défis: 5 Message

Citer : Posté le 19/04/2016 09:26 | #


https://bitbucket.org/Lephenixnoir/fxsdk
LephenixnoirEn ligneAdministrateurPoints: 15231 Défis: 136 Message

Citer : Posté le 19/04/2016 09:31 | #


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

Suruq game a écrit :
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
HackcellEn ligneMembrePoints: 1101 Défis: 6 Message

Citer : Posté le 22/04/2016 17:03 | #


et peut-on trouver une version a jour?
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
LephenixnoirEn ligneAdministrateurPoints: 15231 Défis: 136 Message

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.
Dark stormHors ligneMembre d'honneurPoints: 10783 Défis: 174 Message

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 ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
LephenixnoirEn ligneAdministrateurPoints: 15231 Défis: 136 Message

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()... ^^'
Dark stormHors ligneMembre d'honneurPoints: 10783 Défis: 174 Message

Citer : Posté le 22/04/2016 17:38 | #


Et moi qui croyais que t'en avais une version potable… >_<
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
LephenixnoirEn ligneAdministrateurPoints: 15231 Défis: 136 Message

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 ! >_<
Dark stormHors ligneMembre d'honneurPoints: 10783 Défis: 174 Message

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).
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
LephenixnoirEn ligneAdministrateurPoints: 15231 Défis: 136 Message

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 ^^'
Dark stormHors ligneMembre d'honneurPoints: 10783 Défis: 174 Message

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.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
LephenixnoirEn ligneAdministrateurPoints: 15231 Défis: 136 Message

Citer : Posté le 22/04/2016 17:55 | #


Dark storm a écrit :
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 !
Pages : Précédente1 ... , 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ... 21Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 44 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