डिवाइस रजिस्टर पढ़ने के लिए शेल कमांड?


18

लिनक्स पर चलने वाले एकल-बोर्ड कंप्यूटर पर, हार्डवेयर को नियंत्रित करने वाले डिवाइस कॉन्फ़िगरेशन रजिस्टर की सामग्री को पढ़ने का एक तरीका है? मुझे लगता है कि यह एक रैपर होगा inw()

मैं यू-बूट मेमोरी डंप ( md) कमांड के बराबर कुछ खोज रहा हूं , जिसका उपयोग ड्राइवर डिबगिंग के संदर्भ में किया जाएगा।


2
यह मदद कर सकता है, लेकिन पूरे धागे को पढ़ना सुनिश्चित करें: lists.arm.linux.org.uk/lurker/message/…
गाइल्स का SO- बुराई होना बंद करो '

इस पर कोई अपडेट ??
सेन

@ सीन: नकारात्मक। मैं अभी भी स्टम्प्ड हूं। मैं लिंक किए गए धागे को पढ़ता हूं, जो बताता है कि inw () वह नहीं करता है जो मैंने सोचा था: "inb () और दोस्त केवल PCI और ISA IO एड्रेस स्पेस के अनुकरण के लिए हैं।" मैं एक आस्टसीलस्कप का उपयोग कर रहा हूं और मेरे अगले सर्वश्रेष्ठ विकल्पों के रूप में बहुत सारे कर्नेल ड्राइवर कोड पढ़ रहा हूं।
17

जवाबों:


14

यदि आप डिवाइस का भौतिक पता जानते हैं, तो आप devmem2 का उपयोग कर सकते हैं।

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

3

मुझे नहीं पता कि क्या आप इसे सीधे वेनिला कर्नेल के साथ कर सकते हैं।

लेकिन एक साधारण ड्राइवर को लिखने के लिए काफी स्ट्रेट फॉरवर्ड होना चाहिए जो उस मेमोरी कंटेंट को एक्सपोर्ट करने के लिए "फ़ाइल" का उपयोग करता है जिसे आप देखना चाहते हैं।

फिर आप अपनी "फाइल" को एक साधारण स्क्रिप्ट के साथ पढ़ सकते हैं और उस मेमोरी तक पहुंच सकते हैं।


1

मैं इस बारे में पूरी तरह से और पूरी तरह से गलत हो सकता हूं, और अगर मैं हूं तो मुझे माफ कर दें, लेकिन अगर uboot की md कमांड सिर्फ डिवाइस रजिस्टरों को मैप किए गए मेमोरी एड्रेस को पढ़ रही है और आपके लिए सामग्री वापस कर रही है, तो क्या आप उन्हीं मेमोरी स्थानों को चतुर उपयोग के साथ नहीं पढ़ सकते हैं का dd if=/dev/mem ...?


मुझे लगता है कि इस मार्ग में क्षमता है, लेकिन ऐसा लगता है कि कोई समस्या है। इस कमांड को रूट के रूप में निष्पादित किया गया: "dd if = / dev / mem bs = 1 स्किप = 10000 काउंट = 512" यह त्रुटि देता है: "dd: / dev / mem: Bad address" मुझे यकीन नहीं है कि इसका क्या मतलब है। Google मुझे बताता है कि 2.6 कर्नेल में शुरू किए गए परिवर्तनों के साथ यह कुछ करना है, लेकिन मुझे इसके बारे में अभी तक काम करने के लिए पर्याप्त समझ नहीं है।
३:११

1
शायद mtdblock ड्राइवर का उपयोग करने का प्रयास करें। इसे देखें: en.gentoo-wiki.com/wiki/Using_Graphics_Card_Memory_as_Swap लेकिन इसे अपने ग्राफ़िक्स कार्ड रैम की ओर इंगित करने के बजाय, शायद इसे डिवाइस रजिस्टरों की ओर इंगित करने का प्रयास करें।
LawrenceC

0

पीसीआई उपकरण विन्यास / एसआईएस / बस / पीसीआई / उपकरणों / * / किसी भी मदद के विन्यास में है?


2
यह वास्तव में एक टिप्पणी है, सवाल का जवाब नहीं। कृपया लेखक के लिए प्रतिक्रिया छोड़ने के लिए "टिप्पणी जोड़ें" का उपयोग करें।
रेनान

@ रेनन "यह वास्तव में एक टिप्पणी है" संभवतः अनजाने में, लेकिन मजाकिया, परवाह किए बिना। टॉटोलॉजी के साथ मेरे दिन को रोशन करने के लिए +1। संपादित करें: मुझे एहसास हुआ कि यह व्यंग्यात्मक है। मैं इसे इस तरह से मतलब नहीं है।
मूल

0

busybox devmem

busybox devmemमेरा पसंदीदा संस्करण है devmem2जिसका उल्लेख यहां किया गया था: /unix//a/134661/32558

devmem2कई अपस्ट्रीम से कई अलग-अलग संस्करणों में आया, विशेष रूप से बिल्डरोट http://free-electrons.com/pub/mirror/devmem2.c

लेकिन एक बिजीबॉक्स उपयोगिता अधिक विहित है, व्यापक रूप से उपलब्ध है और बनाए रखी गई है।

उदाहरण के लिए, devmem2डेबियन से खारिज कर दिया गया था: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=595805 (लेकिन एक उबंटू पैकेज nevet फिर भी बनाया गया था)।

आप इसे उबंटू में प्राप्त कर सकते हैं:

sudo apt-get install busybox

भौतिक पते से 4 बाइट्स पढ़ें 0x12345678:

sudo busybox devmem 0x12345678

0x9abcdef0उस पते पर लिखें :

sudo busybox devmem 0x12345678 w 0x9abcdef0

यहाँ परीक्षण करने के कुछ अच्छे तरीके दिए गए हैं devmem: /programming/12040303/accessing-physical-address-from-user-space/45127890#45127890


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.