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

Sur un ordinateur monocarte sous Linux, y a-t-il un moyen de lire le contenu des registres de configuration du 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 command de vidage de la memory U-boot ( md ), à utiliser dans le context du debugging du pilote.

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

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

Je ne sais pas si vous pouvez le faire directement avec un kernel de vanille.

Mais il devrait être assez difficile d'écrire un pilote simple qui utilise un "file" dans / proc pour exporter le contenu de la memory que vous aimeriez voir.

Ensuite, vous pouvez lire votre "file" avec un script simple et avoir access à cette memory.

Je peux me tromper complètement et me pardonner, mais si la command md de uboot ne fait que lire les adresses memory mappées aux registres des périphériques et vous renvoyer le contenu, ne pourriez-vous pas lire ces mêmes locations de memory avec une utilisation intelligente de dd if=/dev/mem ... ?

La configuration du périphérique PCI se trouve-t-elle dans / sys / bus / pci / devices / * / config?

busybox devmem

busybox devmem est ma version préférée de devmem2 qui a été mentionnée à: https://unix.stackexchange.com/a/134661/32558

devmem2 est venu dans de nombreuses versions différentes à partir de plusieurs upstreams, notamment Buildroot http://free-electrons.com/pub/mirror/devmem2.c

Mais un utilitaire Busybox est plus canonique, largement disponible et maintenu.

Par exemple, devmem2 été rejeté de Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=595805 (mais un package Ubuntu a été créé néanless).

Vous pouvez l'get dans Ubuntu avec:

 sudo apt-get install busybox 

Utilisation: lire 4 octets à partir de l'adresse physique 0x12345678 :

 sudo busybox devmem 0x12345678 

Écrivez 0x9abcdef0 à cette adresse:

 sudo busybox devmem 0x12345678 w 0x9abcdef0 

Voici quelques devmem pour tester devmem : https://stackoverflow.com/questions/12040303/accessing-physical-address-from-user-space/45127890#45127890