इकाई परीक्षण AVR विधानसभा भाषा


11

आप अपने विधानसभा कोड का परीक्षण कैसे करते हैं?

मैं एक हेक्सापॉड रोबोट परियोजना के हिस्से के रूप में एक सीरियल सर्वो नियंत्रक पर काम कर रहा हूं और कोड उस बिंदु पर पहुंच गया है जहां यह जटिल हो रहा है;) वैसे भी, मैं सी + + सर्वर डेवलपर के रूप में अपने दिन की नौकरी में यूनिट परीक्षणों का उपयोग करने के लिए उपयोग किया जाता हूं; इसलिए मेरे AVR असेंबली कोड में एक ही तरह के परीक्षण को लागू करने की कोशिश कर रहा है। मैंने एक तरह से काम किया है जो मेरे लिए ठीक काम करता है ( यहाँ देखें ) लेकिन मुझे दिलचस्पी है अगर कोई मानक उपकरण या तकनीक है जो मुझे याद आ रही है।

अपडेट किया गया: आप में से जो लोग सर्वो नियंत्रक के लिए पूर्ण स्रोत के इच्छुक हैं और यूनिट परीक्षण अब यहां उपलब्ध हैं

जवाबों:


3

मैं इसे भी सुरुचिपूर्ण के रूप में वर्णित करूंगा, लेकिन समस्या को जोड़ना चाहूंगा, अगर आप मेरी घुसपैठ को माफ कर देंगे।

मुझे पता है कि इस तरह की स्थितियों के माध्यम से काम करने के लिए बहुत ही मूल्यवान सॉफ़्टवेयर पैकेज हैं, लेकिन जिस कंपनी में हम काम करते हैं, हम उसकी लागत तब तक नहीं उठा सकते जब तक कि हमें यकीन न हो कि यह वही है जो हमें चाहिए।

टेस्ट ड्रिवेन डेवलपमेंट (टीडीडी) उन बेहतर प्रणालियों में से एक है जिसे मैंने विकास के लिए सुना है, और मैं इसका आनंद लेता हूं, लेकिन जो समस्याएं मेरा समय लेती हैं वे आम तौर पर जटिल व्यवधान और हार्डवेयर घटनाओं के कारण होती हैं जो कई ग्लिट्स कहलाती हैं। ऐसा लगता है कि सितारों को संरेखित करने पर हर 2 घंटे में एक छोटी सी बात होती है, लेकिन अगर आपका फोन सप्ताह में एक बार जमता है, तो आप इंजीनियरों के नाम को शाप देंगे। हमारे मामले में, हमें एक फीड लॉट में ट्रेक करना होगा जब चीजें वास्तव में टूट जाएंगी, जो कि आप कल्पना कर सकते हैं, मुझे बचना पसंद है।

मैंने उप-प्रणालियों की कार्यक्षमता की जांच करने के लिए बहुत ही बुद्धिमान उपाय देखे हैं, जिन्हें अगर ठीक से लागू किया जाता है, तो शायद मुझे 50 घंटे के काम के सप्ताह में से 3 घंटे बचाएंगे, लेकिन अगर गड़बड़ स्थितियों को खोजने का एक बुद्धिमान तरीका था, तो इससे मुझे काम के हफ्तों में बचत होगी। "बग" की तलाश है जो कभी-कभी भारी भार के तहत क्षेत्र में होता है।

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


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

1
मैं आपको गलत समझ सकता हूं, लेकिन मैं गैर-रुकावट और इंटरप्ट कोड इंटरैक्शन से काफी सावधान रहने की कोशिश करता हूं। मुझे शायद परमाणु संचालन के अपने उपयोग में अधिक ढीला होना चाहिए, लेकिन यह कभी नहीं दिखाया गया है कि जिस स्तर पर हमारा आशावादी है, उस स्तर पर नुकसान पहुंचा सकता है। समस्याएँ तब उत्पन्न होती हैं, जब एक व्यवधान दूसरे पर हावी हो जाता है, एक आम मैं छात्रों की मदद करता हूं जो पीडब्लूएम पीढ़ी को बाधित करते हैं। यदि आपको अत्यधिक सटीक गति की आवश्यकता है, उदाहरण के लिए अपनी चिप में एक तुलना मॉड्यूल का उपयोग करके, और एक अन्य रुकावट कुछ और पर समय बिताने में व्यस्त है और आपको 50uS द्वारा विलंबित करता है जो दुनिया का अंत हो सकता है।
कोर्तुक

