[MPLAB / C18] - Erreur de compilation
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

[MPLAB / C18] - Erreur de compilation



  1. #1
    invite3c35244f

    [MPLAB / C18] - Erreur de compilation


    ------

    Bonjour,

    voila, j'ai créé un projet , et lors de la compilation, il m'affiche cette erreur vers la fin de la compilation:

    MPLINK 4.22, Linker
    Copyright (c) 2008 Microchip Technology Inc.
    Error - section '.idata_variables.o' can not fit the section. Section '.idata_variables.o' length=0x00000113
    Errors : 1

    Link step failed.
    A quoi est du cette erreur ?

    Merci d'avance

    -----

  2. #2
    invite7a536414

    Re : [MPLAB / C18] - Erreur de compilation

    Il y a quelques jours j'ai eu la même erreur car mon programme était trop gros pour la mémoire du PIC. J'ai changé de PIC et ainsi doublé sa mémoire et comme par magie ça fonctionnait.

    J'en ai déduit que c'était lié a la taille mémoire...

    http://forums.futura-sciences.com/el...ic-erreur.html

    fin du message : comment voir la taille mémoire prise par le programme...


    Bon courage !

  3. #3
    invite3c35244f

    Re : [MPLAB / C18] - Erreur de compilation

    Merci Hoffman,

    en ce qui concerne l'espace mémoire, je pense être largement dedans... j'utilise un PIC18F6722, et lorsque mon programme compilait correctement, j'utilisais moins de la moitié de l'espace disponible, la seule chose que j'ai faite, c'est initialisé toutes mes variables à zéro lors de la déclaration... est ce lié??

    Merci d'avance...

  4. #4
    RISC

    Re : [MPLAB / C18] - Erreur de compilation

    Salut,

    Le message d'erreur que tu a concerne la section idata = Initialised Data.
    Au reset, le startup file est exécuté et préinitialise toutes les variables qui ont été initialisées en copiant de la FLASH à la RAM les valeurs.
    Par défaut le startup file initialise à 0 les variables non initialisées donc il est inutile de le faire toi même. Il est donc inutile de le faire si tu utilises le startup file par défaut.

    C'est effectivement la raison de ton erreur de compilation car tu as trop de variables initialisées pour la taille de la section qui est déclarée dans le linker file.

    a+

  5. A voir en vidéo sur Futura
  6. #5
    invite3c35244f

    Re : [MPLAB / C18] - Erreur de compilation

    Merci RISC,

    donc :
    Code:
    Par défaut le startup file initialise à 0 les variables non initialisées donc il est inutile de le faire toi même. Il est donc inutile de le faire si tu utilises le startup file par défaut.
    Si je supprime les initialisations de mes variables, je n'aurais plus de problèmes, par contre, je croyais qu'il étais préférable d'initialiser toutes les varaibles avant!?!

    Et comme peux t'on voir si on utilise bien le startup file par défaut ?

    Merci d'avance

  7. #6
    invitef86a6203

    Re : [MPLAB / C18] - Erreur de compilation

    En règle générale en C, on économise au maximum les variables globales en favorisant les variables locales.
    Les variables locales sont détruites après chaque sortie de procédures car elles sont sur la pile et la même zone mémoire est ainsi utilisée pour plusieurs procédures.

    Si tu initialise c'est qu'il s'agit de variables globales à priori .
    Sans doute une utilisation excessive du global.
    Il est préférable de passer des paramètres aux procédures plutôt que de réserver un espace utilisé qu'une seule fois, ou pire créé plusieurs variables pour le même travail pour chaque boucle local par exemple.

    Ne pas confondre la zone mémoire RAM et la zone programme qui sont différentes.

    Donc en résumé, faire une vérification complète de l'utilisation des variables et limiter les globales au profit des locales.

  8. #7
    invite3c35244f

    Re : [MPLAB / C18] - Erreur de compilation

    En effet, j'utilise beaucoup de variables globales... et la raison, est simple, je ne suis pas très habile encore avec le transfert de paramètres... et c'est plus clair pour moi, mais je crois que je vais approfondir ce point là...

    Merci encore

  9. #8
    RISC

    Re : [MPLAB / C18] - Erreur de compilation

    Salut,

    Il faut absolument éviter au maximum d'utiliser des variables globales quand on travaille sur les microcontroleurs car ces variables existent en permanence en mémoire RAM qui est très limitée...

    Concernant le startup file, si tu n'as rien fait, par défaut les variables globales non définies sont pré-initialisées à 0.

    Il faut manipuler l'environnement MPLAB (de tête les build options) pour lui dire d'utiliser un autre startup file qui n'initialise pas à 0 les variables globales non préinitialisées dans le programme.

    La principale raison pour vouloir faire cela est quand on souhaite un démarrage plus rapide à la mise sous tension.
    Si on a pas mal de variables globales, cela prend un certain temps avant que le startup file passe la main au main().

    a+

Discussions similaires

  1. Problème de compilation avec MPLab et C18
    Par invite425472b6 dans le forum Électronique
    Réponses: 8
    Dernier message: 23/05/2013, 12h50
  2. Mplab c18
    Par invite6185b9fb dans le forum Électronique
    Réponses: 13
    Dernier message: 25/11/2009, 18h12
  3. Problème compilation MPLAB C18
    Par invite4671370c dans le forum Électronique
    Réponses: 12
    Dernier message: 25/09/2008, 00h00
  4. MPLAB 7.41 et C18
    Par invitec1317d72 dans le forum Électronique
    Réponses: 11
    Dernier message: 06/05/2008, 14h15
  5. Prob de compilation Mplab et C18
    Par invite07bc4d05 dans le forum Électronique
    Réponses: 28
    Dernier message: 04/02/2008, 21h39
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...