Récupérer une variable ou buffer dans zone mémoire externe
3 réponses
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 ?
AT0028 SEGMENT AT 28h ORG 30h _ma_constante DB 'coucoucoucoucoucoucoucoucoucou!',10 AT0028 ENDS
Non ?
Antoine
En 422d5c6d$0$30330$626a14ce@news.free.fr, 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 ?
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 ?
AT0028 SEGMENT AT 28h ORG 30h _ma_constante DB 'coucoucoucoucoucoucoucoucoucou!',10 AT0028 ENDS
Non ?
Antoine
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 ?
AT0028 SEGMENT AT 28h ORG 30h _ma_constante DB 'coucoucoucoucoucoucoucoucoucou!',10 AT0028 ENDS
Non ?
Antoine
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$626a14ce@news.free.fr, 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 ?
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 ?
AT0028 SEGMENT AT 28h ORG 30h _ma_constante DB 'coucoucoucoucoucoucoucoucoucou!',10 AT0028 ENDS
Non ?
Antoine
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"
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
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