Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » MicroPython sur Graph 35/75+E
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

MicroPython sur Graph 35/75+E

Posté le 09/05/2018 17:27

Page du programme : https://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=3603

Todo list :

- Corriger le bug de sauvegarde lors de la sauvegarde d'un fichier vide
- Faire les menus en image
- Module graphique
- Plus de mémoire pour les SH4

Ancien message
Cliquer pour enrouler
Parce que le python est très conseillé pour l'année prochaine, il serait bien de faire un port de MicroPython pour les graph monochromes.

Niveau faisabilité, c'est faisable :
- MicroPython demande 256k d'espace (la limite est de 512k donc on a de la chance) et 16 ko de ram (même pas besoin de taper dans les 256 ko des SH4)
- L'éditeur de texte serait tout simplement une version modifiée d'Edit, avec l'interface adaptée au Python (catalogue intégré, fonctions disponibles avec les F-keys, comme l'appli pour graph 90).

Du coup j'aimerais bien faire le port moi même, mais j'aurai sûrement besoin de votre aide :
- MicroPython ne compile que sous linux (ou en tout cas sûrement pas avec le SDK casio), du coup pour moi ça va être chiant voire impossible de le compiler
- J'ai regardé le port minimal (https://github.com/micropython/micropython/tree/master/ports/minimal) et je comprends que dalle à ce qu'il faudrait modifier sûrement les trucs GPIO, mais quoi d'autre ?

Si vous êtes partant pour ce projet, votre aide est la bienvenue



Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9 Suivante
Hackcell Hors ligne Maître du Puzzle Points: 1531 Défis: 11 Message

Citer : Posté le 15/06/2018 11:25 | #


J'ai commencé à, regarder un peu plus en détails les sources du Micropython, et notamment le makefile dans /ports/minimals j'ai fait la liste des fichiers utilisé, ainsi que les outils nécessaire, cependant, j'ai un problème avec le fonctionnement des règles implicite de Make, en effet, les instruction commence par les fichiers objets, donc ces fichiers sont compiler par Make de manière implicite, mais dans ce cas, comment spécifier le compilateur à utiliser ? Et cela me parait étrange, aurais-je raté quelque chose ?
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 15/06/2018 11:29 | #


Les règles implicites ne sont utilisées que si aucune règle du Makefile ne permet effectivement de compiler les fichiers. Là il y a forcément des règles, donc les implicites n'entrent pas en jeu.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Hackcell Hors ligne Maître du Puzzle Points: 1531 Défis: 11 Message

Citer : Posté le 15/06/2018 13:37 | #


Okay, je vais re-regarder plus en profondeur, j'ai peut-être raté quelque chose (un include qui m'aurais échappée, ou autre...)

