बूटलोडर की संरचना को समझने के लिए अच्छे उपकरण या तरीके?


9

मैं हाल ही में एक बुरा बग मैं एक Atmel AT91SAM9G20 SBC चल साथ पर काम कर रहा है का कारण पता चल यू-बूट , एक खुला स्रोत बूटलोडर। समस्या का मूल यह था कि U- बूट ने हार्डवेयर को अलग-अलग तरीके से कॉन्फ़िगर करने की अपेक्षा की थी जो मैंने इसे बनाया था, इसलिए कुछ डिवाइस रजिस्टर गलत थे।

अब जब मैंने समस्या का पता लगा लिया है, मुझे रजिस्टरों को सही ढंग से कॉन्फ़िगर करने के लिए यू-बूट को ट्वीक करने की आवश्यकता है। मैं कार्यक्रम के अंत में कोड की कुछ पंक्तियों को जोड़कर नेत्रहीन यह कर सकता हूं, लेकिन यह गड़बड़ है।

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


क्या आपने uboot डेवलपर्स मेलिंग सूची पर पूछने की कोशिश की है?
sybreon

जवाबों:


6

कई उपकरण / रणनीतियाँ हैं जो मदद कर सकती हैं:

  • स्रोत कोड की समझ बनाने के लिए बेहतर उपकरण:

    • cscope C कोड की खोज करने के लिए एक उपकरण है, यह grep जैसा है लेकिन सिंटैक्स को समझता है
    • फ़ंक्शन कॉलिंग संरचना की एक तस्वीर खींचने के लिए ग्राफ़ जनरेटर को कॉल करें
    • हालांकि मैंने कोशिश नहीं की है, लेकिन फेंकू दिलचस्प लगता है
  • रनटाइम विश्लेषण

    • एक डिबगर के साथ दिलचस्प वर्गों के माध्यम से कदम और विश्लेषण करें कि क्या हो रहा है
    • हर फ़ंक्शन के प्रवेश / निकास पर गुड का एक हिस्सा कॉल करने के लिए gcc के इंस्ट्रूमेंटेशन सुविधाओं का उपयोग करें। जैसे। http://ndevilla.free.fr/etrace/
  • अपना खुद का मिनी बूटलोडर लिखना

    • मुझे अक्सर लगता है कि किसी चीज़ को समझने का सबसे अच्छा तरीका उसे खुद बनाना है

दुर्भाग्य से, कोई जादू नुस्खा नहीं है जो सब कुछ के लिए काम करता है।


@ रनटाइम विश्लेषण - एक अलग एम्बेडेड सिस्टम पर व्यवहार्य नहीं है, खासकर जब एक ही समय में कोई अंतर्निहित ओएस नहीं चल रहा है, उदाहरण के लिए, एक बूटलोडर, जो यह है।
कॉनर वुल्फ

आप अभी भी डिबगर के साथ इसके माध्यम से कदम रख सकते हैं जैसा कि जॉबी सुझाता है। जटिलता के आधार पर यह सहायक हो भी सकता है और नहीं भी।
निक टी

Cscope उस तरह की चीज़ है जिसकी मैं कल्पना कर रहा था। मैं कुछ अधिक चमकदार होने की उम्मीद कर रहा था, लेकिन यह एक अच्छी शुरुआत है। धन्यवाद।
20

2

AT91 के निर्माण के लिए आपने इसे कैसे कॉन्फ़िगर किया?

कोड ट्री को ऐसे डिज़ाइन किया गया है कि कोई भी आर्किटेक्चर विशिष्ट सामान 'आर्च / (सीपीयू क्लास) / (सीपीयू टाइप) / ...' ट्री में स्थित है। मुझे आर्च / आर्म / सीपीयू / आर्म 926 ईजेएस / एटी 91 के तहत एटी 91 कोड मिला है ... क्या आप उस विशिष्ट विशिष्ट सामान को बदल सकते हैं जिसे आप वहां स्थित नहीं देखना चाहते हैं? उस निर्देशिका में देखने के लिए बहुत अजीब नहीं है, खासकर जब से लगभग आधी फाइलें व्यक्तिगत AT91 संस्करण-विशिष्ट हैं।

क्षमा करें यदि यह स्पष्ट है ... लेकिन आपने इस जाँच का उल्लेख नहीं किया है।

मैंने अभी तक यूबूट कोड ट्री को नहीं देखा था, लेकिन आपके पोस्ट ने मुझे ऐसा करने से डरा दिया। मेरा एक बर्नर प्रोजेक्ट में अंततः एक कस्टम iMX233 PCB पर uBoot और Linux का उपयोग करना शामिल है। मुझे इस तरह की प्रतिक्रिया प्राप्त करने में बहुत दिलचस्पी है कि कैसे यूबूट आर्किटेक्चर और वेरिएंट-विशिष्ट सामान को अलग किया जाता है और एक दर्द जो कितना बड़ा होने वाला है।


हाँ, मैंने आर्क / आर्म / सीपीयू / आर्म 926ईजे / एटी 91 / * के साथ कुछ गुणवत्ता समय बिताया है, लेकिन सुझाव के लिए धन्यवाद। यह पता चला है कि मैं जिस कोड की तलाश कर रहा था, वह वास्तव में प्रोसेसर बूट रोम में था, जिसे केवल Atmel ही एक्सेस कर सकता है। गोर
pingswept

1
वैसे, कुल मिलाकर, मैं यू-बूट से बहुत प्रभावित हुआ हूं। बड़ी संख्या में बोर्डों और सीपीयू के लिए जो इसका समर्थन करता है, यह बहुत अच्छी तरह से व्यवस्थित है। प्रलेखन विरल है, लेकिन यह बूटलोडर्स के लिए पाठ्यक्रम के बराबर प्रतीत होता है।
pingswept

@pingswept: हे, 4 परतों पर लिनक्स। अच्छा लगा। शायद मुझे iMX233 के बजाय उस चिप में देखना चाहिए। मैं एक समय के नरक में 4 परतों पर अपने एआरएम + दो एसडीआरएएम चिप्स प्राप्त करने की कोशिश कर रहा था और इसे अन्य परियोजनाओं पर काम करने के लिए आश्रय दिया। मैं एक Altium उपयोगकर्ता भी हूँ।
डे्रॉन

9G20 और iMX233 काफी करीब हैं। मैंने 9G20 को चुना क्योंकि ईथरनेट मैक में बनाया गया है, और चिप्स कम मात्रा में सस्ते हैं, लेकिन iMX233 एक करीबी रनर अप था।
22

इसके अलावा, चुम्बी हैकर बोर्ड पर एक नज़र डालें - शुरू करने के लिए एक अच्छी जगह हो सकती है यदि आप iMX233 के आसपास एक सिस्टम बनाने का निर्णय लेते हैं। Altium फ़ाइलें इस विकी पृष्ठ पर हैं: wiki.chumby.com/mediawiki/index.php/Chumby_hacker_board_beta
pingswept
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.