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

Messages postés
297
Date d'inscription
dimanche 14 mars 2004
Statut
Membre
Dernière intervention
18 décembre 2014
- - Dernière réponse : 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
Afficher la suite 

1 réponse

Messages postés
112
Date d'inscription
lundi 21 octobre 2013
Statut
Membre
Dernière intervention
4 janvier 2014
0
Merci
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);
Commenter la réponse de Greg159357