SDRAM आरंभीकरण मुद्दा (फ्रीस्केल iMX31)


10

मैं हार्डवेयर कॉन्फ़िगरेशन में बदलाव को समायोजित करने के लिए एक मौजूदा init अनुक्रम (SDRAM के निम्न स्तर init) को संशोधित करने का प्रयास कर रहा हूं: मेरे iMX31 पर एक मौजूदा SDRAM को एक अलग आकार, अन्यथा उसी प्रकार / निर्माता / लेआउट / पिन / टाइमिंग के साथ बदल दिया गया था। चश्मा के अनुसार।

संक्षिप्त सेटअप परिदृश्य और त्रुटि व्यवहार: मैं बोर्ड बूटिंग प्राप्त करने में कामयाब रहा (अनुक्रम इस प्रकार है: NAND से बूटलोडर निष्पादित करें, RAM में 'step2 बूटलोडर कॉपी करें, RAM से' step2 बूटलोडर 'निष्पादित करें)। लेकिन मुझे लगता है कि कुछ सेटिंग्स गलत हैं, चूंकि RAM से निष्पादन (कूदने के बाद से चरण 2 तक) लगातार विफल रहता है।

मैंने गलत मापदंडों की पहचान करने के लिए बड़ी मात्रा में इन-डेप्थ टेस्ट किया, मेरे परिणाम ये हैं: - नंद या जेटीजी से निष्पादित होने पर सिंगल बाइट / शब्द रीड / राइट्स काम करता है - ब्लॉक-वार / फट राइट्स कांड से निष्पादित होने पर काम करने लगता है। JTAG भी) दिलचस्प बात: - ब्लॉक-वार लिखने के बाद, मुझे एक सही बाइट / शब्द (!) पढ़ने के लिए किसी भी SDRAM पते पर कई रीड्स की आवश्यकता है - अगर मैं अपनी कॉलम सेटिंग्स को संशोधित करके केवल उच्च (+1) राशि का उपयोग करता हूं! "लोड मोड" के लिए कॉलम, लेकिन प्रीचार्ज / रिफ्रेश के लिए नहीं, तो यह काम करता है, लेकिन असंगत रूप से (मेरे सिद्धांत पर यह निचले पते की सीमा के लिए मज़बूती से काम करता है, जहां लापता कॉलम कोई फर्क नहीं पड़ता)।

मेरे कॉन्‍फ़िगर का अंदाज़ा लगाने के लिए: रैम से सेटिंग इस सवाल में लगभग समान हैं। यह आश्चर्य की बात नहीं है, क्योंकि वे फ़्रीस्केल द्वारा आपूर्ति की जाती हैं, रैम टाइमिंग के बगल में: फ़्रीस्केल iMX31 पर, मैं एसडीआरएएम पते को सीपीयू पते पर कैसे अनुवाद कर सकता हूं? मेरी मूल सेटिंग समान है (लिंक में 64MB SDRAM भी), मेरी नई RAM 128MB है। सभी संदर्भ बोर्डों को 64MB या 128MB के साथ आपूर्ति की जाती है, इस प्रकार दोनों मान iMX31 द्वारा समर्थित हैं और व्युत्पन्न हैं।

मुझे जो परिवर्तन करना है (ध्यान: धारणा!) केवल RAM के COLUMN कॉन्फ़िगरेशन (यह एक और स्तंभ है) में है। RAM आकार में दोगुनी है, लेकिन अन्यथा कल्पना सटीक समान समय का दावा करती है, आदि। चूंकि इसमें केवल एक और कॉलम है (ऊपर लिंक देखें, मेरा प्रीचार्ज, रिफ्रेश और लोड मोड नए रैम के लिए 0x92100000 से 0x92200000 तक बदलता है। उदाहरण के लिए) ) और कुछ नहीं बदला है।

प्रश्न 1: क्या मेरी धारणा यह समझ में आती है, कि यदि सभी समय और भौतिक चिप विशेषताओं (ड्राइव की ताकत, समय और बिजली की खपत को प्रभावित करना) समान हैं, तो कॉलम की गिनती का परिवर्तन "स्थानीय" (अन्य सेटिंग्स को प्रभावित नहीं करना) हो सकता है? काफी दिलचस्प है, मैंने अपनी सेटिंग्स की तुलना कई अन्य लोगों के साथ ऑनलाइन उपलब्ध (यू-बूट, रेड-बूट 128 एमबी के साथ) की है और बोर्ड की विशिष्ट सेटिंग्स के बगल में, जैसे ड्राइव की ताकत, मुझे अंतर नहीं दिखता है।

प्रश्न 2: ऊपर मेरा त्रुटि व्यवहार (काम लिखता है, केवल आंशिक रूप से पढ़ता है) रैम की एक निश्चित अवैध सेटिंग के लिए संभवतः अद्वितीय है। किसी ने मुझे एक सलाह देने में सक्षम है जो एक करीब से देखने के लिए सेटिंग है? इसके अलावा 'सुरक्षित' पैरामीटर सेट करना संभव हो सकता है ताकि कम प्रदर्शन के साथ भी, सिस्टम मुझे अपराधी को कम करने की अनुमति देगा।


क्या आप यथोचित निश्चित हैं कि समस्या हार्डवेयर डिज़ाइन (खराब IC, लेआउट त्रुटियों, खराब सिग्नल अखंडता, अपर्याप्त शक्ति ...) से संबंधित नहीं है?
जाबरलो

जवाबों:


1

2 के लिए, एक iMX31 डेमो बोर्ड से सेटिंग्स के साथ शुरू करें। फिर उन्हें अपने हिस्से (गति और मुख्य रूप से आकार) के लिए आवश्यकतानुसार संशोधित करें। विशेष रूप से आपके पास पढ़ने पर प्रतीक्षा राज्यों की गलत संख्या है।

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