2012-02-10 38 views
8

मुझे आशा है कि किसी को समझने के लिए सवाल अच्छी तरह से phrased है।I/O पता स्थान डिवाइस पर मैप किया गया है?

मैं समझता हूं कि मुख्य मेमोरी (रैम) और पोर्ट I/O संचालित I/O के लिए, इसका स्वयं का पता स्थान है जो निर्देशों का उपयोग करता है, उपयोग करें।

यदि कोई वास्तविक मोड असेंबलर प्रोग्राम लिखना था, तो यह डेवलपर पर निर्भर करेगा कि यह आवश्यक दस्तावेज है कि मदरबोर्ड पर विशिष्ट स्लॉट किस पते में हैं, क्या पता है? कहें पीसीआई स्लॉट पता एक्स है, प्रिंटर वाई

क्या बस प्रकार के आधार पर पते मानक मानक सीमा हैं?

मैं इसे बेहतर समझने के लिए क्या पढ़ सकता हूं? उम्मीद है कि कोई मदद कर सकता है। धन्यवाद।

~

पीसी सिस्टम का जिक्र करते हुए।

+0

यदि आपके मन में किसी विशेष मंच है? –

+1

उत्तर एक कमोडिटी पीसी के लिए बिल्कुल अलग है जहां सॉफ़्टवेयर से एम्बेडेड पीसी के उत्तर की तुलना में कई अलग-अलग कॉन्फ़िगरेशन में काम करने की अपेक्षा की जाती है जहां सॉफ़्टवेयर को केवल एक निश्चित कॉन्फ़िगरेशन का समर्थन करना होता है। आपको अपना प्रश्न कम करने की जरूरत है। –

+0

क्षमा करें। मैं एक पीसी का जिक्र कर रहा हूँ। –

उत्तर

13

x86 पीसी पर बायोस सामान्य रूप से फ्लैट/भौतिक पता स्थान के आवंटन का प्रबंधन करता है, और सब कुछ उस स्थान पर कुछ जगह का उपयोग करता है। तो BIOS प्रत्येक पीसीआई स्लॉट पर जाकर पीसीआई उपकरणों को "गणना" करेगा, यह देखने के लिए कि कोई भी वहां है या नहीं। मानक कॉन्फ़िगरेशन रजिस्ट्रार हैं कि एक पीसीआई डिवाइस में से कुछ में से कुछ संकेत होना चाहिए कि कितना पता स्थान और किस प्रकार (आई/ओ आधारित या मेमोरी मैप किया गया)। बायोस सभी को खुश करने और उन्हें जो कुछ चाहिए वो देने का प्रयास करता है। विंडोज या लिनक्स इन उपकरणों या पतों को रीमेप नहीं करेंगे, वे बायोस द्वारा उन्हें क्या दिया जाता है। हर पीसीआई प्रणाली उस तरह से काम नहीं करती है लेकिन दुर्भाग्यवश यह पीसी का काम है।

तो तुम नट और बोल्ट में मिल करना चाहते हैं, इस पुस्तक http://www.mindshare.com/shop/?c=b&section=0A6B150A मुझे लगता है कि इसके लिए एक डाउनलोड लिंक अगर आप गूगल "पीसीआई प्रणाली वास्तुकला"

यदि आप लिनक्स चलाने तो पता चलता है कि है मिल lspci के लिए स्रोत, कुछ पुस्तकालय और उदाहरण हैं जिन्हें आप अलग कर सकते हैं और यह जांच सकते हैं कि आपके सिस्टम में कौन से डिवाइस हैं और उनका मूल पता और मेमोरी रेंज क्या है। सबसे अधिक संभावना है कि आप केवल अन्य ऑपरेटिंग सिस्टम करना चाहते हैं और पीसीआई होस्ट नियंत्रकों को यह देखने के लिए पढ़ना चाहते हैं कि कहां आवंटित किया गया है, और उस जानकारी को उस सिस्टम पर चल रहे सॉफ़्टवेयर को प्रदान करें। आप एक बार बूट कर सकते हैं और प्रिंटर को 0xE0000000 पता चलता है और अगली बार 0xDB000000, आपके पर्यावरण को उन तंत्रों को देने के लिए एक तंत्र प्रदान करता है, या उनको आपके पर्यावरण पता स्थान के भीतर कुछ निश्चित पते पर सार लगाता है और आपका कोड भौतिक में अनुवाद का प्रबंधन करता है/डिवाइस के लिए असली पता।

मुझे वास्तविक मोड शब्द का उपयोग करके लगता है कि आप x86 सिस्टम के कुछ स्वाद के बारे में बात कर रहे हैं, और शायद यह कुछ स्वाद का एक पीसी है। शायद एक मैक। यह सुनिश्चित नहीं है कि मैक यह कैसे करता है, उनके गणन के बारे में पर्याप्त नहीं जानता। हार्डवेयर अभी भी एक उत्तर और दक्षिण पुल के साथ एक इंटेल प्रोसेसर है जिसके बाद कई पीसीआई पुल या अन्य इंटेल पीसीआई चिप्स हैं जो अंततः बोर्ड (वीडियो चिप्स, आदि) या पीसीआई स्लॉट पर बिकने वाले कई पीसीआई उपकरणों में समाप्त होते हैं। कार्ड में प्लग के लिए। यदि आप लिनक्स चलाते हैं और lspci का उपयोग करते हैं और विक्रेता और भाग संख्याओं को देखते हैं तो आप इंटेल वेबसाइट पर इंटेल (विक्रेता आईडी 8086) डिवाइस के लिए मैन्युअल/डेटाशीट्स पा सकते हैं, और आप नियंत्रण की जांच करने के लिए lspci और इसके भाई प्रोग्राम का उपयोग कर सकते हैं और उन पीसीआई नियंत्रकों में स्टेटस रजिस्ट्रार, फिर यदि आप इसमें गहरी खुदाई करने में रुचि रखते हैं, तो मुझे यकीन नहीं है कि आपकी वास्तविक रुचि क्या है।

