Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » Tutoriels d'utilisation de gint (commentaires)
LephenixnoirHors ligneAdministrateurPoints: 15031 Défis: 136 Message

Tutoriels d'utilisation de gint (commentaires)

Posté le 15/07/2017 13:54


Les tutoriels d'utilisation de gint sont sur ce topic.

Pour garder les tutoriels ensemble dans les posts du topic d'origine (et surtout pas créer un topic par tuto...), je vous propose de poster vos questions/commentaires/etc ici. Merci !



Pages : Précédente1, 2, 3, 4, 5, 6, 7, 8Suivante
PalmenrosHors ligneMembrePoints: 13 Défis: 0 Message

Citer : Posté le 14/06/2019 17:01 | #


Hello, Lephe!

I installed newlib and I am trying to build a program using newlib and gint, however I keep getting some errors. I am using the provided link script from gint and the following script for linking:


sh3eb-elf-gcc main.o -o main.elf -lTeX-fx -lgint-fx -lm  -lgcc -ffreestanding -m3 -mb -Tfx9860g



/home/pedro/opt/sh3eb-elf-2.32-9.1.0/lib/gcc/sh3eb-elf/9.1.0/../../../../sh3eb-elf/bin/ld: /home/pedro/opt/sh3eb-elf-2.32-9.1.0/lib/gcc/sh3eb-elf/9.1.0/crt1.o: in function `stack_k':
(.text+0x50): undefined reference to `_stack'
/home/pedro/opt/sh3eb-elf-2.32-9.1.0/lib/gcc/sh3eb-elf/9.1.0/../../../../sh3eb-elf/bin/ld: /home/pedro/opt/sh3eb-elf-2.32-9.1.0/lib/gcc/sh3eb-elf/9.1.0/crt1.o: in function `edata_k':
(.text+0x54): undefined reference to `_edata'
/home/pedro/opt/sh3eb-elf-2.32-9.1.0/lib/gcc/sh3eb-elf/9.1.0/../../../../sh3eb-elf/bin/ld: /home/pedro/opt/sh3eb-elf-2.32-9.1.0/lib/gcc/sh3eb-elf/9.1.0/crt1.o: in function `end_k':
(.text+0x58): undefined reference to `_end'
`.eh_frame' referenced in section `.text' of /home/pedro/opt/sh3eb-elf-2.32-9.1.0/lib/gcc/sh3eb-elf/9.1.0/crtbegin.o: defined in discarded section `.eh_frame' of /home/pedro/opt/sh3eb-elf-2.32-9.1.0/lib/gcc/sh3eb-elf/9.1.0/crtbegin.o
`.eh_frame' referenced in section `.text' of /home/pedro/opt/sh3eb-elf-2.32-9.1.0/lib/gcc/sh3eb-elf/9.1.0/crtbegin.o: defined in discarded section `.eh_frame' of /home/pedro/opt/sh3eb-elf-2.32-9.1.0/lib/gcc/sh3eb-elf/9.1.0/crtbegin.o
collect2: error: ld returned 1 exit status


Is there another linking script which provides _stack, _edata and _end symbols?
Thank you!
LephenixnoirHors ligneAdministrateurPoints: 15031 Défis: 136 Message

Citer : Posté le 14/06/2019 17:08 | #


I think you should at least add an explicit -lc before -lgcc. You may even, for the sake of safety, still pass -nostdlib (maybe -ffreestanding, not sure if it has an effect at link time) and just use that additional -lc to resolve undefined symbols.

This is because the crt1.o and crtbegin.o files are suspicious here, they are normally part of the runtime and their role is fulfilled by gint's initialization functions. You may have a look at Calling Global Constructors (wiki.osdev.org) if you wish to know more.

I should also mention that I tried to build the TeX example add-in with newlib and it crashed at runtime. Linking with hand-written standard routines instead worked. I'm not sure where the problem comes from, unfortunately Memallox is not around to tell.
Shadow15510Hors ligneAdministrateurPoints: 3591 Défis: 15 Message

Citer : Posté le 02/07/2019 15:54 | #


J'ai essayé de compilé le 'Hello world' avec la première étape : "Hello world ! Gint is talking you." Le compilateur et pas passé…

J'ai deux erreurs : la première est avec fxsdk --cflags, j'ai ça : error: unknown command '--cflags'
et la… deuxième est avec mon entête : #include <display.h> j'ai ça : src/main.c:1:10: fatal error: display.h: No such file or directory

J'ai compilé dans le dossier du projet. Dans ce dossier, j'ai mes 4 sous-dossiers :
assets, build, include, src avec dans include display.h et keyboard.h… :p
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
LephenixnoirHors ligneAdministrateurPoints: 15031 Défis: 136 Message

