Comment affecter une adresse mémoire spécifique à un pointeur? La fonction spéciale Registres dans un microcontrôleur tel AVR m128 a des adresses fixes, l'AVR GCC définit le SFR dans le fichier d'en-tête io.h, mais je veux le gérer moi-même.Pointeur vers une adresse fixe spécifique
10
A
Répondre
28
Bien sûr, pas de problème. Vous pouvez simplement l'attribuer directement à une variable:
volatile unsigned int *myPointer = (volatile unsigned int *)0x12345678;
Ce que je fais habituellement est de déclarer une macro E/S mappé en mémoire:
#define mmio32(x) (*(volatile unsigned long *)(x))
Et puis définissez mes registres dans un fichier d'en-tête:
#define SFR_BASE (0xCF800000)
#define SFR_1 (SFR_BASE + 0x0004)
#define SFR_2 (SFR_BASE + 0x0010)
Et puis les utiliser:
unsigned long registerValue = mmio32(SFR_1); // read
mmio32(SFR2) = 0x85748312; // write
Questions connexes
- 1. GDB: Watchpoint une adresse fixe
- 2. Pointeur vers une chaîne C++
- 3. Adresse physique vers GeoLocation UK
- 4. Variable externe à une adresse spécifique
- 5. pointeurs partagés: pointeur vers pointeur
- 6. chaîne Copier pointeur vers pointeur
- 7. Rediriger une adresse IP spécifique vers une page spéciale de ma page d'accueil avec .htaccess
- 8. Initialisation de pointeur? pour une fonction spécifique
- 9. pointeur Frame, epb et adresse de retour
- 10. iPhone SDK Pointez vers un emplacement spécifique
- 11. Pointeur de souris fixe avec jQuery draggable
- 12. pointeur vers pointeur vers UIImage créé par NSURLConnection
- 13. Pointeur vers un pointeur dans l'objectif-c?
- 14. Sur l'interface vers le haut, possible de rechercher une adresse MAC spécifique?
- 15. Pointeur de cadre + adresse de retour
- 16. Struct avec pointeur vers une fonction
- 17. Suppression d'un pointeur vers une variable automatique
- 18. Revenant un pointeur vers une variable automatique
- 19. Comment appeler une fonction pointeur vers membre?
- 20. pointeur vers une fonction membre const typedef
- 21. pointeur de fonction: adresse physique ou virtuelle
- 22. COM interop et marshaling d'un pointeur vers un pointeur vers une interface en C#
- 23. LLVM: Passer un pointeur vers une structure, qui contient un pointeur sur une fonction, vers une fonction JIT
- 24. MOV [EBX], AX - Pointeur vers un registre?
- 25. Réseau de numérisation pour une adresse MAC spécifique - Android
- 26. Autoriser une requête provenant d'une adresse IP spécifique uniquement
- 27. Une variable pointeur est-elle également affectée à une adresse mémoire?
- 28. UITableView défilement vers une position spécifique
- 29. Pointeur vers une classe et une fonction - problème
- 30. Comment mapper une adresse de pointeur d'instruction segfault de/var/log/messages à une adresse/fonction dans mon fichier .map?
I w ould aurait utilisé un pointeur générique vide, à moins que les données de cet emplacement ne soient un entier non signé. –
Il est généralement recommandé de déclarer les adresses d'E/S mappées en mémoire comme volatiles. –
@Sean, il veut accéder à un registre mappé en mémoire. Vous ne pouvez pas déréférencer un pointeur "void", à quoi cela servirait-il? –