2008-09-16 8 views
5

हमारे पास किसी भी वीडियो या सीरियल पोर्ट के बिना एक छोटा एम्बेडेड सिस्टम है (यानी हम printf के माध्यम से टेक्स्ट आउटपुट नहीं कर सकते हैं)।
हम प्रारंभिक अनुक्रम के माध्यम से हमारे कोड की प्रगति को ट्रैक करना चाहते हैं।
क्या कुछ सरल चीजें हैं जिनसे हम इसकी सहायता के लिए कर सकते हैं।
यह किसी भी ओएस नहीं चला रहा है, और हार्डवेयर प्लेटफार्म कुछ हद तक अनुकूलन योग्य है।सीरियल पोर्ट या वीडियो के बिना एम्बेडेड प्रोसेसर को डीबग करने के लिए मैं किस सरल विधि का उपयोग कर सकता हूं?

आप आउटपुट पिन उपलब्ध है, तो आप उन्हें एल ई डी (या एक आस्टसीलस्कप) को हुक कर सकते हैं और उच्च/कम इंगित करने के लिए उत्पादन पिन टॉगल:

उत्तर

10

सबसे सरलतम स्केलेबल समाधान राज्य एल ई डी हैं। क्रियाओं के आधार पर एल ई डी टॉगल करें, या तो द्विआधारी रूप में या जब कुछ क्रियाएं होती हैं तो आप अपना ध्यान संकीर्ण कर सकते हैं।

सबसे शक्तिशाली हार्डवेयर JTAG डिवाइस होगा। आपको ब्रेकपॉइंट्स सेट करने की भी आवश्यकता नहीं है - बस एप्लिकेशन को रोकने में सक्षम होना और स्मृति की स्थिति का निरीक्षण करना पर्याप्त हो सकता है। ध्यान दें कि कुछ हार्डवेयर प्लेटफ़ॉर्म मेमोरी घड़ियों या हार्डवेयर ब्रेकपॉइंट्स जैसे "फैंसी" विकल्पों का समर्थन नहीं करते हैं। पूर्व आमतौर पर प्रोसेसर को रोकने और स्मृति पढ़ने के साथ काम करता है (आपके 10 मेगाहर्ट्ज सिस्टम को 1kHz सिस्टम में बदल देता है), जबकि बाद में कभी-कभी कोड प्रतिस्थापन (लक्षित निर्देश को एक अलग कूद के साथ प्रतिस्थापित करें) का उपयोग करके किया जाता है, जो कभी-कभी अन्य समस्याओं को मास्क करता है । इन मुद्दों से अवगत रहें और वे किस एम्बेडेड प्रोसेसर पर लागू होते हैं।

5

कुछ रणनीतियों आप डिबगिंग के साथ मदद करने के लिए काम कर सकते हैं कि कुछ बिंदु कोड में पहुंचे हैं।
उदाहरण के लिए, 1 झपकी कार्यक्रम लोड किया जा सकता है, 2 झपकी foozbar आरंभ नहीं हो जाता, 3 झपकी आदानों स्वीकार कर रहा है ...

आप एक से अधिक उत्पादन लाइनें उपलब्ध है, तो आप (एक 7 खंड अधिक जानकारी देने के लिए एलईडी का उपयोग कर सकते ब्लिंक के बजाय संख्या/अक्षर)।

यदि आपके पास स्मृति पढ़ने की क्षमता है और कुछ रैम उपलब्ध है, तो आप प्रिंटफ-जैसे डीबगिंग करने के लिए स्प्रिंट फ़ंक्शन का उपयोग कर सकते हैं, लेकिन स्क्रीन/सीरियल पोर्ट पर जाने के बजाय, यह स्मृति में लिखा गया है।

0

एक जेएबी डीबगर भी एक विकल्प है, हालांकि स्थापित करने के लिए बोझिल है।

0

यदि आपके पास JTAG नहीं है, तो दूसरों द्वारा सुझाए गए एल ई डी एक अच्छा विचार है - हालांकि आप इस मुद्दे को ट्रैक करने के लिए परीक्षण/पुनर्निर्माण चक्र में समाप्त होने की इच्छा रखते हैं।

यदि आपके पास अधिक समय है, और अतिरिक्त हार्डवेयर पिन और अतिरिक्त मेमोरी छोड़ दी गई है, तो आप हमेशा कम गति वाले सीरियल इंटरफ़ेस को थोड़ा-सा कर सकते हैं। मैंने पाया है कि अतीत में बहुत उपयोगी है।

