Ecrire des données constantes à une adresse particulière.

Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 - 23 mai 2013 à 11:44
Greg159357 Messages postés 112 Date d'inscription lundi 21 octobre 2013 Statut Membre Dernière intervention 4 janvier 2014 - 10 nov. 2013 à 18:06
Bonjour
J'ai cherché dans des cours en C sur Google mais je n'ai pas trouvé ma réponse.
Comment peut-on initialiser des données constantes à un endroit précis de la mémoire ?
en assembleur, il suffit de déclarer un ORG 0x.... et de placer un dh ... avec les données à placer mais en C comment faire ???

J'aimerais un truc comme
const unsigned char ucDatas[] = {0,1,....} -> 0xAAAAA; // mon adresse de départ que je veux.

Mon but est de mettre des données constante dans la flash d'un µControleur STM32 dans le code généré par GCC. Ca me permettrait d'initialiser mes données à un endroit précis de la mémoire flash (cette zone réservé est utilisé comme une EEPROM).
Merci beaucoup pour vos réponse éventuelles.

Oniria

1 réponse

Greg159357 Messages postés 112 Date d'inscription lundi 21 octobre 2013 Statut Membre Dernière intervention 4 janvier 2014
Modifié par Greg159357 le 10/11/2013 à 18:15
Je ne crois pas que tu peux écrire dans la mémoire une constante car le compilateur les remplace par leurs valeurs.
Par contre pour écrire une variable, tu ferais comme cela :
void memcpy(unsnigned char *addr, unsigned char *val, unsigned int size) {
     unsigned int i = 0;
     while (i <= size) {
          *(addr + i) = *(val + i);
          i++;
     }
}

unsigned char *ucDatas = (unsigned char*) 0xAAAAA;
memcpy(ucDatas, {0, 1, ....}, longueur de la valeur);
0
Rejoignez-nous