- 1. उत्पाद आवश्यकता का विकास
- 2. सिस्टम डिजाइन और एल्गोरिथम विकास
- 3. एंबेडेड फर्मवेयर के लिए कोडिंग
- परीक्षण एंबेडेड फर्मवेयर
सॉफ्टवेयर विकास आम तौर पर मुश्किल है लेकिन एक एम्बेडेड सिस्टम के लिए, यह कठिनाई के एक पूरे नए स्तर पर है। फर्मवेयर डेवलपर्स को हार्डवेयर विकास के बारे में अच्छा ज्ञान होना चाहिए और एक एम्बेडेड प्रोसेसर के आंतरिक कामकाज को समझना होगा। आज के आर्टिकल के लिए, मैं उन टूल्स और टिप्स को साझा करूंगा जिनका उपयोग उच्च स्तर की दक्षता हासिल करने और फर्मवेयर विकास को थकाऊ बनाने वाली कुछ चीजों को खत्म करने के लिए किया जा सकता है ।
एंबेडेड सॉफ्टवेयर विकास समान विकास प्रक्रिया के माध्यम से "साधारण" सॉफ्टवेयर विकास के माध्यम से जाता है। अपनाए गए विकास / प्रबंधन मॉडल के बावजूद, एंबेडेड सॉफ्टवेयर डेवलपमेंट में आम तौर पर निम्न चरण शामिल होते हैं:
- उत्पाद की आवश्यकता का विकास
- सिस्टम डिज़ाइन और एल्गोरिथम विकास
- कोडन
- परिक्षण
हम इन चरणों के साथ आने वाली कुछ कठिनाइयों की जांच करेंगे और कुछ ऐसे उपकरण जो दक्षता और उत्पादकता बढ़ा सकते हैं।
1. उत्पाद आवश्यकता का विकास
उत्पाद विनिर्देश अक्सर बोर्ड डिजाइनरों को ध्यान में रखते हुए किए जाते हैं। इसमें आमतौर पर बहुत कम जानकारी होती है जो फर्मवेयर के विकास में सहायता कर सकती है, एम्बेडेड सॉफ़्टवेयर डेवलपर एक त्रुटिपूर्ण 250 पृष्ठ (औसत) दस्तावेज़ के साथ समाप्त होता है, जिसे संदर्भों के लिए उपयोग नहीं किया जा सकता है और यदि ध्यान से नहीं माना जाता है तो आसानी से डिजाइन में ओवरसाइट्स हो सकते हैं, जो बदले में होगा।, परियोजना समय सीमा को बढ़ाया जा रहा है अगर समग्र परियोजना विफलता नहीं। दस्तावेजों में शायद ही कभी रजिस्टरों या उनके बिट फ़ील्ड के बारे में जानकारी होती हैअन्य चीज़ों के बीच और फ़र्मवेयर डेवलपर्स में कई मैन घंटे खर्च होते हैं क्योंकि वे दस्तावेज़ के माध्यम से खोज करते हैं कि कौन सी चीज़ किस समूह से संबंधित है और कौन सा बिट फ़ील्ड किस रजिस्टर से संबंधित है। नीचे कुछ सुझाव दिए गए हैं, जिन्हें एक अधिक उपयोगी परियोजना विनिर्देश दस्तावेजों के विकास को सुनिश्चित करने के लिए माना जा सकता है।
रजिस्टर विवरण का उपयोग
जैसा कि ऊपर चर्चा की गई है, फर्मवेयर डेवलपर्स को सिस्टम के सभी हिस्सों को प्रभावी ढंग से नियंत्रित करने में सक्षम होने के लिए सभी कंट्रोल तत्वों (सीपीयू, एमसीयू, आदि) के सभी रजिस्टरों, यादों आदि की पेचीदगियों को समझने की आवश्यकता है। इसे लगाने के लिए, फर्मवेयर डेवलपर्स सुनिश्चित कर सकते हैं कि विनिर्देश दस्तावेज़ मेमोरी मैप्स के साथ रजिस्टरों का उचित विवरण ले जाए । नियंत्रण तत्व में सभी रजिस्टरों को एक विशिष्ट नाम सौंपा जा सकता है जो उन्हें दस्तावेज़ में पहचानना आसान बनाता है और वे सभी गर्म-लिंक किए जा सकते हैं जैसे कि वे दस्तावेज़ के भीतर एक सूची का नेतृत्व करते हैं जो नाम, स्थान, ब्लॉक और पते को बताता है। प्रत्येक रजिस्टर।
कार्य विवरण
एक अन्य तरीका जिसके माध्यम से विनिर्देशित दस्तावेजों को एम्बेडेड सॉफ्टवेयर डेवलपर्स के लिए उपयोगी बनाया जा सकता है, यह वर्णन करके कि प्रत्येक ब्लॉक को क्या करना है और इसे कैसे करना चाहिए । इस स्तर पर भी, प्रत्येक ब्लॉक के तहत त्रुटि से निपटने की योजना होनी चाहिए। अनिवार्य रूप से यह फर्मवेयर डेवलपर की तरह दिखता है; "जब मैं यहाँ पहुँचता हूँ, तो मुझे यह करना है, यह और यह सुनिश्चित करना, यह और वह, घटित नहीं होता है"। यह डेवलपर के काम को निर्देशित करने में मदद करता है और संभावित त्रुटियों और बगों की पहचान करने से पहले ही परियोजना का मूल्यांकन करने में मदद करता है, जिससे कीमती समय और धन की बचत होती है।
दस्तावेज़ संरचना सहित अन्य कारक हैं, फोंट पढ़ने में आसान का उपयोग (कुछ डेवलपर्स थकावट होने पर भी काम कर सकते हैं), चार्ट और चित्र जहां संभव हो जो इस चरण के बाद फर्मवेयर टीम की दक्षता में वृद्धि कर सकते हैं।
2. सिस्टम डिजाइन और एल्गोरिथम विकास
इस चरण में स्यूडोकोड्स, फ्लोचार्ट्स, राज्य मशीनों का विकास और फर्मवेयर के डिजाइन के साथ शामिल सब कुछ शामिल है। इस चरण के लिए, विचारों को व्यवस्थित करने, परियोजना के चारों ओर विरासत / पहले से लिखे गए सॉफ़्टवेयर का पता लगाने और अपने स्वयं के फ़्लोचार्ट, स्टेट मशीन आदि को विकसित करने में मदद करने के लिए बहुत से टूल का उपयोग किया जा सकता है। इनमें से कुछ टूल के बारे में नीचे चर्चा की गई है।
पीआईएमएस
उत्पाद के विकास के इन चरणों में, डेवलपर्स बहुत अधिक स्क्राइब करते हैं क्योंकि वे प्रोजेक्ट पर संसाधनों को वेब लिंक से सूत्र आदि तक इकट्ठा करते हैं। इस जानकारी पर नज़र रखने के सर्वोत्तम तरीकों में से एक है ताकि वे बाद में उपयोगी हो PIM के उपयोग के माध्यम से (उत्पाद जानकारी प्रबंधन) उपकरण। वहाँ काफी संख्या में पीआईएम हैं लेकिन मैं कुछ उत्कृष्ट विशेषताओं के साथ कुछ का उल्लेख करूंगा।
1. सदाबहार
एवरनोट आपको उन नोटों को लेने में मदद करता है जो किसी भी प्लेटफ़ॉर्म पर उपलब्ध हैं ताकि आप बस घर में रहते हुए अपने पीसी पर बनाए गए नोट की जांच कर सकें। नोट अच्छी तरह से व्यवस्थित हैं और पूरी तरह से खोज योग्य हैं, इसलिए आपको हमेशा वही मिलेगा जो आपको चाहिए।
2. ट्रंकनोट
ट्रंक नोट एक विकी जैसा नोट लेने वाला नोट है। यह नोटबंदी को लेकर विकी की सारी संगठनात्मक शक्ति को सामने लाता है। यह एक मोबाइल फोन आधारित अनुप्रयोग है लेकिन आसानी से वाईफ़ाई के माध्यम से एक पीसी के साथ समन्वयित किया जा सकता है।
अन्य प्रकार के पीआईएम जैसे टिडलीवीकी आदि उनमें से प्रत्येक ऐसी विशेषताओं के साथ आते हैं जो विशिष्ट व्यक्तियों के लिए इसे अधिक आकर्षक बना सकती हैं और इससे पहले कि आप अंततः एक पर बसने से पहले कुछ नमूने ले सकें।
लिगेसी कोड को समझना
उपकरणों का एक और समूह जो डिजाइन चरण के दौरान बहुत उपयोगी है, विरासत कोड को समझने के लिए उपकरण हैं। उन स्थितियों में जहां डिज़ाइन किया जा रहा उत्पाद पिछले उत्पाद का एक उन्नत संस्करण है, डेवलपर को इस काम की समीक्षा करने के लिए उपयोगी हो सकता है जो इस नए प्रोजेक्ट के लिए कुछ विचारों और कोड के बिट्स प्राप्त करने के लिए पहले से ही किया गया है । यह काफी लंबी सड़क हो सकती है, खासकर यदि आप उस टीम का हिस्सा नहीं थे जिसने पिछले सॉफ्टवेयर का निर्माण किया था। काफी सॉफ्टवेयर हैं जो पेड़ों को बनाने में मदद करते हैं, पहले से ही लिखित कोड से दस्तावेज और फ्लोचार्ट बनाते हैं।
1. ऑक्सीजन
Doxygen एक काफी शक्तिशाली उपकरण है जो स्रोत कोड से प्रलेखन बनाने में मदद करता है। इसे मुख्य रूप से C ++ के साथ काम करने के लिए डिज़ाइन किया गया था, लेकिन C, पायथन और कुछ अन्य भाषाओं के साथ भी काम करता है। इसमें किसी भी कोड की कोड संरचना को निकालने की क्षमता होती है, जिससे कोड की कल्पना करने में मदद करने के लिए स्वचालित रूप से उत्पन्न निर्भरता ग्राफ और इनहेरिटेंस आरेख प्रदान करते हैं।
2. ग्राफविज़
उनकी वेबसाइट के अनुसार, ग्राफविज़ संरचनात्मक जानकारी को अमूर्त ग्राफ़ और नेटवर्क के आरेख के रूप में प्रस्तुत करने में मदद करता है। इसका उपयोग Doxygen के साथ-साथ इसके द्वारा उत्पादित ग्राफिक्स को बेहतर ढंग से समझने के लिए किया जा सकता है।
3. श्रीखंड
Srecord फर्मवेयर छवियों में हेरफेर करने और विभिन्न फ़ाइल स्वरूपों के बीच परिवर्तित करने के लिए एक शक्तिशाली उपकरण है। इसका उपयोग बाइट ब्लॉक पर सीआरसी और चेकसम की गणना और करने के लिए किया जा सकता है, छोटी गाड़ी के उपकरण के कारण बनाई गई सही त्रुटि फाइलें, और अन्य चीजों के बीच फाइलों के अनुभागों को फ़िल्टर या स्थानांतरित करना। इसके उपयोग की अधिक जानकारी इसके SourceForge पेज पर देखी जा सकती है।
कुछ अन्य उपकरण है कि इस श्रेणी में आते हैं CrystalRev और Hexplorer दूसरों के बीच।
एल्गोरिदम का विकास करना
परियोजना के लिए छद्मकोड और फ्लोचार्ट में कताई एल्गोरिदम के विकास के लिए सभी अनुसंधान और नोट लेने वाले समुच्चय। फ्लोचार्ट विकसित करने के लिए कई उपकरण मौजूद हैं और जबकि उनमें से अधिकांश फर्मवेयर विकास के लिए अनन्य नहीं हैं, वे उपयोगी और महत्वपूर्ण विशेषताएं प्रदान करते हैं जो बस काम करवाते हैं और उत्पाद विकास चक्र के दौरान चार्ट को बनाए रखने में मदद करते हैं। नीचे फ़्लोचार्टिंग के लिए कुछ बेहतरीन उपकरण दिए गए हैं।
1. QFSM
QFSM परिमित राज्य मशीनों के डिजाइन और अनुकरण के लिए एक चित्रमय उपकरण है। डिजाइन को अनुकरण करने की इसकी क्षमता इस समूह के अन्य सॉफ्टवेयरों की तुलना में बेहतर बनाती है। यह विशेष रूप से उपयोगी है जब आप FPGA और इसी तरह के लक्ष्य हार्डवेयर के लिए राज्य मशीनों को डिजाइन कर रहे हैं।
2. ल्यूसिड चार्ट
स्पष्ट रूप से लुसीड चार्ट सबसे अच्छा और सबसे लचीला फ्लोचारिंग सॉफ्टवेयर है। यह वेब-आधारित है और इसमें टीम की विशेषताएं हैं जो आपको कई उपकरणों के बीच काम करने और टीम-साथी के साथ वास्तविक समय में सहयोग करने की अनुमति देती हैं।
3. Microsoft Visio
Visio वर्तमान में सबसे अच्छे चित्रमय उपकरणों में से एक है। इसमें विभिन्न क्षेत्रों की वस्तुओं की एक सरणी है जो किसी भी चीज़ का वर्णन करना आसान बनाता है। हालांकि, यह उन विशेषताओं के साथ नहीं आता है जो टीमों के बीच सहयोग को बढ़ाते हैं और केवल एक विंडोज़ मशीन पर उपयोग किया जा सकता है जिस पर यह स्थापित है।
4. गूगल स्लाइड
आज की दुनिया में उत्पादों के विकास में महत्वपूर्ण चीजों में से एक है, उन उपकरणों का उपयोग जो टीमों को जहां कहीं भी हैं, वहां से प्रभावी ढंग से सहयोग करने की अनुमति देते हैं और यही एक चीज है जो Google स्लाइड ऑनबोर्ड लाती है। इसका उपयोग सॉफ्टवेयर प्रवाह चार्ट से संगठनात्मक चार्ट और माइंड मैप तक सभी प्रकार के चार्ट को विकसित करने के लिए किया जा सकता है। यह क्लाउड-आधारित है और लगभग सभी लोकप्रिय ब्राउज़रों में काम करता है।
फ़्लोचार्ट और सामान्य एल्गोरिथम विकास के निर्माण के लिए कई अन्य उपकरण मौजूद हैं, हमेशा की तरह, प्रत्येक अपने स्वयं के समर्थक और विपक्ष के साथ।
3. एंबेडेड फर्मवेयर के लिए कोडिंग
इस बिंदु तक जाने वाली हर चीज का उल्लेख यहां किया गया है। एसडीके और आईडीई की दुनिया, इस स्तर पर उपकरणों की पसंद लक्ष्य डिवाइस और डिवाइस में निर्मित सुविधाओं पर निर्भर करती है, इस कारण से, मैं चर्चा से एसडीपी और आईडीएल जैसे लोकप्रिय एसडीके और आईडीई को बाहर कर दूंगा और बस छड़ी ऐसे उपकरण जो प्रकृति में अधिक पूरक हैं।
1. क्यूटी (जीयूआई विकास)
इन दिनों उपयोगकर्ताओं को फीडबैक प्रदान करने के लिए डिस्प्ले (इंटरेक्टिव या नहीं) सबसे लोकप्रिय माध्यम हैं और क्यूटी का एसडीके सबसे अच्छे में से एक है और शायद एम्बेडेड सर्कल के भीतर किसी के लिए कोई अजनबी नहीं है। यह "ड्रैग एंड ड्रॉप" सुविधाएँ प्रदान करता है जिससे जटिल, GUI आधारित अनुप्रयोगों को एम्बेडेड डिवाइसेस, लक्ष्य प्लेटफ़ॉर्म की परवाह किए बिना या समग्र परियोजना विकास के लिए उपयोग की जा रही प्रोग्रामिंग भाषा को विकसित करना आसान हो जाता है। यह मूल रूप से उपयोगकर्ता इंटरफेस बनाने के लिए कोड का उपयोग करने से जुड़े तनाव को समाप्त करता है।
2. (फास्ट प्रोटोटाइप)
एम्बेडेड सॉफ्टवेयर के विकास में सबसे बड़ी बाधाओं में से एक तथ्य यह है कि हार्डवेयर आमतौर पर जाने पर चीजों का परीक्षण करने के लिए उपलब्ध नहीं है जबकि सॉफ्टवेयर विकसित किया जा रहा है । अक्सर जब यह उपलब्ध होता है, तो फर्मवेयर डेवलपर्स को पूरे समय इंतजार करने के लिए बनाया जाता था कि हार्डवेयर को बहुत कम या कुछ भी करने के लिए तैयार होने में समय लगता है। यह लीड-टाइम को बढ़ाता है और हार्डवेयर इंजीनियरों और फर्मवेयर डेवलपर्स के बीच इस तरह के सिंक के लिए जगह नहीं बनाता है जो उत्पाद की गुणवत्ता को बढ़ाते थे। इस समस्या को हल करने में मदद करने के लिए, VaST के लोगों ने एक इलेक्ट्रॉनिक सिस्टम स्तर वर्चुअल प्रोटोटाइप प्लेटफॉर्म बनाया, जिसका उपयोग वर्चुअल हार्डवेयर हार्डवेयर प्रोटोटाइप बनाने के लिए किया जा सकता है जिस पर हार्डवेयर तैयार होने से पहले सिस्टम के प्रदर्शन को निर्धारित करने के लिए एम्बेडेड सॉफ्टवेयर निष्पादित किया जा सकता है।
3. Doxygen (प्रलेखन)
किसी भी कोड को लिखने के सबसे महत्वपूर्ण भागों में से एक प्रलेखन है और उसके लिए सबसे लोकप्रिय उपकरणों में से एक Doxygen है। विरासत के सॉफ्टवेयर को समझने के लिए इसके उपयोग के अलावा, Doxygen एक कोड से टिप्पणियों को स्वचालित रूप से निकालने और प्रलेखन को बनाने की क्षमता रखता है जिसमें यह शामिल है। Doxygen के ढांचे में आलेखीय रूप से फाइलें शामिल हैं और आपके फ़ंक्शन में उपयोग किए गए प्रत्येक फ़ंक्शन, परिवर्तनीय और मैक्रो के लिए संदर्भ बनाते हैं। फ्लोचार्ट और डेटा फ्लो आरेख को भी डॉकवेज़ के साथ डॉक्सविज़ के संयोजन से प्रलेखन में एम्बेड किया जा सकता है।
4. GIT (संस्करण नियंत्रण प्रणाली)
यह मानना मुश्किल है कि इन दिनों किसी ने किसी प्रकार के संस्करण नियंत्रण प्रणाली के बिना किसी भी प्रकार के सॉफ़्टवेयर का विकास किया है, लेकिन अगर आप ऐसा करते हैं, तो यह एक बहुत बुरा विचार है जो गलतियों को जन्म दे सकता है जो आपको समय और धन खर्च करेगा। Git कई कारणों से सभी संस्करण नियंत्रण उपकरणों में से एक है। यह खुला स्रोत, तेज, कुशल और ज्यादातर स्थानीय है। असित गिट, तोड़फोड़ जैसे उपकरण भी ध्यान देने योग्य हैं।
परीक्षण एंबेडेड फर्मवेयर
परीक्षण किसी भी चीज के लिए विकास प्रक्रिया का एक महत्वपूर्ण हिस्सा है। फ़र्म फर्मवेयर त्रुटियों के कारण याद किए जाने पर हजारों डॉलर खो देते हैं इसलिए यह विकास का एक हिस्सा है जिसे बहुत गंभीरता से लिया जाना चाहिए। यह अक्सर किया जाता है, कोडिंग के साथ हाथ में हाथ और कोड परीक्षण के लिए उपकरणों का पहला सेट, शायद आईडीई या एसडीके के भीतर डिबगर्स हैं जो परियोजना के लिए उपयोग किए जा रहे हैं। परीक्षण विभिन्न रूपों में आता है और विभिन्न चरणों में किया जाता है, जैसे, इसमें विभिन्न प्रकार के उपकरण शामिल हैं। स्थैतिक विश्लेषण और क्रम परीक्षण उपकरणों के डिजाइन सत्यापन के दौरान परीक्षण उपकरण फर्मवेयर विकास में कटौती करते हैं। नीचे कुछ उपकरण दिए गए हैं जो मुझे बहुत उपयोगी लगे।
1. क्रिस्टल आरईवी
क्रिस्टल रिव्यू कोड के अध्ययन के लिए एक उपकरण है। इसका उपयोग C / C ++ कोड से फ्लोचार्ट उत्पन्न करने के लिए किया जा सकता है जो इसे आपके स्वयं के कोड की समीक्षा करने और यह देखने के लिए एक शानदार उपकरण बनाता है कि क्या प्रारंभिक डिजाइन लागू किया गया था। क्रिस्टल रेव के साथ, आप डिजाइन और कार्यान्वयन के बीच अंतर को जल्दी से देख पाएंगे। कोड से प्रवाह चार्ट, डेटा और कॉल प्रवाह उत्पन्न करने की इसकी क्षमता भी इसे एक उपकरण बनाती है, जो विरासत कोड का विश्लेषण करने के लिए उपयोगी है।
2. पीसी- लिंट
PC- लिंट आसपास के सबसे पुराने फ़र्मवेयर टेस्टिंग टूल में से एक है। यह बग्स, सुरक्षा कमजोरियों की पहचान करने के लिए सॉफ्टवेयर का विश्लेषण करने में सक्षम है, और यह सुनिश्चित करना कि कोड उद्योग के मानकों के अनुरूप लिखा गया हो। इसी तरह के उपकरणों में पॉलीस्पेस, और एलआरडीए, बैंगन और टेसी शामिल हैं।
3. तारक
नेटवर्क डिवाइस बनाते समय यह काम आता है। यह अनिवार्य रूप से एक पैकेट स्निफर है और आपके डिवाइस को प्रसारित करने वाले डेटा को देखने में मदद कर सकता है। इससे डिवाइस को सुरक्षित बनाने में मदद मिल सकती है।
4. वर्चुअल सीरियल पोर्ट ड्राइवर
वीटीएसडी एलटीमा सॉफ्टवेयर एक ऐसा उपकरण है जिसे मैंने हाल ही में एक मित्र द्वारा पेश किया है। डिवाइस ड्राइवरों और अन्य कॉम पोर्ट-संबंधित विकास पर काम करते समय यह वास्तव में आसान है। वर्चुअल सीरियल कॉम पोर्ट आपको लक्ष्य डिवाइस के बिना कॉम पोर्ट व्यवहार का परीक्षण करने की क्षमता देता है। आप असीमित संख्या में पोर्ट बना सकते हैं जो वास्तविक कॉम पोर्ट की सभी सेटिंग्स का अनुकरण करने में सक्षम है। यह सॉफ्टवेयर सीरियल पोर्ट स्प्लिटिंग, कॉम पोर्ट्स मर्जर जैसी सुविधाओं के साथ आता है, अन्य शांत सुविधाओं के बीच बंडल कॉम पोर्ट कनेक्शन का उपयोग करते हैं।
यह इस लेख के लिए है, पढ़ने के लिए समय निकालने के लिए धन्यवाद। हालांकि यह संभव है कि सभी उपकरणों को वहां से सूचीबद्ध किया जाए, लेकिन मुझे आशा है कि आपको इनमें से कुछ उपकरण उपयोगी होंगे।