Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Récupérer une variable ou buffer dans zone mémoire externe

3 réponses
Avatar
JC
Bonjour,
J'ai deux programmes: Un dans un secteur boot l'autre en EEPROM.
Au démarage il se peut qu'on demande de dérouler le programme du secteur
boot.
Je cherche dans ce programme a récupérer la valeur d'une constante texte
(32 octets ASCII).
Quelle est la directive de compilation qui oblige mon compilo a placer
ma constante a telle adresse afin qu'elle ne change jamais de place pour
que je puisse pointer dessus ?
D'autres idées ? Merci de votre aide

3 réponses

Avatar
Antoine Leca
En 422d5c6d$0$30330$, JC va escriure:
Quelle est la directive de compilation qui oblige mon compilo a
placer ma constante a telle adresse afin qu'elle ne change jamais
de place pour que je puisse pointer dessus ?


extern const char __based(__segname("AT0028"))ma_constante[32];

Et bien sûr tu link avec

AT0028 SEGMENT AT 28h
ORG 30h
_ma_constante DB 'coucoucoucoucoucoucoucoucoucou!',10
AT0028 ENDS


Non ?


Antoine

Avatar
JC
La valeur de la constante est donnée dans la déclaration, c'est après
que je récupère la donnée, dans le programme qui tourne dans le boot ...
Donc :
--------------------------------------------------------------
Dans l'appli:
*************************************************************
const char __based(__segname("AT0028"))ma_constante[32];
ma constante = "COUCOU C'EST UN TEST";
--------------------------------------------------------------
Puis dans le source boot:
*************************************************************
unsigned char *pBuffer;
extern const char __based(__segname("AT0028"))ma_constante[32];
pBuffer = &ma_constante[0];
*************************************************************
avec comme LINK "AT0028 SEGMENT AT 28h".
--------------------------------------------------------------

C'est bon comme ça ?


En 422d5c6d$0$30330$, JC va escriure:

Quelle est la directive de compilation qui oblige mon compilo a
placer ma constante a telle adresse afin qu'elle ne change jamais
de place pour que je puisse pointer dessus ?



extern const char __based(__segname("AT0028"))ma_constante[32];

Et bien sûr tu link avec

AT0028 SEGMENT AT 28h
ORG 30h
_ma_constante DB 'coucoucoucoucoucoucoucoucoucou!',10
AT0028 ENDS


Non ?


Antoine




Avatar
Emmanuel Delahaye
JC wrote on 08/03/05 :
J'ai deux programmes: Un dans un secteur boot l'autre en EEPROM.
Au démarage il se peut qu'on demande de dérouler le programme du secteur
boot.
Je cherche dans ce programme a récupérer la valeur d'une constante texte (32
octets ASCII).
Quelle est la directive de compilation qui oblige mon compilo a placer ma
constante a telle adresse afin qu'elle ne change jamais de place pour que je
puisse pointer dessus ?
D'autres idées ? Merci de votre aide


Quel rapport avec le langage C ? Ca dépend complètement de ton
compilateur et de ton linker. Tu auras des réponses pertinentes sur le
forum consacré à ton environnement de développement.

--
Emmanuel
The C-FAQ: http://www.eskimo.com/~scs/C-faq/faq.html
The C-library: http://www.dinkumware.com/refxc.html

"C is a sharp tool"