Go Down

Topic: [RÉSOLU] Erreur compilation : relocation truncated to fit: R_AVR_13_PCREL (Read 1 time) previous topic - next topic

Reynosa

Bonjour à tous,

Je viens vous demander un peu d'aide concernant cette erreur de compil :
Code: [Select]
d:/programmes/arduino-1.0.2/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr6/crtm2560.o: In function `__vector_default':
(.vectors+0x1c): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_7' defined in .text.__vector_7 section in core.a(WInterrupts.c.o)


Il y a à peine 20 minutes j'étais tout content d'avoir réussi à faire marcher mon programme quand tout à coup j'ai eu ce message quand j'ai réordonné mon code pour qu'il soit à peu près lisible après mes multiples tests ^^ Et puis juste à bouger les lignes de place (les prototypes de fonctions principalement) j'ai eu cette erreur. Google n'a pas été capable de me dire ce que j'ai fait de mal... Et le moteur de recherche d'Arduino non plus.

Quelqu'un saurait me dire sur quel bouton j'aurais pas du appuyer ?  XD

Ne sachant pas quoi vous donner comme code au vue de l'erreur j'ai tout mis dans un ptit rar en pièce jointe.

Merci d'avance,

Reynosa

Personne n'a eu ce problème et à trouvé la solution ?

Bonne journée,

skywodd

Bonjour,

Vu la gueule de l'erreur c'est une fonction d'interruption dans la table de vecteurs qui passe pas.

Déja :
- quelle version de l'ide arduino ?
- quelle carte ?

Juste pour info :
http://stackoverflow.com/questions/8188849/avr-linker-error-relocation-truncated-to-fit

Ps: la librairie Wire officielle (pour l'I2C) fait exactement la même chose que ta librairie "I2C" qui n'est qu'un clone ...
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Reynosa

Merci d'avoir répondu !

La crius All In One Pro, elle utilise un ATMEGA 2560
J'utilise Arduino pour windows 1.0.2 sur windows 7 64bits à jour.

Dans ton lien je vois que pour lui c'était dû à trop de variable globale, j'ai souvent vu ça sur google. Je n'ai qu'un tableau de 5 cases... Si jamais c'est ça le problème je vois mal comment terminer mon projet... Ce qui est étonnant c'est que ça soit depuis que j'ai déplacé mes prototypes...

skywodd

La dernière version est la 1.0.3, essaye on ne sait jamais tu as peu être un bug isolé.

Sinon donne un coup de ccleaner pour virer les fichiers temporaires de ton ordi, ferme l'ide, re-ouvre ton projet et tente de recompiler le tout.
Ce n'est pas un tableau de 5 éléments qui va empêcher une table d'interruptions de passer en RAM :smiley-mr-green:
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Reynosa

J'ai donc passé Ccleaner et installé le 1.0.4
et toujours cette belle erreur :
Code: [Select]
d:/programmes/arduino-1.0.4/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr6/crtm2560.o: In function `__vector_default':
(.vectors+0x1c): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_7' defined in .text.__vector_7 section in core.a(WInterrupts.c.o)


skywodd

Essaye d'utiliser la librairie Wire pour mettre de côté tout bug "externe" à ton code.
Si ça marche toujours pas fait un zip (pas un rar svp) de ton nouveau code que je test avec un compilateur plus récent (on sait jamais).
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Reynosa

Tu as raison le problème provient bien de la librairie I2C que j'utilise... plus précisément le problème vient de la méthode "read()"

Je vais donc être obligé de repartir sur la lib de base  :(

Merci de ton aide !

skywodd


Je vais donc être obligé de repartir sur la lib de base  :(

Et c'est quoi le soucis avec la librairie de base ?
Elle fait exactement la même chose ...
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Reynosa

À la fin oui normalement (pas tout à fait si tu as vu mon mp)
D'après la description de lib c'est une amélioration de la lib de base en terme de performance et de logique.
Mais pour moi c'est surtout la simplicité d'utilisation en une ligne avec un simple read je récupère 6 registres différent de mon gyroscope avec ou sans bit de stop. alors qu'avec la lib de base... c'est toute une épopée et c'est moins clair à la relecture du code, ça prend énormément plus de place... bref j'aime moins la lib de base, mais je vais être obligé de l'utiliser vu les problèmes causés par l'autre 

skywodd


À la fin oui normalement (pas tout à fait si tu as vu mon mp)

Actuellement j'ai une trentaine d'onglets et 3 googledoc d'ouvert, ton Mp est quelque pars dans ce bordel :smiley-sweat:


D'après la description de lib c'est une amélioration de la lib de base en terme de performance et de logique.
Mais pour moi c'est surtout la simplicité d'utilisation en une ligne avec un simple read je récupère 6 registres différent de mon gyroscope avec ou sans bit de stop. alors qu'avec la lib de base... c'est toute une épopée et c'est moins clair à la relecture du code, ça prend énormément plus de place... bref j'aime moins la lib de base, mais je vais être obligé de l'utiliser vu les problèmes causés par l'autre 

Je vois mal quelles optimisations (de manière vraiment significative j'entends) pourrait être faites vu que l'I2C est géré par le hardware.
A par virer toutes la partie qui gère les fonctions avancé (print(), println(), readBytesUntil(), ...) ya pas grand chose à faire.

La lib Wire de base est pas super compliqué :
Wire.requestFrom() pour demander les données
boucle sur Wire.available() pour attendre les données
Wire.read() ou  Wire.readBytes(buf, len) pour lire les données
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Reynosa

Oui mais entre deux il y a tous les write qui servent à choisir le registre ensuite les requestFrom les boucles et les read pour 6 registres.. je passe d'une ligne à 30. m'enfin ça encore je m'en fous ce n'est qu'un problème de présentation, tant que ça marche je prend moi ^^ mais actuellement ça déconne dans le vent pour rien et ça commence à me les geler... mon code marchait auparavant

Quote
Actuellement j'ai une trentaine d'onglets et 3 googledoc d'ouvert, ton Mp est quelque pars dans ce bordel  :smiley-sweat:

Ma Moman m'a toujours dit de faire une chose après l'autre  : XD

Go Up