Ajouté le 15/06/2018 à 23:24 :
J'avais belle et bien raté un include bon, je pense pouvoir rédiger un rapport sur le processus de compilation de microPython d'ici une semaine (le temps d'aller au bout du truc) ce serait utile que je le poste ou je le garde pour moi??

Par contre, je manque clairement de connaissances sur comment sont gérées les 'libs standard' sur Casio, du côté de fxlib et de gint, y aurait t'il un endroit qui en parle ? Car sans savoir cela, je ne peux pas mesurer correctement la quantité de travail nécessaire pour le portage..
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 16/06/2018 14:01 | #


La lib standard est dans fxlib, mais elle est incomplète.

- Poste ce que tu as compris du processus de compilation sur ce topic.

- Vois standard_libraries.pdf dans l'archive du SDK pour le subset supporté de la lib standard (pas beaucoup).

- Poste aussi les fonctions dont tu as besoin mais qui ne sont pas implémentées (open(), etc).
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Hackcell Hors ligne Maître du Puzzle Points: 1531 Défis: 11 Message

Citer : Posté le 30/06/2018 00:00 | # | Fichier joint


Voilà ce que je pense avoir compris du processus de compilation.

Pour les fonctions nécessaire mais non implémenté, j'ai fais un script à la va vite, mais je n'ai pas encore regardé si elle sont réellement nécessaire.
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 30/06/2018 18:20 | #


Joli travail ! @Zezombye, est-ce que ça t'aide à comprendre la marche à suivre ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 30/06/2018 20:47 | #


J'ai pas encore regardé

Ajouté le 23/07/2018 à 08:26 :
Bon j'ai réussi à compiler, voici ma péripétie d'une heure :
- Je lis le truc d'hackcell en diagonale. J'installe cygwin, avec gcc, make, python, etc. J'exécute la commande "make cross=1" : plein d'erreurs.
- Je remplace l'arm-eabi-truc par le gcc normal, je vire les switchs spécifiques à ce truc arm, je corrige un bug de détection de version dans un script python, je vire le -werror parce que y'a 4324 warnings de cast, cette fois ci ça me fait une erreur, il ne trouve pas arm-eabi-truc-ld.
- Je me rends compte qu'il y a 2 sets de commande, et que je dois pas foutre cross=1 parce que je veux pas compiler pour leur pyboard.
- Je réessaye avec juste "make". Cette fois ci ça me fait une erreur d'escamotage. Je regarde la définition d'"escamotage" sur google, puis je cherche l'erreur sur internet, apparemment ce serait un problème de librairie 32-bits.
- Je vire le switch -m32, ça marche.
Pour l'instant j'ai fait ça avec le gcc pour PC, mais je suis en train de compiler le gcc pour casio.

Du coup j'ai un firmware.elf : je fais comment pour le linker avec mon code généré par le SDK ?
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 23/07/2018 18:46 | #


Tu balances à GCC avec d'autres fichiers objets. Oui, évite le SDK, c'est juste une cause d'erreurs en plus ; compile ton propre code avec GCC. Tu n'es plus à ça près il me semble.

Ensuite tu passes à objcopy une fois que tu as fini. Regarde les options utilisées par la règle de $(BUILD)/firmware.bin pour ne pas te planter.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 27/07/2018 18:30 | #


Pour la compilation avec le sh3eb-elf-gcc, j'ai des problèmes au niveau du linkage :
Zezombye@Zez-PC2 ~/micropython/micropython-master/ports/minimal
$ make
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
LINK build/firmware.elf
/home/Zezombye/opt/sh3eb-elf/lib/gcc/sh3eb-elf/7.3.0/../../../../sh3eb-elf/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
make: *** [Makefile:66: build/firmware.elf] Error 1


Une idée ?
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 28/07/2018 17:57 | #


Oui, il te faut une lib standard petit malin. Compile avec -nostdlib mais tu auras plein de fonctions manquantes au moment de linker.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 29/07/2018 00:16 | #


Je compile déjà avec nostdlib, les arguments c'est :
CROSS_COMPILE = sh3eb-elf-
LD = sh3eb-elf-gcc
CFLAGS = $(INC) -Wall -std=c99 -m3 -mb -ffreestanding -nostdlib -lgcc $(COPT)
LDFLAGS = -Wl,-Map=$@.map,--cref -Wl,--gc-sections

Virer le std=c99 n'a aucun effet.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 29/07/2018 21:03 | #


Cherche si l'option a bien été passée lors du linkage ; sinon ils ont peut-être ajouté -lc ailleurs pour obliger à linker avec la libc. Tu peux remplacer -lc par -lta_lib -lfx ou libta_lib.a est une archive où tu as compilé les fonctions standard que tu as du implémenter.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 29/07/2018 21:15 | #


Cherche si l'option a bien été passée lors du linkage

J'ai mis -nostdlib dans les LDFLAGS et maintenant ça compile, mais je pense que le fichier elf est un peu vide :
Zezombye@Zez-PC2 ~/micropython/micropython-master/ports/minimal
$ make
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
LINK build/firmware.elf
/home/Zezombye/opt/sh3eb-elf/lib/gcc/sh3eb-elf/7.3.0/../../../../sh3eb-elf/bin/ld: warning: cannot find entry symbol start; not setting start address
   text    data     bss     dec     hex filename
      0       4       0       4       4 build/firmware.elf

Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 29/07/2018 21:17 | #


Utilise V=1 ou BUILD_VERBOSE pour faire apparaître le détail des commandes, et cherche où les données se sont perdues :
- Les fichiers objets ont-ils été passés au linker ?
- Les fichiers objets sont-ils vides ?
- Quels sont les options de compilation ?
- Quel linker script as-tu utilisé ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 29/07/2018 21:26 | #


Les fichiers objets sont pas vides, voici l'output :

[...]
sh3eb-elf-gcc -I. -I../.. -Ibuild -Wall -std=c99 -m3 -mb -ffreestanding -nostdlib -lgcc  -Os -DNDEBUG -fdata-sections -ffunction-sections -c -MD -o build/lib/utils/stdout_helpers.o ../../lib/utils/stdout_helpers.c
CC ../../lib/utils/pyexec.c
sh3eb-elf-gcc -I. -I../.. -Ibuild -Wall -std=c99 -m3 -mb -ffreestanding -nostdlib -lgcc  -Os -DNDEBUG -fdata-sections -ffunction-sections -c -MD -o build/lib/utils/pyexec.o ../../lib/utils/pyexec.c
CC ../../lib/libc/string0.c
sh3eb-elf-gcc -I. -I../.. -Ibuild -Wall -std=c99 -m3 -mb -ffreestanding -nostdlib -lgcc  -Os -DNDEBUG -fdata-sections -ffunction-sections -c -MD -o build/lib/libc/string0.o ../../lib/libc/string0.c
CC ../../lib/mp-readline/readline.c
sh3eb-elf-gcc -I. -I../.. -Ibuild -Wall -std=c99 -m3 -mb -ffreestanding -nostdlib -lgcc  -Os -DNDEBUG -fdata-sections -ffunction-sections -c -MD -o build/lib/mp-readline/readline.o ../../lib/mp-readline/readline.c
MISC freezing bytecode
../../tools/mpy-tool.py -f -q build/genhdr/qstrdefs.preprocessed.h -mlongint-impl=none frozentest.mpy > build/_frozen_mpy.c
CC build/_frozen_mpy.c
sh3eb-elf-gcc -I. -I../.. -Ibuild -Wall -std=c99 -m3 -mb -ffreestanding -nostdlib -lgcc  -Os -DNDEBUG -fdata-sections -ffunction-sections -c -MD -o build/build/_frozen_mpy.o build/_frozen_mpy.c
LINK build/firmware.elf
sh3eb-elf-gcc -Wl,-Map=build/firmware.elf.map,--cref -Wl,--gc-sections -nostdlib -o build/firmware.elf build/py/mpstate.o build/py/nlr.o build/py/nlrx86.o build/py/nlrx64.o build/py/nlrthumb.o build/py/nlrxtensa.o build/py/nlrsetjmp.o build/py/malloc.o build/py/gc.o build/py/pystack.o build/py/qstr.o build/py/vstr.o build/py/mpprint.o build/py/unicode.o build/py/mpz.o build/py/reader.o build/py/lexer.o build/py/parse.o build/py/scope.o build/py/compile.o build/py/emitcommon.o build/py/emitbc.o build/py/asmbase.o build/py/asmx64.o build/py/emitnx64.o build/py/asmx86.o build/py/emitnx86.o build/py/asmthumb.o build/py/emitnthumb.o build/py/emitinlinethumb.o build/py/asmarm.o build/py/emitnarm.o build/py/asmxtensa.o build/py/emitnxtensa.o build/py/emitinlinextensa.o build/py/formatfloat.o build/py/parsenumbase.o build/py/parsenum.o build/py/emitglue.o build/py/persistentcode.o build/py/runtime.o build/py/runtime_utils.o build/py/scheduler.o build/py/nativeglue.o build/py/stackctrl.o build/py/argcheck.o build/py/warning.o build/py/map.o build/py/obj.o build/py/objarray.o build/py/objattrtuple.o build/py/objbool.o build/py/objboundmeth.o build/py/objcell.o build/py/objclosure.o build/py/objcomplex.o build/py/objdeque.o build/py/objdict.o build/py/objenumerate.o build/py/objexcept.o build/py/objfilter.o build/py/objfloat.o build/py/objfun.o build/py/objgenerator.o build/py/objgetitemiter.o build/py/objint.o build/py/objint_longlong.o build/py/objint_mpz.o build/py/objlist.o build/py/objmap.o build/py/objmodule.o build/py/objobject.o build/py/objpolyiter.o build/py/objproperty.o build/py/objnone.o build/py/objnamedtuple.o build/py/objrange.o build/py/objreversed.o build/py/objset.o build/py/objsingleton.o build/py/objslice.o build/py/objstr.o build/py/objstrunicode.o build/py/objstringio.o build/py/objtuple.o build/py/objtype.o build/py/objzip.o build/py/opmethods.o build/py/sequence.o build/py/stream.o build/py/binary.o build/py/builtinimport.o build/py/builtinevex.o build/py/builtinhelp.o build/py/modarray.o build/py/modbuiltins.o build/py/modcollections.o build/py/modgc.o build/py/modio.o build/py/modmath.o build/py/modcmath.o build/py/modmicropython.o build/py/modstruct.o build/py/modsys.o build/py/moduerrno.o build/py/modthread.o build/py/vm.o build/py/bc.o build/py/showbc.o build/py/repl.o build/py/smallint.o build/py/frozenmod.o build/main.o build/uart_core.o build/lib/utils/printf.o build/lib/utils/stdout_helpers.o build/lib/utils/pyexec.o build/lib/libc/string0.o build/lib/mp-readline/readline.o build/build/_frozen_mpy.o
/home/Zezombye/opt/sh3eb-elf/lib/gcc/sh3eb-elf/7.3.0/../../../../sh3eb-elf/bin/ld: warning: cannot find entry symbol start; not setting start address
sh3eb-elf-size build/firmware.elf
   text    data     bss     dec     hex filename
      0       4       0       4       4 build/firmware.elf


Les trucs de compilation, c'est ça :
CFLAGS = $(INC) -Wall -std=c99 -m3 -mb -ffreestanding -nostdlib -lgcc $(COPT)
LDFLAGS = -Wl,-Map=$@.map,--cref -Wl,--gc-sections -nostdlib


C'est quoi le symbole "start", pourquoi il le trouve pas ?
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 29/07/2018 21:32 | #


Ah oui, alors. start c'est là où le programme commence. C'est une fonction qui fait divers travaux d'initialisation et appelle main et est fournie en général par la lib standard, ou par exemple par gint.

Donc il ne sait pas où le programme commence, ce pauvre linker. Et c'est normal puisque tu n'as pas de lib standard !

Ce qui ne résout pas non plus le fait que le programme est vide...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 29/07/2018 22:39 | #


J'ai remplacé toutes les occurences de initalize par start dans addin.ld et crt0.s, maintenant j'ai ces erreurs :
/home/Zezombye/opt/sh3eb-elf/lib/gcc/sh3eb-elf/7.3.0/../../../../sh3eb-elf/bin/ld: warning: section `.bss' type changed to PROGBITS
build/py/nlrsetjmp.o: In function `_nlr_jump':
nlrsetjmp.c:(.text.nlr_jump+0x28): undefined reference to `_longjmp'
build/py/mpprint.o: In function `_mp_print_int':
mpprint.c:(.text.mp_print_int+0x10c): undefined reference to `___udivsi3'
build/py/lexer.o: In function `_mp_lexer_new':
lexer.c:(.text.mp_lexer_new+0x88): undefined reference to `___movmemSI12'
build/py/runtime.o: In function `_mp_load_method_protected':
runtime.c:(.text.mp_load_method_protected+0x58): undefined reference to `_setjmp'
build/py/runtime.o: In function `_mp_parse_compile_execute':
runtime.c:(.text.mp_parse_compile_execute+0x88): undefined reference to `_setjmp'
build/py/runtime.o: In function `_mp_resume':
runtime.c:(.text.mp_resume+0x13c): undefined reference to `_setjmp'
build/py/runtime.o: In function `_mp_iternext':
runtime.c:(.text.mp_iternext+0x84): undefined reference to `_setjmp'
build/py/map.o: In function `_mp_map_lookup':
map.c:(.text.mp_map_lookup+0x204): undefined reference to `___udivsi3'
build/py/objgetitemiter.o: In function `_it_iternext':
objgetitemiter.c:(.text.it_iternext+0x64): undefined reference to `_setjmp'
build/py/objint.o: In function `_mp_int_format_size':
objint.c:(.text.mp_int_format_size+0x44): undefined reference to `___udivsi3'
build/py/objint.o: In function `_mp_obj_int_formatted':
objint.c:(.text.mp_obj_int_formatted+0x140): undefined reference to `___udivsi3'
build/py/objrange.o: In function `_range_len':
objrange.c:(.text.range_len+0x28): undefined reference to `___sdivsi3'
build/py/objstr.o: In function `_mp_obj_str_format_helper':
objstr.c:(.text.mp_obj_str_format_helper+0x2bc): undefined reference to `___movmemSI16'
build/py/builtinimport.o: In function `_do_execute_raw_code':
builtinimport.c:(.text.do_execute_raw_code+0x70): undefined reference to `_setjmp'
build/py/vm.o: In function `_mp_execute_bytecode':
vm.c:(.text.mp_execute_bytecode+0x1f4): undefined reference to `_setjmp'
build/py/smallint.o: In function `_mp_small_int_mul_overflow':
smallint.c:(.text.mp_small_int_mul_overflow+0x4c): undefined reference to `___sdivsi3'
build/py/smallint.o: In function `_mp_small_int_modulo':
smallint.c:(.text.mp_small_int_modulo+0x28): undefined reference to `___sdivsi3'
build/py/smallint.o: In function `_mp_small_int_floor_divide':
smallint.c:(.text.mp_small_int_floor_divide+0x24): undefined reference to `___sdivsi3'
build/lib/utils/pyexec.o: In function `_parse_compile_execute':
pyexec.c:(.text.parse_compile_execute+0x144): undefined reference to `_setjmp'
collect2: error: ld returned 1 exit status
make: *** [Makefile:66: build/firmware.elf] Error 1


C'est quoi toutes ces fonctions cheloues ?
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 29/07/2018 22:42 | #


Des procédures de copie de mémoire ou de calcul de divisions de la libgcc. Tu dois mettre -lgcc à la fin de la ligne de commande, je suis sûr que je te l'ai déjà dit. À la fin de la fin.

Il reste quelques fonctions qui ne sont pas dans libgcc et que tu devras implémenter toi-même. Pour setjmp() et longjmp(), tu peux piquer dans gint.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 29/07/2018 22:46 | #


Dans ton tuto le -lgcc est pas à la fin, d'ailleurs l'ordre des arguments n'importe pas si ?

Bref, même en le mettant à la fin (du ld et du gcc) j'ai toujours les mêmes erreurs :
CFLAGS = $(INC) -Wall -std=c99 -m3 -mb -ffreestanding $(COPT) -lgcc
LDFLAGS = -Wl,-Map=$@.map,--cref -Wl,--gc-sections -nostdlib -T addin.ld crt0.s -L . -lfx -lgcc

Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 29/07/2018 22:49 | #


Zezombye a écrit :
Dans ton tuto le -lgcc est pas à la fin, d'ailleurs l'ordre des arguments n'importe pas si ?

Parce qu'en l'occurrence je sais de quoi je parle et que libgcc et libfx « commutent » ?

Bien sûr qu'il importe, les symboles non résolus dans un fichier ne seront cherchés que dans les fichiers suivants. Il faut que tu révises tout ça...

Bref, même en le mettant à la fin (du ld et du gcc) j'ai toujours les mêmes erreurs[/quote]
Regarde les commandes générées par un Makefile verbose, pas les flags. (Et pas les commandes que tu penses avoir.)
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 29/07/2018 22:59 | #


En effet, le makefile ajoutait des trucs -o à la fin, j'ai ajouté le -lgcc à la fin de la commande de build :
$(BUILD)/firmware.elf: $(OBJ)
    $(ECHO) "LINK $@"
    $(Q)$(LD) $(LDFLAGS) -o $@ $^ $(LIBS) -lgcc
    $(Q)$(SIZE) $@


J'ai ajouté le setjmp.s de gint, et maintenant ça compile merci lephé !
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9 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 v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 140 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