it-swarm-es.com

¿Comando de Shell para leer registros de dispositivos?

En una computadora de placa única con Linux, ¿hay alguna forma de leer el contenido de los registros de configuración del dispositivo que controlan el hardware? Creo que sería un contenedor para inw().

Estoy buscando algo equivalente al comando U-boot memory dump (md), para usar en el contexto de la depuración del controlador.

18
pingswept

Si conoce la dirección física del dispositivo, puede usar devmem2.

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

No sé si puedes hacerlo directamente con un núcleo de vainilla.

Pero debería ser bastante sencillo escribir un controlador simple que use un "archivo" en/proc para exportar el contenido de la memoria que le gustaría ver.

Luego puede leer su "archivo" con un script simple y tener acceso a esa memoria.

3
Johan

Podría estar completamente equivocado sobre esto, y perdóname si lo estoy, pero si el comando md de uboot solo está leyendo direcciones de memoria asignadas a registros de dispositivos y devolviéndote el contenido, ¿no podrías leer esas mismas ubicaciones de memoria con un uso inteligente? de dd if=/dev/mem ...?

1
LawrenceC

busybox devmem

busybox devmem es mi versión preferida de devmem2 que se mencionó en: https://unix.stackexchange.com/a/134661/32558

devmem2 vino en muchas versiones diferentes de varias fuentes, especialmente Buildroot http://free-electrons.com/pub/mirror/devmem2.c

Pero una utilidad Busybox es más canónica, ampliamente disponible y mantenida.

Por ejemplo,devmem2 fue rechazado de Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=595805 (pero no obstante, se creó un paquete de Ubuntu).

Puede obtenerlo en Ubuntu con:

Sudo apt-get install busybox

Uso: leer 4 bytes de la dirección física 0x12345678:

Sudo busybox devmem 0x12345678

Escribir 0x9abcdef0 a esa dirección:

Sudo busybox devmem 0x12345678 w 0x9abcdef0

Aquí hay algunas maneras geniales de probar devmem fuera: https://stackoverflow.com/questions/12040303/accessing-physical-address-from-user-space/45127890#4512789

¿La configuración del dispositivo PCI está en/sys/bus/pci/devices/*/config de alguna ayuda?

0
user3487

Hay una utilidad llamada pcimem ( https://github.com/billfarrow/pcimem )

Puede usarlo para leer y escribir en/desde dispositivos pci.

0
simba