1
कुछ मामलों में आपकी प्राथमिकता हो सकती है, या आप स्वयं भी एक व्यवधान को निष्क्रिय कर सकते हैं और वैश्विक रूप से, मंच पर निर्भर आंतरिक अवरोधों को फिर से सक्षम कर सकते हैं, लेकिन मेरे स्वयं के विकास के लिए सबसे आसान रास्ता बिल्कुल आवश्यक चीजों के विपरीत समय को सीमित करना और सामान्य कोड करना है। बाकी काम।
कोर्तुक

1
मेरे वर्तमान डिज़ाइन को मेरे ब्लॉग पर समझाया गया है, जैसा कि एक प्रस्तावित नया डिज़ाइन है। अभी मेरे पास पीडब्लूएम के 64 चैनल हैं जो एक टाइमर रुकावट द्वारा उत्पन्न होते हैं और कोई अन्य व्यवधान नहीं है; धारावाहिक मतदान द्वारा किया जाता है। इसका मतलब पीडब्लूएम चट्टान ठोस है लेकिन धारावाहिक में समस्या हो सकती है। मेरा नया डिज़ाइन UART के साथ-साथ PWM पीढ़ी के लिए टाइमर का उपयोग करेगा और ग्लिच मुक्त PWM और गड़बड़ मुक्त UART प्रसंस्करण सुनिश्चित करने के लिए इंटरप्ट और रीइंपेक्टिंग और ब्लॉकिंग को बाधित करेगा ...
Len Holgate

2
मैं एक उदाहरण के रूप में पीडब्लूएम का उपयोग कर रहा था, जिस सिस्टम पर मुझे यह समस्या थी उस पर 3 एसपीआई कनेक्शन के साथ 3 एसपीआई इंटरफेस है जिसमें 3 चिप्स हम उस पर उपयोग करते हैं। बाहरी चिप्स की स्थिति और कुछ अन्य चीजों में बदलाव के बारे में सूचित करने के लिए 4 अलग-अलग बंदरगाह व्यवधान हैं। समस्या और अधिक खराब हो जाती है आपके पास अधिक इंटरफेस।
कोर्तुक

2

दिलचस्प। क्रिसमस के बाद मैं पिक्स के साथ कुछ असेंबलर करने पर विचार कर रहा था, जब मुझे थोड़ा और समय मिल गया है तो मुझे आपके सिस्टम पर एक अच्छी नज़र होगी।

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

यदि यह बहुत अधिक गंभीर हो जाता है, तो यह इकाई परीक्षण के लाभों से आगे निकल जाएगा और आपको इसका उपयोग करने के लिए कम उत्सुक बना देगा।


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

अब जब मुझे आपकी कार्यप्रणाली को देखने का उचित मौका मिला है, तो मुझे लगता है कि यह काफी सुरुचिपूर्ण है। हो सकता है कि क्रिसमस के बाद के अवार्ड्स पर मेरी नज़र होगी, क्योंकि उनके लिए पिक्स की तुलना में उनके आसपास बहुत अधिक समुदाय आधारित चीजें लगती हैं। कोई भी विचार जो AVR असेंबलर प्रोग्रामिंग के लिए एक सभ्य लिनक्स IDE हो सकता है।
आमोस

1
एक GNU टूल चेन है जिसे आप AVR स्टूडियो (जो कि Atmel का फ्री टूलसेट है) के स्थान पर उपयोग कर सकते हैं। संभवतः लिनक्स पर इसे चलाना संभव है, लेकिन मुझे इसकी आवश्यकता नहीं है।
लेन होल्गेट

बस लिनक्स के तहत AVR के लिए विकसित करने पर एक लिनक्स जर्नल लेख के लिए यह लिंक मिला: linuxjournal.com/article/7289
लेन

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