2016-08-27 4 views
0

Je n'ai plus de RAM et je dois déplacer mon code de vitesse non-critique pour qu'il clignote. Besoin de connaître la commande 'attribute' du linker pour sélectionner le flash. J'utilise mbed online IDE pour construire pour NUCLEO (STM32) f091RC.Quelle est la commande de l'attribut linker pour mettre du code en flash au lieu de RAM?

Mais peut-être mbed utilise un paramètre d'attribut commun pour flash.

Je ne trouve aucune aide sur l'éditeur de liens mbed.

+0

Je n'ai aucune expérience avec _embed en ligne IDE_ mais comme je comprends toutes les fonctions par défaut place à clignoter. La plupart des compilateurs ont des attributs spéciaux pour que le code de conception soit exécuté à partir de la RAM. Et il faut des chargeurs spéciaux pour déplacer des parties de votre firmware compilé de flash à RAM au démarrage - de telles fonctions peuvent être créées automatiquement par certains compilateurs. Alors, êtes-vous sûr que votre code fonctionne en RAM? – imbearr

Répondre

0

Je ne connais pas la structure de votre fichier de liens, mais vous avez probablement la section .text qui est écrite en FLASH (99% de certitude). Si vous voulez forcer la section de votre fonction, vous devez utiliser cet attribut juste avant la déclaration et la définition: __attribute__ ((long_call, section (".text"))) Vous pouvez faire une macro à ce genre:

#define FLASH_FUNC __attribute__ ((long_call, section (".text"))) 

et l'utiliser comme ceci:

dans le fichier .h:

FLASH_FUNC void MyFoo(void); 

int fichier .c

FLASH_FUNC void MyFoo(void) 
{ 
    //foo 
}