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: 20781 Défis: 143 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. Template intermédiaire par KikooDX.

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


Précédente 1, 2, 3 ··· 10 ··· 20 ··· 25, 26, 27, 28, 29, 30, 31 Suivante
Lephenixnoir Hors ligne Administrateur Points: 20781 Défis: 143 Message

Citer : Posté le 29/01/2021 18:46 | #


Nouvelle version : fxSDK 2.3.0

Et voici la version 2.3 du fxSDK. C'est une version très orientée vers la distribution, pour rendre plus facile le partage des outils, programmes et bibliothèques, et la gestion des projets. J'espère que vous y trouverez votre compte, toute l'intention est de vous aider et/ou simplifier la vie.

Cette version arrive aussi avec GiteaPC qui fait le plus gros du boulot pour utiliser et mettre à jour des bibliothèques en deux coups de clavier. Je vous suggère d'y jeter un oeil, vous pourriez tourner avec tout à jour en 5-10 minutes.

Trois tutoriels accompagnent cette version :
Utilisation de GiteaPC pour gérer un environnement de développement
[Tutoriel] Compiler des add-ins avec CMake (fxSDK)
Lephenixnoir/Template-gint-library d'écrit l'utilisation du fxSDK et de CMake pour créer une bibliothèque gint

Voici les détails des changements !

Nouveautés
• Ajouté un système plus élégant de conversion pour fxconv. Explications et instructions de migration.
• Ajouté le support de CMake comme système de compilation. Tout l'écosystème fxSDK bénéficie de ce support, j'ai par exemple modifié mes libs en conséquence. Explications et instructions de migration.
• Ajouté des modules CMake utilitaires : pour déterminer la version d'un projet à partir des tags et commits Git, et pour faciliter l'écriture de Find<Package>.cmake pour les bibliothèques

Changements
• libprof est désormais séparée en libprof-fx et libprof-cg. Brèves instructions de migration.
• La commande fxsdk update a été supprimée, les mises à jour de Makefile étant toujours plus compliquées qu'une simple copie. Si vous voulez éviter de vous y intéresser, considérez l'utilisation de CMake, qui est plus simple à comprendre et à gérer pour les débutants.
fxg1a donnera toujours un nom interne (celui de la forme @ADDIN) correct donc ce n'est plus la peine de le spécifier. De toute façon personne ne s'en sert, c'était juste un coup à se planter de format (ce qui rend l'add-in invisible sur le menu principal).
fxsdk new ne demande plus d'informations interactivement. Pour les Makefile il choisit des valeurs par défaut sensibles (à modifier dans project.cfg), pour CMake vous devez modifier CMakeLists.txt (dans lequel vous devez déjà ajouter les fichiers source etc).
fxsdk new a une nouvelle option --makefile pour générer des Makefile (par défaut il utilise CMake).

Ajouté le 29/01/2021 à 19:36 :
Les instructions d'utilisation de GiteaPC ont été mises à jour avec des instructions spécifiques pour la création et la migration d'environnements de développement fxSDK/gint, ce qui conclut cette release (à quelques détails près).

Enjoy!
Lephenixnoir Hors ligne Administrateur Points: 20781 Défis: 143 Message

Citer : Posté le 30/01/2021 23:11 | #


Comme toujours avec les releases plus ou moins grosses, des bugs sont aussitôt trouvés, aussitôt corrigés.

Nouveau patch : fxSDK 2.3.1

Corrections de bugs
• Corrigé la détection du dossier d'installation du compilateur dans le système CMake, qui était mal détecté sur les systèmes où la locale n'est pas anglaise.
Ninestars Hors ligne Membre Points: 2384 Défis: 22 Message

Citer : Posté le 04/04/2021 23:07 | #


J'ai regardé les quelques dernières pages sans trouver de réponde, donc désolé de te déranger encore un peu,
mais j'ai une erreur au make install
the -R and -r options may not be specified together.
Lephenixnoir Hors ligne Administrateur Points: 20781 Défis: 143 Message

Citer : Posté le 04/04/2021 23:15 | #


