Em um computador de placa única executando Linux, existe uma maneira de ler o conteúdo dos registros de configuração de dispositivos que controlam o hardware? Eu acho que seria um invólucro para inw()
.
Estou procurando algo equivalente ao md
comando dump ( ) da memória U-boot , para ser usado no contexto da depuração do driver.
Respostas:
Se você souber o endereço físico do dispositivo, poderá usar o devmem2.
fonte
Não sei se você pode fazê-lo diretamente com um kernel de baunilha.
Mas deve ser bastante complicado escrever um driver simples que use um "arquivo" em / proc para exportar o conteúdo da memória que você gostaria de ver.
Então você pode ler seu "arquivo" com um script simples e ter acesso a essa memória.
fonte
Eu posso estar completamente e totalmente errado sobre isso, e me perdoe se estiver, mas se o comando md do uboot estiver apenas lendo endereços de memória mapeados para registros de dispositivos e devolvendo o conteúdo para você, você não poderia ler esses mesmos locais de memória com uso inteligente? de
dd if=/dev/mem ...
?fonte
A configuração do dispositivo PCI está em / sys / bus / pci / devices / * / config de alguma ajuda?
fonte
busybox devmem
busybox devmem
é minha versão preferidadevmem2
mencionada em: /unix//a/134661/32558devmem2
veio em várias versões diferentes de vários upstreams, principalmente no Buildroot http://free-electrons.com/pub/mirror/devmem2.cMas um utilitário Busybox é mais canônico, amplamente disponível e mantido.
Por exemplo,
devmem2
foi rejeitado pelo Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=595805 (mas um pacote Ubuntu foi criado, mesmo assim).Você pode obtê-lo no Ubuntu com:
Uso: leia 4 bytes do endereço físico
0x12345678
:Escreva
0x9abcdef0
para esse endereço:Aqui estão algumas maneiras legais de testar
devmem
: /programming/12040303/accessing-physical-address-from-user-space/45127890#45127890fonte
Existe um utilitário chamado pcimem ( https://github.com/billfarrow/pcimem )
Você pode usá-lo para ler e gravar em / de dispositivos pci.
fonte