Forums Casio - Projets de programmation

Index du Forum | Projets de programmation | fxSDK
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 9576
Défis: 130
Message
Posté le 29/08/2014 22:00

fxSDK :

Développer des add-ins sous Linux : voilà l'ambition du fxSDK, un ensemble d'outils puissants développé pour gcc. Moteur de gris, multi-getkey, jeux en temps réel et gain de puissance sont au menu.

Le fxSDK est composé de plusieurs bibliothèques et outils en ligne de commande, et utilise des formats classiques pour permettre l'édition de vos fichiers par vos outils préférés.

gcc : l'indispensable compilateur
Vous ne pourrez plus vous en passer. Voyez le tutoriel d'installation pour vous familiariser un peu.

gint : le noyau dur
Cette bibliothèque contient le gestionnaire d'interruptions, les drivers de l'écran et du clavier, ainsi que des modules pour le dessin et le texte. Elle travaille avec fxconv, qui lui fournit les structures de données appropriées.

libc : la lib standard
Utile quelquefois.

fxos : un analyseur d'OS
Décortique les fichiers d'OS (en général les .fls) et retrouve des informations classiques (version, build, etc.). Capable de désassembler n'importe quelle partie de l'OS, y compris les syscalls, à partir d'une adresse ou d'un numéro.
Il détecte les sycalls à partir de leur adresse et connaît leurs rôles et prototypes.

fxconv : le convertisseur universel
Convertit à la volée (à la compilation, en fait) les ressources des projets, depuis des formats habituels (par exemple du bmp) vers un format optimisé pour la calculatrice utilisé par gint.
Gère pour l'instant les images bitmap. Les polices sont également encodées dans les images pour simplifier leur édition. Par exemple :


À venir... modifié le 19.06.2016

Fichier joint

La sagesse est la prunelle de tes yeux, et la gloire l’enveloppe de ton cœur.


Dark storm
Hors ligne
Administrateur
Niveau: Aucun
Points: 9320
Défis: 169
Message
Dernier message de la page précédente :Posté le 10/07/2015 22:45 |
Ah, chouette
faut que je me compile un petit GCC
----------------------------------
Soutenez-les !





#YAPHPH



Pages: Précédente | 1 ... , 5, 6, 7, 8, 9, 10, 11, 12 | Suivante

Intelligide
Hors ligne
Membre de CreativeCalc
Niveau: Vétéran
Points: 2490
Défis: 5
Message
Citer : Posté le 12/07/2015 10:47 | #
Lephenixnoir a écrit :
Ça me donne des fichiers comme ça :
cpp.lang:
##
#    fxSDK syntax definition file.
#    Warning: this file follows a strict syntax. Please do not edit.
##



[Meta]

lang:    C/C++



[SingleRules]



