web-dev-qa-db-fra.com

Commande Shell pour lire les registres de périphérique?

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.

18
pingswept

Si vous connaissez l'adresse physique de l'appareil, vous pouvez utiliser DevMem2.

devmem2 <physical address> <size (b/h/w)> [value]
14
Eric

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 ...?

1
LawrenceC

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.

0
simba