Citer : Posté le 02/07/2019 15:59 | #


Tu me tombes dessus à chaque fois car tutoriels trop vieux... je hais cet état de fait !

Prenons les choses dans l'ordre ; je vais nettoyer ça une bonne fois pour toutes. Laisse-moi jusqu'à demain matin pour nettoyer toutes ces vieilles choses.
Shadow15510Hors ligneAdministrateurPoints: 3591 Défis: 15 Message

Citer : Posté le 02/07/2019 16:00 | #


D'accord !

C'est pas de ma faute, j'avance petit à petit. Vois le bon côté des choses : tu vas être à jour et 100% compatible Mac !
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
LephenixnoirHors ligneAdministrateurPoints: 15031 Défis: 136 Message

Citer : Posté le 02/07/2019 16:02 | #


Shadow15510 a écrit :
Vois le bon côté des choses : tu vas être à jour et 100% compatible Mac !

Yay ! o/

Ajouté le 05/07/2019 à 02:39 :
J'ai enfin fini de mettre à jour le premier épisode du tutoriel d'utilisation. Ouf ! \o/

Par ici 01 : "Hello, World!", encore et toujours !

Je vais m'occuper de préparer le deuxième pendant que je finis de porter gint... ça va me prendre de l'énergie mais je vais m'en sortir !
Shadow15510Hors ligneAdministrateurPoints: 3591 Défis: 15 Message

Citer : Posté le 05/07/2019 13:36 | #


Ok, super ! J'ai changé les sources d'Odyssée en conséquence.

Néanmoins, j'ai encore un problème… J'ai une erreur lors de la compilation… Dans le dossier 'src' j'ai modifié le main avec ces deux lignes :
#include "display.h"
#include "keyboard.h"