+0

बिट बैंगिंग सीरियल i/f – Benoit

2

यह उस डिबगिंग के प्रकार पर निर्भर करता है जिसे आप करने का प्रयास कर रहे हैं - विशेष रूप से यदि आप ट्रेसिंग की अस्थायी विधि के बाद हैं या यदि आप एक उपकरण प्रदान करने की कोशिश कर रहे हैं जिसका उपयोग स्थिति के संकेत के रूप में किया जा सकता है परियोजना का जीवन (या उत्पाद)।

एक बंद के लिए, एक सर्किट डीबगर (उदाहरण के लिए jtag) गहराई से स्रोत ट्रेसिंग और डिबगिंग में बहुत उपयोगी हो सकता है। हालांकि, वे सबसे सहायक होते हैं जहां आपके डिबगिंग को ब्रेकपॉइंट्स सेट करने और मेमोरी और रजिस्टरों की जांच करने की आवश्यकता होती है - जिससे यह बहुत कम लाभ होता है जहां आप समय की गंभीर समस्याओं का सामना कर रहे हैं।

जहां आपको अपने सिस्टम के निष्पादन पर महत्वपूर्ण प्रभाव डाले बिना प्रोग्राम स्थिति निर्धारित करने की आवश्यकता है, अतिरिक्त I/O पिन से जुड़े एल ई डी का उपयोग सहायक होगा। इन्हें डिजिटल स्टोरेज ऑसिलोस्कोप (डीएसओ) या तर्क विश्लेषक के इनपुट के रूप में भी इस्तेमाल किया जा सकता है। इस तकनीक को दालों के अद्वितीय पैटर्न चुनकर और अधिक शक्तिशाली बनाया जा सकता है जो डीएसओ पर पहचाने जा सकेंगे।

अधिक बहुमुखी डिबगिंग टूल के लिए, हालांकि, एक सीरियल पोर्ट एक अच्छा समाधान है। लागत और पीसीबी रीयल-एस्टेट को बचाने के लिए आपको एक प्लग-इन मॉड्यूल का उपयोग करना उपयोगी हो सकता है जिसमें आरएस 232 कन्वर्टर्स शामिल हैं।

यदि आप अपने उत्पाद के सामान्य संचालन के हिस्से के रूप में स्थिति का दीर्घकालिक संकेत प्रदान करने का प्रयास कर रहे हैं, तो एल ई डी एक सस्ता तरीका है। हालांकि इस स्थिति में दालों के पैटर्न चुनना सबसे अच्छा है जो दृश्य निरीक्षण द्वारा आसानी से पहचाने जाने के लिए पर्याप्त धीमे होते हैं। यह सब समय के साथ आप एक विशेष पैटर्न सीखेंगे जो "सामान्य" व्यवहार का प्रतिनिधित्व करता है।

0

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

2

आप सिस्टम के आईओ पिन से बिट-बैंगिंग का उपयोग करके आसानी से धारावाहिक संचार (यूएआरटी) का अनुकरण कर सकते हैं। इसे कार्ड के पिन में से एक पर ले जाएं और वहां एक आरएस 232 कनवर्टर से संलग्न करें (टीटीएल से आरएस 232 कन्वर्टर्स या तो खरीद या निर्माण करना आसान है), जो आपके पीसी के सीरियल पोर्ट पर जाता है।

+0

पर बहुत अच्छा विचार यह थोड़ा बैंगिंग सीरियल इंटरफ़ेस करने के लिए मेरे साथ कभी नहीं हुआ था। प्रतिभाशाली! – Benoit

0

थोड़ा-टक्कर वाला सॉफ़्टवेयर यूएआरटी का उपयोग करने का विचार अच्छा है, लेकिन एक लिखने में कुछ प्रयास आवश्यक हैं और आपको कुछ मुफ्त टाइमर और इंटरप्ट की भी आवश्यकता है। यदि आपके हार्डवेयर में कोई अन्य अप्रयुक्त सीरियल इंटरफेस (एसपीआई, आई 2 सी, ..) है, तो उनका उपयोग करना आसान होगा। एक छोटे से माइक्रोकंट्रोलर के साथ आप इंटरफेस को आरएस -223 में परिवर्तित कर सकते हैं।

यदि आपको बिट-बैंगिंग के लिए जाना है, तो एक सिंक्रोनस सीरियल बनाना एक आसान विकल्प हो सकता है क्योंकि यह समय के लिए महत्वपूर्ण नहीं होगा।