デバイスレジスタを読み取るシェルコマンド?


18

Linuxを実行するシングルボードコンピューターで、ハードウェアを制御するデバイス構成レジスターの内容を読み取る方法はありますか?のラッパーになると思いますinw()

mdドライバーのデバッグのコンテキストで使用されるU-bootメモリダンプ()コマンドに相当するものを探しています。


2
これは役立つかもしれませんが、スレッド全体を必ずお読みください。lists.arm.linux.org.uk
Gilles「SO- stop being evil」

これに関するアップデートはありますか??
セン

@Sen:負。私はまだ困惑しています。リンクされたスレッドを読みましたが、inw()は思ったとおりには動作しないことが示唆されています。「inb()と友人は、PCIおよびISA IOアドレス空間のエミュレーションのみを目的としています。」私はオシロスコープを使用し、次の最良のオプションとして多くのカーネルドライバーコードを読みました。
pingswept

回答:


14

デバイスの物理アドレスがわかっている場合は、devmem2を使用できます。

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

3

バニラカーネルを使用して直接実行できるかどうかはわかりません。

ただし、/ procの「ファイル」を使用して、表示したいメモリコンテンツをエクスポートする単純なドライバを作成することは、非常に簡単です。

次に、簡単なスクリプトで「ファイル」を読み取り、そのメモリにアクセスできます。


1

私はこれについて完全に間違っている可能性がありますが、私がそうであれば私を許しますが、ubootのmdコマンドがデバイスレジスタにマップされたメモリアドレスを読み取り、その内容をあなたに返す場合、あなたは巧妙な使用でそれらの同じメモリロケーションを読むことができませんでしたのdd if=/dev/mem ...


このルートには可能性があると思いますが、問題があるようです。ルートとして実行されるこのコマンド:「dd if = / dev / mem bs = 1 skip = 10000 count = 512」はこのエラーを与えます:「dd:/ dev / mem:Bad address」それがどういう意味かわかりません。Googleは2.6カーネルで導入された変更と関係があると言っていますが、これについてはまだ十分に理解できていません。
ping掃引

1
mtdblockドライバーを使用してみてください。これを確認してください:en.gentoo-wiki.com/wiki/Using_Graphics_Card_Memory_as_Swap ただし、グラフィックカードのRAMを指す代わりに、デバイスのレジスタを指すようにしてください。
ローレンス

0

PCIデバイスの構成は、/ sys / bus / pci / devices / * / configにありますか?


2
これは本当にコメントであり、質問に対する答えではありません。著者にフィードバックを残すには、「コメントを追加」を使用してください。
レナン

@Renan「これは本当にコメントです」おそらく意図的ではありませんが、おかしいです。トートロジーで1日を明るくした+1。編集:私はちょうどこれが皮肉となるかもしれないことに気づいた。私はそういうわけではありません。
ルート

0

busybox devmem

busybox devmemdevmem2言及された私の優先バージョンです:https : //unix.stackexchange.com/a/134661/32558

devmem2いくつかのアップストリーム、特にBuildroot http://free-electrons.com/pub/mirror/devmem2.cから多くの異なるバージョンが提供されました

しかし、Busyboxユーティリティはより標準的で、広く利用可能であり、保守されています。

たとえば、devmem2Debianから拒否されました:https : //bugs.debian.org/cgi-bin/bugreport.cgi?bug=595805(ただし、Ubuntuパッケージは作成されました)。

Ubuntuでそれを取得できます:

sudo apt-get install busybox

使用法:物理アドレスから4バイトを読み取ります0x12345678

sudo busybox devmem 0x12345678

0x9abcdef0そのアドレスに書き込みます:

sudo busybox devmem 0x12345678 w 0x9abcdef0

テストdevmemするクールな方法は次のとおりです:https : //stackoverflow.com/questions/12040303/accessing-physical-address-from-user-space/45127890#45127890


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.