(j'ai effacé #include<gint/display.h> et #include <gint/keyboard.h>)

Avant que tu ne lèves les yeux au ciel d'un air exaspéré un poussant un long soupir face à ma bêtise, je précise in extremis que j'ai placer les deux headers dans le même dossier (le dossier 'src') que le main.c lorsque j'ai compilé le projet j'était dans le dossier du projet : 'monster-island'… Bon ok d'accord…

Merci encore !
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
HackcellHors ligneMembrePoints: 1086 Défis: 6 Message

Citer : Posté le 05/07/2019 13:41 | #


ça c'est fait.

Bon, pour commencer, si tu nous donnais l'erreur de compilation, ça nous aiderait.

Et ensuite, si les headers sont dans <gint/display.h> et non pas dans le dossier src/, c'est pour ne pas polluer ton travail avec des headers que tous les gens qui voudront compiler ton projet auront déjà installé.
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 ⭐
Shadow15510Hors ligneAdministrateurPoints: 3591 Défis: 15 Message

Citer : Posté le 05/07/2019 13:43 | #


J'ai refais un nouveau projet (sans rien toucher donc ) et j'ai cette erreur :

pc37:MoIs antoine$ fxsdk build-fx

\e[34;1m::\e[39;1m Making into build-fx\e[0m

sh3eb-elf-gcc -c src/main.c -o build-fx/src/main.o -mb -ffreestanding -nostdlib -Wall -Wextra -fstrict-volatile-bitfields -std=c11 -Os -m3 -DFX9860G -MMD -MT build-fx/src/main.o -MF build-fx/src/main.d -MP
src/main.c: In function 'main':
src/main.c:6:9: error: 'color_white' undeclared (first use in this function); did you mean 'color_t'?
  dclear(color_white);
         ^~~~~~~~~~~
         color_t
src/main.c:6:9: note: each undeclared identifier is reported only once for each function it appears in
src/main.c:7:38: error: 'color_black' undeclared (first use in this function); did you mean 'color_t'?
  dtext(4, 4, "Sample fxSDK add-in.", color_black, color_none);
                                      ^~~~~~~~~~~
                                      color_t
src/main.c:7:51: error: 'color_none' undeclared (first use in this function); did you mean 'color_t'?
  dtext(4, 4, "Sample fxSDK add-in.", color_black, color_none);
                                                   ^~~~~~~~~~
                                                   color_t
make: *** [build-fx/src/main.o] Error 1

"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
HackcellHors ligneMembrePoints: 1086 Défis: 6 Message

Citer : Posté le 05/07/2019 13:46 | #


Hmm... Remplace color_black par C_BLACK, color_white par C_WHITE et color_none par C_NONE ?

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 ⭐
Shadow15510Hors ligneAdministrateurPoints: 3591 Défis: 15 Message

Citer : Posté le 05/07/2019 13:49 | #


Hey, ça marche !! Merci beaucoup !
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
LephenixnoirHors ligneAdministrateurPoints: 15031 Défis: 136 Message

Citer : Posté le 05/07/2019 14:23 | #


Woupsie, ça c'est parce que j'ai raccourci les noms de couleur hier mais j'ai oublié de pousser sur le fxSDK. Les anciens noms étaient insupportablement longs à utiliser. Désolé

(Et merci Kouhai pour le signalement sur le Gitlab.)
Shadow15510Hors ligneAdministrateurPoints: 3591 Défis: 15 Message

Citer : Posté le 05/07/2019 14:23 | #


J'ai modifié le dossier du projet par défaut de mon côté…
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
LephenixnoirHors ligneAdministrateurPoints: 15031 Défis: 136 Message

Citer : Posté le 05/07/2019 14:24 | #


Les modifications seront perdues dès que tu réinstalleras le fxSDK. De façon générale faire ça est... assez tendu parce que la correction risque de disparaître.
Shadow15510Hors ligneAdministrateurPoints: 3591 Défis: 15 Message

Citer : Posté le 12/07/2019 08:32 | #


J'ai essayé d'affiché une image en nuance de gris, mais ça ne marche pas (écran blanc sur la calto) je n'ai pas d'errur de compilation et le code est le même que celui de ce tuto (sauf que je ne fais que afficher une image) tout y est… Il y une manip' spéciale à faire pour les nuances ?
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
LephenixnoirHors ligneAdministrateurPoints: 15031 Défis: 136 Message

Citer : Posté le 12/07/2019 13:55 | #


Ouais il y a une manip spéciale comme me le faire implémenter dans cette version. x_x

Aaaah tout va trop vite. Bon.

Pour ton information il faudra remplacer les fonctions de dessin d* par g*. Donc gtext(), gubsimage(), tout ça tout ça.
LenoHors ligneMembrePoints: 175 Défis: 0 Message

Citer : Posté le 17/07/2019 19:34 | #


La fonction dimage n'a pas l'air d'exister dans "display-cg.h" ce qui cause des erreurs de compilation avec "build fxsdk-cd"
Seid ihr das Essen ? Nein, wir sind der Jäger !
LephenixnoirHors ligneAdministrateurPoints: 15031 Défis: 136 Message

Citer : Posté le 17/07/2019 19:44 | #


Comme Shadow l'a vu il y a quelques jours (deux messages au-dessus ! ), la fonction dimage() n'existe pas encore parce que c'est un gros morceau et la seule chose importante que je n'ai pas encore fini sur Graph 90.

Pour l'instant, tu peux modifier la VRAM directement si tu veux :

#define GINT_NEED_VRAM
#include <gint/display.h>

/* Maintenant tu as [uint16_t *vram], chaque élément du tableau est un pixel de l'écran */
vram[0] = 0x0000; /* noir */
vram[1] = 0xffff; /* blanc */
/* etc */

Je fais de mon mieux, je suis à fond ces jours-ci !
Shadow15510Hors ligneAdministrateurPoints: 3591 Défis: 15 Message

Citer : Posté le 17/07/2019 19:53 | #


Yeah ! Bon courage !

J'aimerai comprendre la technique avec la VRAM, comment je peux afficher une image *.png sur la VRAM ? Parce que dans ton code, met un pixel en blanc et un autre en noir, non ? J'ai pas compris…
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
LephenixnoirHors ligneAdministrateurPoints: 15031 Défis: 136 Message

Citer : Posté le 17/07/2019 20:04 | #


Oui tu as bien suivi, c'est exactement ce que mon exemple fait !

Pour afficher une image, tu dois te démerder pour accéder à la couleur des pixels. Et avec un fichier PNG, c'est compliqué. En général on utilise plutôt des données brutes comme dans les bitmaps où tous les pixels sont donnés les uns à la suite des autres.

Mais là encore, c'est pas super efficace. L'idée philosophique derrière fxconv c'est que souvent le format de travail (PNG) n'est pas celui que tu veux pour dessiner (tableau de pixels). fxconv sert donc à faire une conversion à l'avance ! Le format de gint qui est produit par fxconv pour Graph monochrome est fait pour que non seulement la couleur soit accessible facilement, mais aussi pour que le dessin soit très rapide. C'est plus subtil que ça en a l'air !
LenoHors ligneMembrePoints: 175 Défis: 0 Message

Citer : Posté le 17/07/2019 20:15 | #


C'est beau la technnologie
Seid ihr das Essen ? Nein, wir sind der Jäger !
Pages : Précédente1, 2, 3, 4, 5, 6, 7, 8Suivante

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