En una computadora de placa única con Linux, ¿hay alguna manera de leer el contenido de los registros de configuración del dispositivo que controlan el hardware? Creo que sería una envoltura para inw()
.
Estoy buscando algo equivalente al md
comando U-boot memory dump ( ), para usar en el contexto de la depuración del controlador.
Respuestas:
Si conoce la dirección física del dispositivo, puede usar devmem2.
fuente
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.
fuente
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 ...
?fuente
¿La configuración del dispositivo PCI está en / sys / bus / pci / devices / * / config de alguna ayuda?
fuente
busybox devmem
busybox devmem
es mi versión preferida de ladevmem2
cual se mencionó en: /unix//a/134661/32558devmem2
vino en muchas versiones diferentes de varias fuentes, especialmente Buildroot http://free-electrons.com/pub/mirror/devmem2.cPero 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 (sin embargo, se creó un paquete de Ubuntu).Puedes obtenerlo en Ubuntu con:
Uso: leer 4 bytes de la dirección física
0x12345678
:Escribe
0x9abcdef0
a esa dirección:Aquí hay algunas maneras geniales de probar
devmem
: /programming/12040303/accessing-physical-address-from-user-space/45127890#45127890fuente
Hay una utilidad llamada pcimem ( https://github.com/billfarrow/pcimem )
Puede usarlo para leer y escribir en / desde dispositivos pci.
fuente