Une erreur à cause des différences de cp sous Mac OS, il semblerait. Essaie s'il te plaît de modifier la ligne 96 du Makefile par un cp -rp, ça devrait marcher aussi bien. Une fois la modif faite relance ton make install (ou la commande GiteaPC si tu t'es servi de ça).
Ninestars Hors ligne Membre Points: 2384 Défis: 22 Message

Citer : Posté le 05/04/2021 00:01 | #


Merci, j'ai cherché sur internent mais je ne vois pas comment modifier ça, je n'ai pas la main sur le fichier. Je ne suis pas un as de git
Comment dois-je faire ?

Ajouté le 05/04/2021 à 00:30 :
C'est bon j'ai trouvé (et surtout, j'ai compris). Etape suivante !
Kikoodx En ligne Labélisateur Points: 2726 Défis: 11 Message

Citer : Posté le 16/04/2021 11:26 | #


Bonjour ! J'ai créé un template de projet fxsdk sur le Gitea. Pas grand chose vraiment, mais dans l'espoir que cela aide quelques personnes je le partage ici.
https://gitea.planet-casio.com/KikooDX/gint-project-template

Cette base comprend :
un README plus complet que nécessaire
une LICENSE 0BSD (vous êtes libres d'en utiliser une autre ou de la supprimer !)
un exemple d'inclusion de function
un CMakeLists.txt facilement customisable avec pas mal de warnings par défaut
une tarte au citron
une configuration clang-format prête à partir
quelques autres détails que j'ai oublié

Si vous avez des commentaires/retours, je peux réduire ou augmenter cette base au besoin.
Ce sera tout, bonne fin de matinée
Protip
Ne me remerciez pas
Cakeisalie5 Hors ligne Membre de CreativeCalc Points: 1853 Défis: 10 Message

Citer : Posté le 16/04/2021 11:29 | #


Je cherche encore la tarte au citron.

Promotion ordinaire sur les inscriptions sur Planète Casio : en ce moment, c'est gratuit !
Mon blogBesoin d'utilitaires de transfert vers et depuis la calculatrice sous GNU/Linux ?
Lephenixnoir Hors ligne Administrateur Points: 20781 Défis: 143 Message

Citer : Posté le 16/04/2021 11:40 | #


Nice ! Il faut que je refasse ce topic, j'ajouterai une référence à ton template pour sûr. En attendant j'ai mis un lien dans le TODO comme ça j'oublierai pas.

Rien à dire sur le template, à part que -Os ne fait rien de particulier pour réduire la taille du code, c'est juste -O2 moins 5-10 optis qui ont tendance à faire augmenter le poids du fichier.
Kikoodx En ligne Labélisateur Points: 2726 Défis: 11 Message

Citer : Posté le 16/04/2021 11:47 | #


Cakeisalie5 a écrit :
Je cherche encore la tarte au citron.

Cherche aux tréfonds de ton âme, la tarte au citron t'y attend.

Lephenixnoir a écrit :
Rien à dire sur le template, à part que -Os ne fait rien de particulier pour réduire la taille du code, c'est juste -O2 moins 5-10 optis qui ont tendance à faire augmenter le poids du fichier.

Je n'ai pas trouvé de meilleure description, est-ce que tu peux me suggérer quelque chose ?
Protip
Ne me remerciez pas
Lephenixnoir Hors ligne Administrateur Points: 20781 Défis: 143 Message

Citer : Posté le 16/04/2021 11:48 | #


C'est pas très important, mais je peux suggérer ça.

# -Os: like -O2 without space-expensive optimizations
# -O2: good speed/compile time tradeoff
# -O3: gotta go fast
Kikoodx En ligne Labélisateur Points: 2726 Défis: 11 Message

Citer : Posté le 16/04/2021 11:53 | #


J'ai poussé le changement (et corrigé un oubli de ma part en passant), merci
Protip
Ne me remerciez pas
Lephenixnoir Hors ligne Administrateur Points: 20781 Défis: 143 Message

Citer : Posté le 27/04/2021 15:56 | #


Nouvelle version : fxSDK 2.4.0

Cette release accompagne gint 2.4.0, même s'il n'y a pas beaucoup de changements. Il n'y a qu'un ajout :

• Ajouté un nouvel outil fxlink qui permet pour l'instant de monter les calculatrices Stockage de Masse USB (Graph 35+E II et Graph 90+E) via UDisks2 pour transférer des fichiers entièrement sur la ligne de commande. D'autres fonctionnalités viendront dans la prochaine version, couplées avec le driver USB dans gint.

Et surtout des modifications sur la compilation du fxSDK et les questions compatibilité :

• Le fxSDK est maintenant compilé avec CMake
• Les flags x86/x64 par défaut de CMake sont désactivés sur les OS qui en fournissent
• L'ordre des arguments de fxg1a et mkg3a est ajusté pour marcher avec le getopt POSIX de musl
__VA_OPT__ est remplacé par ##__VA_ARGS__ pour marcher avec clang (berk)
• libpng est localisée avec PkgConfig et pas FindPNG, à cause de subtilités de frameworks sous Mac
• Corrigé une erreur stupide qui se produisait s'il y avait "gcc" dans le chemin d'installation du compilo
Ninestars Hors ligne Membre Points: 2384 Défis: 22 Message

Citer : Posté le 27/04/2021 19:31 | #


Génial !
Plein de bonnes nouvelles en somme pour faciliter l'installation. J'ai l'impression que mon cas t'as fait ajuster quelques petits trucs
Je suis pressé de pouvoir utiliser fxlink

PS : tu as pu récupérer le doc que je t'avais envoyé par MP ?

PS 2 : lien mort pour fxsdk 2.4
Loieducode En ligne Membre Points: 129 Défis: 0 Message

Citer : Posté le 27/04/2021 19:38 | #


Lephenixnoir a écrit :
• Ajouté un nouvel outil fxlink qui permet pour l'instant de monter les calculatrices Stockage de Masse USB (Graph 35+E II et Graph 90+E) via UDisks2 pour transférer des fichiers entièrement sur la ligne de commande. D'autres fonctionnalités viendront dans la prochaine version, couplées avec le driver USB dans gint.

Finalement, fini le montage manuel, le rm du .g3a et le cp!
J'ai beacoup trop de projets, nyohoho!
Lephenixnoir Hors ligne Administrateur Points: 20781 Défis: 143 Message

Citer : Posté le 27/04/2021 19:57 | #


Merci ! Oui ton installation m'a pas mal aidé. J'ai bien reçu et récupéré ton doc, désolé de ne pas t'avoir envoyé de réponse. C'est un truc assez gros à traiter et donc je ne l'ai pas encore fait. ^^"

J'ai corrigé le lien, j'avais édité à la main celui de gint mais modifié la mauvaise partie lol.

Finalement, fini le montage manuel, le rm du .g3a et le cp!

Exactement ! fxlink -sw addin.g3a marche. Bon c'est très primitif, c'est juste un cp des arguments vers le point de montage, on peut pas récupérer dans l'autre sens, etc. mais ça cherche pas à remplacer le gestionnaire de fichiers.

Ajouté le 10/05/2021 à 18:49 :
En discutant avec Druzyek j'ai pensé que je pourrais publier des versions binaires du fxSDK, avec toutes les libs déjà compilées et peut-être même le compilo aussi (pourvu que l'architecture ne varie pas trop).

Par contre, comme le fxSDK est fréquemment mis à jour pour l'instant, ça n'empêcherait pas d'avoir à mettre à jour. Mais ça permettrait de passer d'une version à l'autre en remplaçant un dossier par le même dossier extrait d'un zip plus récent, donc ce serait sans doute pratique.
Dark storm En ligne Labélisateur Points: 11538 Défis: 176 Message

Citer : Posté le 10/05/2021 21:01 | #


Lephe à deux doigts de réinventer Appimage.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 20781 Défis: 143 Message

Citer : Posté le 10/05/2021 21:19 | #


Non juste à deux doigts de réinventer le logiciel téléchargé sous la forme d'un tar.gz. N'abusons rien

Non mais sinon tu conviendras que c'est pas moi qui pousse pour ça. C'est qu'il y a des vrais problèmes de gestion dans la nature pour les utilisateurs. Si ça ne tenait qu'à moi je n'aurais même pas écrit GiteaPC, moi je peux gérer 30 dépôts en parallèle.

Honnêtement, je pense que je ne suis pas fou, et pourtant il est évident que la publication et le déploiement du fxSDK est un problème très épineux. J'ose même dire : beaucoup plus épineux que ce que vous imaginez. J'ose le dire parce que malgré mon expérience en développement similaire à celle des autres membres de Planète Casio, j'étais incapable d'imaginer tout ce qui m'est tombé dessus une fois que j'ai vraiment publié le projet (ou de façon plus crue : je pense que vous ne comprendrez pas non plus à moins de vous retrouver dans la même démarche).

Depuis quelques temps, même si je hais toujours les gestionnaires de paquets des langages, les Dockers, les FlatPak et tout le bordel, je comprends très distinctement pourquoi ils ont été inventés. Déployer un programme ça n'a rien à voir avec développer un programme. Il y a un aspect simple sur lequel c'est beaucoup plus dur : quand tu programmes, tu as un langage et une bibliothèque standard qui ont un comportement garanti ; strlen() est consistant, l'opérateur + est consistant, etc. Alors que quand tu déploies, tu as affaire à des OS, outils en ligne de commande, paquets installés ou pas installés, etc. qui sont une jungle sans nom. Y'a aucun outil qui n'existe pas en version BSD ou GNU, y'a pas un outil qui soit garanti installé sur la machine de l'utilisateur, y'a que des inconnues. On ne se l'imagine pas quand on code ça.
Dark storm En ligne Labélisateur Points: 11538 Défis: 176 Message

Citer : Posté le 10/05/2021 22:11 | #


Non juste à deux doigts de réinventer le logiciel téléchargé sous la forme d'un tar.gz.

CQFD :
$ osu.AppImage --appimage-extract
squashfs-root/.DS_Store
squashfs-root/.DirIcon
squashfs-root/AppRun
squashfs-root/osu!.desktop
squashfs-root/osu!.png
squashfs-root/usr
squashfs-root/usr/bin
squashfs-root/usr/bin/Commons.Music.Midi.dll
squashfs-root/usr/bin/Dapper.dll
squashfs-root/usr/bin/DeltaCompressionDotNet.dll
squashfs-root/usr/bin/DiffPlex.dll

Bon là c'est du .NET, donc c'est de la dll à la Windows, mais c'est pour l'exemple.

Déployer un programme ça n'a rien à voir avec développer un programme.

Tout comme le forgeron laisse le cordonnier faire l'étui de son couteau, est-ce que c'est au développeur de packager son appli ?
Je conçois parfaitement que linker statiquement (comme Go), embarquer ses dépendances (comme Appimage, Flatpak et autres) ou même son système complet (comme Docker) ; permet à un dev seul de packager son logiciel sans prise de tête. (Et c'est sûrement souhaitable). Pour le reste, autant ne pas réinventer la roue.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 20781 Défis: 143 Message

Citer : Posté le 10/05/2021 22:14 | #


Tout comme le forgeron laisse le cordonnier faire l'étui de son couteau, est-ce que c'est au développeur de packager son appli ?

Si le fxSDK était un logiciel célèbre comme Firefox, il serait packagé par les mainteneurs des distributions. Malheureusement, ce n'est pas le cas. Et quelqu'un doit s'y coller.
Dark storm En ligne Labélisateur Points: 11538 Défis: 176 Message

Citer : Posté le 10/05/2021 22:16 | #


C'est ce que je voulais dire par "ne pas réinventer la roue". Quitte à packager un truc complet, Appimage a l'air de correspondre parfaitement au cahier des charges.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 20781 Défis: 143 Message

Citer : Posté le 10/05/2021 22:19 | #


Je ne connais pas vraiment la différence avec un tar.gz pour être honnête. Si le fichier AppImage embarque juste de quoi extraire, ça revient à peu près au même, la vraie différence pour moi c'est le fait de fournir des binaires. (Et puis c'est vite fait de dire « réinventer AppImage » alors que le taux d'utilisation de AppImage est certainement très minoritaire par rapport aux logiciels distribués dans une archive, qui existent depuis bieeeen plus longtemps.)

La subtilité derrière c'est de faire les mises à jour. Je ne sais même pas si fournir des binaire m'intéresse. Pour être honnête, je m'en passerais volontiers.
Précédente 1, 2, 3 ··· 10 ··· 20 ··· 25, 26, 27, 28, 29, 30, 31 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 - 2021 | Il y a 66 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