Go Down

Topic: Erreur de compil Arduino Due (Read 609 times) previous topic - next topic

JLuc

Bonjour,
Je developpe un programme actuellement sur Mega2560 le programme tourne bien, mais je n'ai plus que 1,4ko de ram j'ai eu beau optimiser mon code, mais je suis à l'etroit et je n'ai pas terminé mon programme.
Je suis passé sur le Due (plus de ram) mais là alors que mon programme compile bien sur Mega2560 et tourne bien j'ai des erreurs surtout dans des librairies fournies avec le package, que je n'ai donc pas touché et qui sont bien présente (j'ai vérifié).

Voici les erreurs merci de m'aider.

In file included from c:\program files (x86)\arduino\hardware\tools\g++_arm_none_eabi\bin\../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/include/sys/stat.h:9,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\sam\cores\arduino/syscalls.h:32,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\sam\variants\arduino_due_x/variant.h:50,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\sam\libraries\SPI/SPI.h:14,
                 from Chauffage.ino:2:
C:\Program Files (x86)\Arduino\libraries\Time/time.h:15: error: conflicting declaration 'typedef long unsigned int time_t'
c:\program files (x86)\arduino\hardware\tools\g++_arm_none_eabi\bin\../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/include/sys/types.h:109: error: 'time_t' has a previous declaration as 'typedef long int time_t'
In file included from c:\program files (x86)\arduino\hardware\tools\g++_arm_none_eabi\bin\../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/include/sys/stat.h:9,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\sam\cores\arduino/syscalls.h:32,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\sam\variants\arduino_due_x/variant.h:50,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\sam\libraries\SPI/SPI.h:14,
                 from Chauffage.ino:2:
C:\Program Files (x86)\Arduino\libraries\Time/time.h:105: error: declaration of C function 'void setTime(int, int, int, int, int, int)' conflicts with
C:\Program Files (x86)\Arduino\libraries\Time/time.h:104: error: previous declaration 'void setTime(time_t)' here
@+ JLuc

B@tto


mais je n'ai plus que 1,4ko de ram


Bah j'ai envie de dire il en reste encore :o

Bref sinon sans le code on est pas magicien on peut pas deviner ...

Sinon pas de magie non plus, les librairies entre micro 8-bits et ARM 32 bits sont pas souvent directement compatibles ...
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

JLuc

Merci pour ta réponse, mais je crois en effet que la compatibilité y est pour beaucoup, pour le code je ne l'ai pas mis (près de 2500 lignes) pas possible de poster.
Mais entre temps j'ai fait encore quelques coupes sombres et j'ai gagné quelques % mais comme je l'ai dis mon programme n'es pas terminé et ca me fait peur...
Merci encore pour ta réponse.
@+ JLuc

B@tto

Visiblement y'a des conflit entre time.h et sys/types.h
change tous les time_t en time_t2 par exemple, dans time.h et time.cpp
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

JLuc

time_t est un format de variable reconnu par le C time_t2 connais pas !
Peux-tu m'en dire plus  ?
@+ JLuc

B@tto

Je sais juste que time_t est le nombre de seconde écoulées depuis le 01/01/12 : http://www.cplusplus.com/reference/ctime/time_t/

Après je découvre avec toi que ça fait partie intégrante du C

Du coup ce que je comprend : la librairie Time que tu utilises, utilise Time.h qui est semble-t-il un fichier de base du C et qui est également utilisé par le compilateur ARM. Donc conflit car "c'était pas prévu pour" on va dire. Donc soit tu trouves une autre lib que Time, soit il va falloir la modifier
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

JLuc

Bonjour,
Au vu des erreurs rencontrées, je dirai qu'il n'y a pas que là que ca coince, j'ai en fait l'impression que ide Arduino étant en version beta n'est pas encore à la hauteur pour la compatibilité direct des différentes versions d'Arduino, et j'ai dans l'idée qu'il vont bientôt créer une nouvelle version parce qu'en plus il y a un nouvelle Arduino avec processeur Intel à 400Mhz qui fait son entrée.
Alors pour le moment comme j'ai pu optimiser et gagné suffisamment pour pouvoir continuer un peu, je reste avec le2560, j'essaierai une migration plus tard.
Quoi qu'il en soit, je te remercie beaucoup pour ton aide et je reviendrai parler de la migration dès que le besoin s'en fera sentir comme ca, si ca peut en aider d'autres...
@+ JLuc

B@tto

Elle existe depuis plusieurs mois déjà : http://arduino.cc/en/ArduinoCertified/IntelGalileo#.UwcvGvl5OK8
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

JLuc

Oui c'est vrai, mais il n'y a toujours de prise en compte dans l'ide, donc je verrais avec la prochaine version, merci.
@+ JLuc

JLuc

#9
Feb 21, 2014, 04:38 pm Last Edit: Feb 21, 2014, 05:04 pm by JLuc Reason: 1
Ha ben ca y est, je viens de regarder et la version 1.5.6 vient de sortir avec prise en compte du Galileo, affaire à suivre...

Bon je réédite mon post :
Après avoir testé (juste pour voir) c'est quasiment pareil, j'ai surtout l'impression qu'il y a une vrai incompatibilité dût au matériel, du coup le compilateur ne fait pas de miracle, et moi je me vois mal réécrire tout le programme, j'y ai passé trop d'heure et je vais plutôt revoir à la baisse les possibilité que j'avais prévu.
Merci pour ton aide.
@+ JLuc

fdufnews

C:\Program Files (x86)\Arduino\libraries\Time/time.h:15: error: conflicting declaration 'typedef long unsigned int time_t'

Celle là, ce n'est pas toi qui l'aurait ajoutée.
Elle n'apparaît pas chez moi. Et c'est elle qui est en conflit avec la définition dans types.h du compilateur C arm.

JLuc

#11
Feb 21, 2014, 05:06 pm Last Edit: Feb 21, 2014, 05:09 pm by JLuc Reason: 1
Je viens de voir que tu as posté pendant que je rééditais mon précédent post.
Non je n'ai retouché aucune librairies, je me contente d'écrire les programmes, ca me suffit, je n'aime pas réinventer la roue.
Avec la dernière version je n'ai pas remis cette librairie et les erreurs (même légèrement différentes) persistent.
@+ JLuc

skywodd

Bonjour,

Dans Time.h au début :
Quote
#include <inttypes.h>
#ifndef __AVR__
#include <sys/types.h> // for __time_t_defined, but avr libc lacks sys/types.h
#endif

#if !defined(__time_t_defined) // avoid conflict with newlib or other posix libc
typedef unsigned long time_t;
#endif

Pas de bol la libc de ARM-gcc possède bien le fichier sys.types.h contrairement à la avr-libc.

Commente la ligne suivante et ça devrais marcher :
Code: [Select]
typedef unsigned long time_t;
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

JLuc

Bonjour,
Mon projet avance bien, et je n'ai plus besoin de la librairie time.h du coup plus de problème mais je me heurte à d'autres depuis hier, j'ai mis une carte réseau w5200 à la place de la w5100 car limité et lente. Je devrai donc pouvoir avancer encore, dès que j'aurai trouvé une librairie adapté pour le due.
Merci beaucoup pour toute l'aide apportée.
@+ JLuc

Go Up