name:    types.native
regex:    \b(?:void|char|short|int|long|float|double|enum|union [...]
color:    #55afff

name:    types.extra
regex:    \b(?:ushort|u?int(?:8|16|32)_t|s?size_t|template|class [...]
color:    #55afff

name:    types.qualifiers
regex:    \b(?:register|extern|const|static|volatile|inline [...]
color:    #ff2e4c



name:    constants.define
regex:    \b(?:true|false|NULL|nullptr)\b
color:    #ae6deb

name:    constants.numeric
regex:    \b\d+\b|\b0x[\dA-Fa-f]\b
color:    #ae6deb



name:    functions.call
regex:    \b[A-Za-z_]\w*(?=\()
color:    #55afff

name:    functions.def
regex:    \b[A-Za-z_]\w*\s+([A-Za-z_]\w*)(?=\()
color:    #80d435



name:    statements
regex:    \b(?:if|else|for|do|while|switch|case|default|continue [...]
color:    #ff2e4c

name:    statements.cpp
regex:    \b(?:try|catch|throw|new|delete|operator|namespace)\b
color:    #ff2e4c



name:    preprocessor
regex:    ^\s*#\s*(if|else||elif|ifdef|ifndef|endif|undef|include|define|pragma|not [...]
color:    #ff2e4c

name:    iso646
regex:    \b(?:and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq [...]
color:    #ff2e4c

name:    comment.single
regex:    //[^\n]*
color:    #464646



[MultiRules]



name:    comment.multi
open:    /\*
close:    \*/
color:    #464646



Au fait, Je trouve que c'est pas très super de faire des trucs comme ça pour le parsage par regex, c'est carrèment galère (et pour le parsage par ligne, ça passe mais j'aime pas trop) je pense que le mieux serait de mettre les règles dans des conteneurs pour bien différencier les attributs de chaque règle. Par exemple:

<Rule>
name:    iso646
regex:    \b(?:and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq [...]
color:    #ff2e4c
</Rule>

<Rule>
name:    comment.single
regex:    //[^\n]*
color:    #464646
</Rule>


Ainsi il suffit de parser récupérer toutes les <Rule>text</Rule> avec un regex puis de parser les attributs dans chaque règle, ça évite les erreurs et c'est plus joli
----------------------------------
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 9576
Défis: 130
Message
Citer : Posté le 12/07/2015 11:10 | #
Moi je vois deux problèmes à ça.

D'une part ça alourdit vachement la syntaxe. Ce fichier est fait pour être simple et compréhensible par tout le monde.
Tu pourrais au moins mettre ça :
<comment.single>
regex:  //[^\n]*
color:  #464646
</comment.single>

même sans vérifier la balise fermante.

Mais franchement, je trouve ça moche. Ça mélange la syntaxe originelle avec du HTML (oui, c'est aussi ce que fais mon style parser, mais c'est aussi pour ça que je veux le modifier), c'est moins intuitif à éditer (il est fait pour être léger et compréhensible) et c'et pas franchement utile.

Ben oui, pourquoi ne pas ajouter des guillemets aussi pour que ce soit plus représentatif ?
name:   "comment.single"
regex:  "//[^\n]*"
color:  "#464646"


En plus ta syntaxe a le défaut que contrairement à la mienne, elle ne permet pas du tout de faire ça :
name:   rule1
regex:  regex
color:  #ff0000

name:   rule2
regex:  regex

Où implicitement, la règle deux prend la même couleur que la une.

Tu fais comme tu veux, mais moi je trouve ça vraiment inutile et superficiel. Une ligne vide sépare deux règles, ça suffit largement.
----------------------------------
La sagesse est la prunelle de tes yeux, et la gloire l’enveloppe de ton cœur.
Dark storm
Hors ligne
Administrateur
Niveau: Aucun
Points: 9320
Défis: 169
Message
Citer : Posté le 12/07/2015 13:44 | #
J'ai un gros bug : lorsque je lance la compil' depuis le fxSDK, il me dit que GCC n'a pas été trouvé.
Si je lance à la main le Makefile généré, tout va bien…
----------------------------------
Soutenez-les !





#YAPHPH
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 9576
Défis: 130
Message
Citer : Posté le 12/07/2015 15:52 | #
C'est pas vraiment un gros bug, mais plus probablement de ta faute : tu as du ajouter le dossier de ton gcc au path dans le .bashrc, qui est lancé quand on ouvre un terminal (ce qui explique que ça fonctionne manuellement), mais pas dans le .profile, qui est exécuté au lancement de la session (ce qui explique que ça ne fonctionne pas automatiquement) !
----------------------------------
La sagesse est la prunelle de tes yeux, et la gloire l’enveloppe de ton cœur.
Dark storm
Hors ligne
Administrateur
Niveau: Aucun
Points: 9320
Défis: 169
Message
Citer : Posté le 12/07/2015 15:56 | #
Ah, c'est donc ça.

Ajouté le 13/07/2015 à 19:28 :
Idées de trucs à ajouter :

Raccourcis clavier :
→ Ctrl (+ Shift) + Tab pour changer d'onglet, dans un sens et dans l'autre
→ Ctrl + Lettre pour ajouter le fichier ouvert au projet (ce qui permet de faire Ctrl + N > Ctrl + touche pour ajouter rapidement un nouveau fichier)

Éventuellement la coloration du log d'erreur de GCC (orange le mot "warning" rouge "error", pas besoin de plus je pense) histoire de rapidement trouver la ligne qui pose problème dans le log.

Ajouté le 13/07/2015 à 21:02 :
Ah si, aussi : une petite icone à coté du nom de l'onglet pour savoir si un fichier est enregistré ou non
----------------------------------
Soutenez-les !





#YAPHPH
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 9576
Défis: 130
Message
Citer : Posté le 13/07/2015 22:47 | #
Dark storm a écrit :
→ Ctrl (+ Shift) + Tab pour changer d'onglet, dans un sens et dans l'autre
→ Ctrl + Lettre pour ajouter le fichier ouvert au projet (ce qui permet de faire Ctrl + N > Ctrl + touche pour ajouter rapidement un nouveau fichier)

Bonne idée ! Je m'en occuperai.

Dark Storm a écrit :
Éventuellement la coloration du log d'erreur de GCC (orange le mot "warning" rouge "error", pas besoin de plus je pense) histoire de rapidement trouver la ligne qui pose problème dans le log.

C'est que je commence à être calé niveau coloration !
Ok, ça aussi c'est facilement faisable.

Dark Storm a écrit :
Ah si, aussi : une petite icone à coté du nom de l'onglet pour savoir si un fichier est enregistré ou non

Ah oui, y'a ça aussi... va pas falloir que ça encombre trop l'interface
----------------------------------
La sagesse est la prunelle de tes yeux, et la gloire l’enveloppe de ton cœur.
Dark storm
Hors ligne
Administrateur
Niveau: Aucun
Points: 9320
Défis: 169
Message
Citer : Posté le 13/07/2015 23:51 | #
Un petit cercle (caractère unicode ça doit se faire non ?) qui est vide lorsque le fichier est enregistré, plein sinon. En se démerdant bien ça peut même être ton trigger pour fermer le fichier (comme dans ST quoi )

Je me suis dit que pour tester, y'a qu'un test grandeur nature qui peut fonctionner, du coup je me fais le moteur de MS4 dans la soirée

MS4 parce que je saute MS3 (comme MS1) parce qu'il ne me convient pas…
----------------------------------
Soutenez-les !





#YAPHPH
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 9576
Défis: 130
Message
Citer : Posté le 14/07/2015 09:22 | #
Dark storm a écrit :
Un petit cercle (caractère unicode ça doit se faire non ?) qui est vide lorsque le fichier est enregistré, plein sinon. En se démerdant bien ça peut même être ton trigger pour fermer le fichier (comme dans ST quoi )

Ben oui Excellent !

Dark Storm a écrit :
Je me suis dit que pour tester, y'a qu'un test grandeur nature qui peut fonctionner, du coup je me fais le moteur de MS4 dans la soirée

Hey oh, brutalise pas mon SDK hein ! X)

Dark Storm a écrit :
MS4 parce que je saute MS3 (comme MS1) parce qu'il ne me convient pas…

Impossible pour moi de trouver le 3 ou le 4.
Mais faut dire aussi que le nom de MS3 a quelques restes peu propices à un développement efficace...
----------------------------------
La sagesse est la prunelle de tes yeux, et la gloire l’enveloppe de ton cœur.
Dark storm
Hors ligne
Administrateur
Niveau: Aucun
Points: 9320
Défis: 169
Message
Citer : Posté le 14/07/2015 09:40 | #
Le 4 c'est normal, le 3 est là : http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2024

Bref, [/HS]
----------------------------------
Soutenez-les !





#YAPHPH
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 9576
Défis: 130
Message
Citer : Posté le 14/07/2015 10:22 | #
Sur insistance prononcée de Dark Storm (j'ai failli me faire passer à tabac), j'ai créé un repo pour le fxSDK.

Je pense que je vais suivre un modèle de mise à jour semblable à la rolling release, comme ça vous pourrez mettre le logiciel à jour quand vous le voulez à partir du repo.

Pour cloner la version actuelle :
$ git clone https://Lephenixnoir@bitbucket.org/Lephenixnoir/fxsdk.git

Ensuite, pour la compiler et l'utiliser :
$ make
$ ./fxSDK

Pour l'instant, vous devez lancer le fxSDK depuis son dossier. Évitez le raccourci bureau.

Ajouté le 14/07/2015 à 12:12 :
J'ai mis à jour le repo avec différentes améliorations et corrections signalées par Dark Storm :
→ Oublis sur le colorateur syntaxique
→ Options de compilation et de linkage
→ Numéros de ligne et polices dans l'éditeur de code
→ Quelques améliorations mineures dans le code
----------------------------------
La sagesse est la prunelle de tes yeux, et la gloire l’enveloppe de ton cœur.
Dark storm
Hors ligne
Administrateur
Niveau: Aucun
Points: 9320
Défis: 169
Message
Citer : Posté le 14/07/2015 12:14 | #
Cool, je màj

Ajouté le 14/07/2015 à 12:22 :
Rapidement, quelques question :
→ Les options de compilation sont pas sauvegardées ?
→ C'est quoi la police de l'éditeur ? Chez moi elle est pas monospacée. Peut être l'inclure dans les fichiers source si elle n'est pas courante.
→ Manque aussi l'option "Rebuild all" (si tu peux la rendre automatique lorsque les options du compilo ont changé, ça serai top )

Bref, c'est pas si évident que ça de faire un truc 100% fxSDK à l'heure actuelle
----------------------------------
Soutenez-les !





#YAPHPH
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 9576
Défis: 130
Message
Citer : Posté le 14/07/2015 12:25 | #
Dark storm a écrit :
→ Les options de compilation sont pas sauvegardées ?

Aah m*rde !

Dark Storm a écrit :
→ C'est quoi la police de l'éditeur ? Chez moi elle est pas monospacée. Peut être l'inclure dans les fichiers source si elle n'est pas courante.

« font-family: 'Droid Sans Mono', 'Free Mono', 'Liberation Mono', 'Inconsolata', 'Consolas'; »
Faudrait peut-être que j'en rajoute encore derrière... peut-être avec 'monospace' ?

Dark Storm a écrit :
→ Manque aussi l'option "Rebuild all" (si tu peux la rendre automatique lorsque les options du compilo ont changé, ça serai top )

Hmm, pas facile : comme le Makefile change à chaque fois... enfin, je vais m'en occuper.

Dark Storm a écrit :
Bref, c'est pas si évident que ça de faire un truc 100% fxSDK à l'heure actuelle

Qui a jamais prétendu le contraire ?
----------------------------------
La sagesse est la prunelle de tes yeux, et la gloire l’enveloppe de ton cœur.
Dark storm
Hors ligne
Administrateur
Niveau: Aucun
Points: 9320
Défis: 169
Message
Citer : Posté le 14/07/2015 12:39 | #
Rebuild all == make clean > génération du makefile > make

Ajouté le 14/07/2015 à 12:49 :
J'ai l'impression que t'as pas commit la nouvelle feuille de style… J'ai changé manuellement, j'ai bien Droid Sans M.
----------------------------------
Soutenez-les !





#YAPHPH
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 9576
Défis: 130
Message
Citer : Posté le 14/07/2015 13:21 | #
Dark storm a écrit :
Rebuild all == make clean > génération du makefile > make

Je sais, c'est bien ce que je vais faire.

Dark Storm a écrit :
J'ai l'impression que t'as pas commit la nouvelle feuille de style… J'ai changé manuellement, j'ai bien Droid Sans M.

Non, je ne commit pas chaque modification unique.

Ajouté le 14/07/2015 à 13:47 :
Dark storm a écrit :
→ Les options de compilation sont pas sauvegardées ?
→ C'est quoi la police de l'éditeur ? Chez moi elle est pas monospacée. Peut être l'inclure dans les fichiers source si elle n'est pas courante.
→ Manque aussi l'option "Rebuild all" (si tu peux la rendre automatique lorsque les options du compilo ont changé, ça serai top )

Les trois sont faites. Je rajoute l'automatisation lorsqu'on modifie les options.
----------------------------------
La sagesse est la prunelle de tes yeux, et la gloire l’enveloppe de ton cœur.
Dark storm
Hors ligne
Administrateur
Niveau: Aucun
Points: 9320
Défis: 169
Message
Citer : Posté le 14/07/2015 13:57 | #
Parfait, merci
----------------------------------
Soutenez-les !





#YAPHPH
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 9576
Défis: 130
Message
Citer : Posté le 15/07/2015 15:06 | #
J'ai envoyé quelques commits sur le repo du wrapper.

Au programme, beaucoup de modifications et nettoyage interne, plus notablement des changements dans la gestion des erreurs et un support bien plus évolué des bitmaps (supporte le 32 bits, 24 bits, monochrome et partiellement le 16 bits).

Ajouté le 15/07/2015 à 16:51 :
Hop, j'ai également ajouté une option appelée « dump » (-d) qui fait l'exact inverse du wrapper : elle affiche le contenu du header d'un fichier g1a

Une option bien pratique pour moi. Ajoutez à cela du nettoyage, encore et toujours (oui c'est incessant, mon dieu ce que je programmais mal il y a... euh... oups).

J'avance bien, une fois que le wrapper sera vraiment fonctionnel il pourra accompagner le fxSDK sans causer des problèmes toutes les deux minutes
----------------------------------
La sagesse est la prunelle de tes yeux, et la gloire l’enveloppe de ton cœur.
Dark storm
Hors ligne
Administrateur
Niveau: Aucun
Points: 9320
Défis: 169
Message
Citer : Posté le 15/07/2015 17:29 | #
Ah, chouette. Une idée supplémentaire, dans le Make, ajouter un install: sudo cp g1a-wrapper /usr/local/cross/bin
Comme ça il se retrouve dans le path avec les autres utilitaires de compilation
----------------------------------
Soutenez-les !





#YAPHPH
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 9576
Défis: 130
Message
Citer : Posté le 15/07/2015 17:32 | #
Dark storm a écrit :
Ah, chouette. Une idée supplémentaire, dans le Make, ajouter un install: sudo cp g1a-wrapper /usr/local/cross/bin
Comme ça il se retrouve dans le path avec les autres utilitaires de compilation

Hmm, j'ai déjà un make install qui le fout dans le $HOME/bin, je peux éventuellement le mettre dans /usr/bin pour plus de convenance, mais /usr/local/cross/bin ça m'emmerde vraiment puisque personne n'est vraiment supposé l'avoir installé là.

Ajouté le 15/07/2015 à 17:33 :
Je peux toujours m'arranger pour le foutre à côté du sh3eb-elf mais bon, c'est pas terrible.
----------------------------------
La sagesse est la prunelle de tes yeux, et la gloire l’enveloppe de ton cœur.
Dark storm
Hors ligne
Administrateur
Niveau: Aucun
Points: 9320
Défis: 169
Message
Citer : Posté le 15/07/2015 17:33 | #
Bah, comme c'est ça ira quand même.
----------------------------------
Soutenez-les !





#YAPHPH
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 9576
Défis: 130
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 ?
----------------------------------
La sagesse est la prunelle de tes yeux, et la gloire l’enveloppe de ton cœur.

Pages: Précédente | 1 ... , 5, 6, 7, 8, 9, 10, 11, 12 | Suivante

Index du Forum | Projets de programmation | fxSDK
Publicité et partenaires
Casio Education
Casio éducation

TI-Planet
Casiopeia
Casiopeia
CasioFan, la communauté ClassPad
CasioFan
CodeWalrus
CodeWalrus

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2015 | Il y a 57 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Rugby Manager | Jeu de basket | Jeu de handball | Jeu de tennis | Nova Raider | Réparation téléphone | Soccer Rush | Tasty Tale

Planète Casio est un site communautaire indépendant, géré bénévolement et n'est donc pas affilié à Casio | Toute reproduction de Planète Casio, même partielle, est interdite
Les fichiers, programmes et autres publications présents sur Planète Casio restent la propriété de leurs auteurs respectifs et peuvent être soumis à des licences ou des copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd