Se você souber o endereço físico do dispositivo, poderá usar o devmem2.
devmem2 <physical address> <size (b/h/w)> [value]
Em um computador de placa única que executa o Linux, existe uma maneira de ler o conteúdo dos registros de configuração do dispositivo que controlam o hardware? Eu acho que seria um wrapper para inw()
.
Estou procurando algo equivalente ao comando de despejo de memória U-boot ( md
), a ser usado no contexto da depuração do driver.
Se você souber o endereço físico do dispositivo, poderá usar o devmem2.
devmem2 <physical address> <size (b/h/w)> [value]
Eu não sei se você pode fazer isso diretamente com um kernel vanilla.
Mas deve ser um passo à frente para escrever um driver simples que use um "arquivo" em / proc para exportar o conteúdo da memória que você gostaria de ver.
Depois, você pode ler seu "arquivo" com um script simples e ter acesso a essa memória.
Eu poderia estar completamente errado com isso, e me perdoe se eu sou, mas se o comando md do uboot estiver lendo endereços de memória mapeados para registros de dispositivos e retornando o conteúdo para você, você não poderia ler os mesmos locais de memória? com uso inteligente de dd if=/dev/mem ...
?
A configuração do dispositivo PCI está em / sys / bus / pci / devices / * / config de alguma ajuda?
busybox devmem
busybox devmem
é a minha versão preferida de devmem2
, que foi mencionada em: link
devmem2
veio em muitas versões diferentes de vários upstreams, especialmente o link do Buildroot
Mas um utilitário Busybox é mais canônico, amplamente disponível e mantido.
Por exemplo, devmem2
foi rejeitado pelo Debian: link (mas um O pacote do Ubuntu foi criado mesmo assim.
Você pode obtê-lo no Ubuntu com:
sudo apt-get install busybox
Uso: leia 4 bytes do endereço físico 0x12345678
:
sudo busybox devmem 0x12345678
Escreva 0x9abcdef0
para esse endereço:
sudo busybox devmem 0x12345678 w 0x9abcdef0
Veja algumas maneiras interessantes de testar o devmem
out: link