Gibt es auf einem Einplatinencomputer unter Linux eine Möglichkeit, den Inhalt der Gerätekonfigurationsregister zu lesen, die die Hardware steuern? Ich denke, es wäre ein Wrapper für inw()
.
Ich suche nach etwas, das dem md
Befehl U-boot memory dump ( ) entspricht und im Kontext des Treiber-Debuggens verwendet werden kann.
Antworten:
Wenn Sie die physikalische Adresse des Geräts kennen, können Sie devmem2 verwenden.
quelle
Ich weiß nicht, ob man das direkt mit einem Vanillekern machen kann.
Aber es sollte ziemlich knapp sein, einen einfachen Treiber zu schreiben, der eine "Datei" in / proc verwendet, um den Speicherinhalt zu exportieren, den Sie sehen möchten.
Dann können Sie Ihre "Datei" mit einem einfachen Skript lesen und haben Zugriff auf diesen Speicher.
quelle
Ich könnte völlig falsch liegen und mir verzeihen, wenn ich das tue, aber wenn der md-Befehl von uboot nur Speicheradressen liest, die den Geräteregistern zugeordnet sind, und die Inhalte an Sie zurückgibt, könnten Sie nicht dieselben Speicherorte mit geschickter Verwendung lesen von
dd if=/dev/mem ...
?quelle
Ist die PCI-Gerätekonfiguration in / sys / bus / pci / devices / * / config hilfreich?
quelle
busybox devmem
busybox devmem
ist meine bevorzugte Version, vondevmem2
der unter /unix//a/134661/32558 erwähnt wurdedevmem2
kam in vielen verschiedenen Versionen von verschiedenen Upstreams, insbesondere Buildroot http://free-electrons.com/pub/mirror/devmem2.cEin Busybox-Dienstprogramm ist jedoch kanonischer, allgemein verfügbar und wird gewartet.
Beispielsweise
devmem2
wurde von Debian abgelehnt: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=595805 (aber trotzdem wurde ein Ubuntu-Paket erstellt).Du kannst es in Ubuntu bekommen mit:
Verwendung: 4 Bytes von der physikalischen Adresse lesen
0x12345678
:Schreiben Sie
0x9abcdef0
an diese Adresse:Hier sind einige coole Möglichkeiten zum Testen
devmem
: /programming/12040303/accessing-physical-address-from-user-space/45127890#45127890quelle
Es gibt ein Hilfsprogramm namens pcimem ( https://github.com/billfarrow/pcimem )
Sie können es zum Lesen und Schreiben auf / von PCI-Geräten verwenden.
quelle