पते मानक नहीं हैं, न ही तय किए गए हैं, प्रत्येक बायोस उस मदरबोर्ड मॉडल के लिए अर्ध-कस्टम है, पीसीआईई स्पेस के लिए पता श्रेणी आमतौर पर एक पूर्ण या पूर्ण प्रोसेसर स्पेस के कम होता है, लेकिन वह विंडो बदल रही है 64 बिट की चाल और अधिक जगह की आवश्यकता (धीमी गति से)।उस पीसीआई विंडो का स्थान हार्डवेयर पर निर्भर है (उन विभिन्न इंटेल डिवाइसों के लिए वर्णित डेटाशीट्स देखें, या उसके माध्यम से या एनवीडिया या जो भी यह एक एमडी सिस्टम है) यदि बायोस 32 बिट मोड में चलाने के लिए कॉन्फ़िगर किया गया है जो पीसीआई विंडो सभी पीसीआई उपकरणों के लिए कहीं 2 गीग के बीच हो सकता है लेकिन निश्चित रूप से 4 गीग चिह्न के नीचे, लेकिन इसका मतलब यह नहीं है कि उन सभी प्रणालियों में 3 गीग चिह्न का उपयोग किया जाता है। 64 बिट के लिए मुझे लगता है कि वे शीर्ष के पास भी हैं, लेकिन मदरबोर्ड से मां बोर्ड तक यह बदल जाता है। फिर जब बस की गणना करने की बात आती है तो यह दोनों मदरबोर्ड विशिष्ट और व्यक्तियों के कंप्यूटर विशिष्ट होते हैं, कुछ डिवाइसों को मदरबोर्ड पर बोल्ड/सोल्ड किया जाता है और हर बार उसी क्रम में गणना की जाती है, लेकिन जिन कार्डों को आप स्लॉट में प्लग करते हैं, उन्हें जवाब देना होता है मेजबान और कभी-कभी पहले उत्तर देने वाले आधार पर गणना की जाती है, आप 20 बार बूट कर सकते हैं और एक ही लेआउट देख सकते हैं, एक और बार बूट कर सकते हैं और दो कार्ड्स स्थान स्वैप कर सकते हैं क्योंकि ऑर्डर की गणना की गई थी। तो अगर ऐसा लगता है कि आपका वीडियो कार्ड हमेशा एक ही स्थान पर है, तो कहीं भी उस नंबर को हार्डकोड न करें, हमेशा पीसीआई बस या टेबल स्कैन करें या यह जानने के लिए लाइब्रेरी कॉल करें कि कहां है। जब तक आप रीबूट नहीं करते हैं और फिर से प्रयास करने के बाद शायद यह कुछ नहीं बढ़ता है, इसलिए आपको यह पता लगाने के लिए पुन: स्कैनिंग नहीं रखना पड़ेगा कि हर बार जब आप इसे एक्सेस करना चाहते हैं।

हाँ, यदि आप अपने बायो को अपग्रेड या डाउनग्रेड करते हैं, तो बायोस सिर्फ सॉफ्टवेयर है, कभी-कभी बायोस परिवर्तनों को पीसीआई गणना के साथ करना पड़ता है (यह असामान्य नहीं है कि एक लोकप्रिय वीडियो कार्ड मदरबोर्ड पर अच्छी तरह से काम नहीं करता है, उन्होंने एक मोड डाला रीसेट बदलने के लिए बायोस सॉफ़्टवेयर में या उस कार्ड को जो कुछ भी काम करने का बेहतर मौका देना है) और यह पूरे सिस्टम के लिए गणना बदल सकता है।

+0

धन्यवाद! इससे बहुत कम मदद मिलती है। –

+0

यह उत्तर अच्छा है, लेकिन इसमें एक महत्वपूर्ण विवरण शामिल नहीं है: BIOS सीपीयू में I/O पोर्ट मैपिंग को वास्तव में कैसे संवाद करता है? –

0

एक एक वास्तविक-मोड कोडांतरक कार्यक्रम

ISRs आप (इंटरप्ट सेवा दिनचर्या) के बाद क्या हो सकता है लिखने के लिए थे, तो।
;

यह स्मृति के पहले खंड में संग्रहीत इंटरप्ट हैंडलर पतों की एक सूची है। (सेगमेंट 0000)। प्रत्येक इंटरप्ट संख्या में 4-बाइट हैंडलर पता, सेगमेंट और ऑफसेट होता है, पर जो उस इंटरप्ट को कॉल करते समय एक प्रोग्राम शाखा करेगा।

पता इंटरप्ट संख्या को 4 से गुणा करके पाया जा सकता है, यह ऑफसेट होने पर हैडलर का पता संग्रहीत किया जाता है।

आईएसआर स्थान को 0000: ax * 4 के रूप में परिभाषित किया जा सकता है, डॉस इंटरप्ट्स में सामान्य संख्या 21h होती है। तो सिर्फ इतना है कि (या अल) के साथ कुल्हाड़ी लोड

वहाँ डॉस की एक सूची यहां व्यवधान ... यह मामूली बड़ी है ...

http://www.ctyme.com/intr/int-21.htm