Ecrire des données constantes à une adresse particulière.
Oniria
Messages postés292Date d'inscriptiondimanche 14 mars 2004StatutMembreDernière intervention18 décembre 2014
-
23 mai 2013 à 11:44
Greg159357
Messages postés112Date d'inscriptionlundi 21 octobre 2013StatutMembreDerniè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
A voir également:
Ecrire des données constantes à une adresse particulière.
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);