Bonjour,
J'aimerais lire une donnee a une addresse specifique. J'utilise le code suivant:
measurment(first_address)= $0x0012FDBC;
cela ne fonctionne pas, d'ou pourrais venir le probleme ?
Merci par avance
Bonjour,
J'aimerais lire une donnee a une addresse specifique. J'utilise le code suivant:
measurment(first_address)= $0x0012FDBC;
cela ne fonctionne pas, d'ou pourrais venir le probleme ?
Merci par avance
C'est interdit dans un OS 32 bits (ou 64 bits) à cause de la protection mémoire mise en place pour séparer les espaces mémoire des processus qui tournent en parallèle.
[FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.
Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.
Outre que le problème tel que tu le poses est mal posé, le code que tu montres ne ressemble pas à du C++.
Si tu parles d'un adresse logique, c'est possible (faire un reinterpret_cast d'un entier vers un pointeur devrait faire quelque chose de logique pour qui connait l'architecture cible). Mais je n'en vois pas l'utilité (sauf si tu peux demander que l'OS place dans ton espace logique des choses particulière).
Si tu parles d'adresse physique: comme dit par Emmanuel, c'est généralement interdit par l'OS.
Peut être que ce n'est pas du code pour un OS 32 ou 64 bits mais du code pour de l'embarqué. Auquel cas, il est parfois obligatoire de lire à un emplacement mémoire physique bien déterminé.
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
Voici mon programme entier, en gros, je souhaiterais créer un fichier de donnée (1 donnée par ligne) à partir de donnée contenu dans des adresses physique en connaissant l'adresse de départ, le pas d'enregistrement des donnée (c'est à dire les adresses suivant ou sont contenu les données) et le nombre de donnée.
Connaissez vous des fonctions ou méthode pour accéder au contenu de ces adresses physiques ? c'est possible à mon avis , Merci infiniment
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 using namespace std; int main () { int first_address=0; // first address int step=1; // address step int number_of_data=10; // number of total data int * measurment; measurment= new int [10]; // creating aray for the matrix, specifie the number of data int i; // loop variable for(i=first_address;i<number_of_data+1;i=i+step) { measurment[i-first_address+1]= //Lecture contenu addresse physique; // } ofstream myfile; myfile.open ("measurment.txt"); for(i= 0; i < number_of_data+1; i++) { myfile << ("%d ", measurment[i]); myfile << ("\n"); } myfile.close(); }
C'est possible, certainement, mais si tu ne nous dis pas dans quel contexte tu travailles, ça va quand même être compliqué de répondre à la question![]()
[FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.
Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.
Deux cas: tu travailles avec un processeur qui dispose d'une MMU et celle-ci est activee. Il te faut la collaboration de l'OS pour faire en sorte que tes adresses physiques correspondent a des adresses logiques que tu connais. Dans les autres cas, les adresses logiques et physiques sont les memes.
Tu fais alors un reinterpret_cast pour transformer l'entier representant l'adresse en un pointeur vers le type que tu desires et tu dereferences ce pointeur pour lire ou ecrire a cette adresse.
Je suis très novice en programmation, j'ai réussi à écrire mon programme, voici la ligne pour la lecture du contenu d'une adresse:
Je transfert dans la matrice measurment[j] la valeur lu à l'adresse contenu dans address_matrix[j]. Cependant j'ai un message d'erreur du type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for(i=first_address;i<number_of_data+1;i=i+step) { measurment[j]= *(reinterpret_cast<int*>(address_matrix[j])); j=j+1; }
Exception non gérée à 0x00dd1cbd dans data_management.exe*: 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x0000000a.
Comme vous le dite, il se peut qu'il soit interdit de lire dans ces addresses. Existe t-il un software pour autoriser l'accès à ces adresses ?
qu'est-ce qu'il y a a cette adresse?
(EDIT) en d'autres termes, elel vient d'où?
Partager