Question

En utilisant le compilateur Microchip C18 avec un pic18f, je veux créer un « grand » tampon de 3000 octets dans l'espace de données du programme.

Si je mets cela dans la main () (sur la pile):

char tab[127];

J'ai cette erreur:

Error [1300] stack frame too large

Si je l'ai mis dans mondiale, j'ai cette erreur:

Error - section '.udata_main.o' can not fit the section. Section '.udata_main.o' length=0x0000007f

Comment créer un grand tampon? Avez-vous tutoriel sur la façon de gérer grand tampon sur pic18f avec c18?

Était-ce utile?

La solution

Voici un tutoriel sur exactement ceci: http://www.dwengo.org/ trucs-astuces / grands-variables

En gros, vous déclarez votre variable dans une section spéciale, et un pointeur vers dans la section par défaut:

  #pragma udata DATA // section DATA
  int large_table[768];

  #pragma udata // return to default section
  int *table_ptr = &large_table[0];

Ensuite, vous mettez à jour le script éditeur de liens pour définir la grande section en ajoutant quelque chose comme ceci:

DATABANK   NAME=data      START=0x200          END=0x7FF          PROTECTED
SECTION    NAME=DATA      RAM=data

Notez qu'il n'y a généralement pas de mémoire non cartographiées dans lequel vous pouvez simplement mettre votre section DATA, mais les tampons USB sont généralement mon premier choix à canibalize (sauf si vous avez besoin d'USB dans le même projet bien sûr ...)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top