Aygıt kayıtlarını okumak için Shell komutu mu?


18

Linux çalıştıran tek kartlı bir bilgisayarda, donanımı kontrol eden aygıt yapılandırma kayıtlarının içeriğini okumanın bir yolu var mı? Sanırım bunun için bir sarıcı olurdu inw().

mdSürücü hata ayıklama bağlamında kullanılacak U-önyükleme bellek dökümü ( ) komutuna eşdeğer bir şey arıyorum .


2
Bu yardımcı olabilir, ancak tüm konuyu okuduğunuzdan emin olun: lists.arm.linux.org.uk/lurker/message/…
Gilles 'SO- kötü olmayı bırak'

Bu konuda herhangi bir güncelleme ??
Sen

@Sen: Olumsuz. Hala güldüm. Bağlantılı iş parçacığını okudum, bu da inw () 'nin düşündüğüm şeyi yapmadığını gösteriyor: "inb () ve arkadaşları yalnızca PCI ve ISA IO adres alanının öykünmesi içindir ." Bir osiloskop kullanıyorum ve bir sonraki en iyi seçeneklerim olarak çok sayıda çekirdek sürücü kodu okudum.
Aralık'ta

Yanıtlar:


14

Cihazın fiziksel adresini biliyorsanız devmem2'yi kullanabilirsiniz.

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

3

Bunu doğrudan bir vanilya çekirdeği ile yapıp yapamayacağınızı bilmiyorum.

Ancak görmek istediğiniz bellek içeriğini dışa aktarmak için / proc içinde "dosya" kullanan basit bir sürücü yazmak oldukça zor olmalıdır.

Daha sonra basit bir komut dosyası ile "dosyanızı" okuyabilir ve o belleğe erişebilirsiniz.


1

Bu konuda tamamen ve tamamen yanlış olabilirim ve eğer öyleyse beni affedin, ancak uboot'un md komutu sadece cihaz kayıtlarına eşlenen bellek adreslerini okuyor ve içeriği size geri gönderiyorsa, aynı bellek konumlarını akıllıca kullanarak okuyamazdınız arasında dd if=/dev/mem ...?


Bence bu yolun potansiyeli var ama bir sorun var gibi görünüyor. Bu komut root olarak çalıştırıldı: "dd if = / dev / mem bs = 1 skip = 10000 count = 512" şu hatayı veriyor: "dd: / dev / mem: Bozuk adres" Bunun ne anlama geldiğinden emin değilim. Google, bunun 2.6 çekirdeğinde yapılan değişikliklerle ilgili olduğunu söylüyor, ancak bununla ilgili henüz çalışacak kadar anlamadım.
pingswept

1
Belki mtdblock sürücüsünü kullanmayı deneyin. Şuna bir göz atın: en.gentoo-wiki.com/wiki/Using_Graphics_Card_Memory_as_Swap Ancak grafik kartı RAM'inizi işaretlemek yerine, cihaz kayıtlarına göstermeyi deneyin.
LawrenceC

0

/ Sys / bus / pci / Devices / * / config içindeki PCI aygıt yapılandırması herhangi bir yardım mı?


2
Bu gerçekten bir yorum, sorunun cevabı değil. Yazara geri bildirim bırakmak için lütfen "yorum ekle" yi kullanın.
Renan

@Renan "Bu gerçekten bir yorum" Muhtemelen kasıtsız, ama komik. Günümü totoloji ile aydınlatmak için +1. edit: Ben sadece bu alaycı olarak gelebilir fark etti. Öyle demek istemiyorum.
kök

0

busybox devmem

busybox devmemtercih ettiğim sürümü devmem2şu adresten bahsedildi: /unix//a/134661/32558

devmem2birçok upstream'den farklı sürümlerde geldi, özellikle Buildroot http://free-electrons.com/pub/mirror/devmem2.c

Ancak bir Busybox yardımcı programı daha kanoniktir, yaygın olarak bulunur ve korunur.

Örneğin, devmem2Debian'dan reddedildi: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=595805 (ancak yine de bir Ubuntu paketi oluşturuldu).

Şununla Ubuntu'da alabilirsiniz:

sudo apt-get install busybox

Kullanım: fiziksel adresten 4 bayt okuyun 0x12345678:

sudo busybox devmem 0x12345678

0x9abcdef0Bu adrese yazın :

sudo busybox devmem 0x12345678 w 0x9abcdef0

Test etmenin bazı harika yolları devmem: /programming/12040303/accessing-physical-address-from-user-space/45127890#45127890


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.