Sur un ordinateur unique exécutant Linux, est-il un moyen de lire le contenu des registres de configuration de périphérique qui contrôlent le matériel? Je pense que ce serait un wrapper pour inw()
.
Je cherche quelque chose d'équivalent à la commande U-Boot Memory (md
), à utiliser dans le contexte du débogage du pilote.
Si vous connaissez l'adresse physique de l'appareil, vous pouvez utiliser DevMem2.
devmem2 <physical address> <size (b/h/w)> [value]
Je pourrais être complètement et totalement faux à ce sujet et me pardonnerais si je le suis, mais si la commande MD de Uboot est simplement en train de lire des adresses de mémoire mappées sur des registres de périphérique et de renvoyer le contenu à vous, ne pourriez-vous pas lire ces mêmes emplacements de mémoire avec une utilisation intelligente de dd if=/dev/mem ...
?
busybox devmem
busybox devmem
est ma version préférée de devmem2
qui a été mentionné à: https://unix.stackexchange.com/a/134661/32558
devmem2
est venu dans de nombreuses versions différentes de plusieurs amont, notamment Buildroot http://free-electrons.com/pub/mirror/devmem2.c
Mais un utilitaire Busybox est plus canonique, largement disponible et maintenu.
Par exemple,devmem2
a été rejeté de Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=595805 (mais un paquet Ubuntu a été créé de manière nulle).
Vous pouvez l'obtenir à Ubuntu avec:
Sudo apt-get install busybox
Utilisation: lire 4 octets de l'adresse physique 0x12345678
:
Sudo busybox devmem 0x12345678
Écrivez 0x9abcdef0
à cette adresse:
Sudo busybox devmem 0x12345678 w 0x9abcdef0
Voici quelques façons raides de tester devmem
OUT: https://stackoverflow.com/questions/12040303/accessing-physial-address-de-utilisateur-space/45127890#4512789
Il y a un utilitaire appelé PCIMEM ( https://github.com/billfarrow/pcimem )
Vous pouvez l'utiliser pour lire et écrire des périphériques PCI.