हमें एंबेडेड सिस्टम डिज़ाइन में ऑपरेटिंग सिस्टम की आवश्यकता कब होती है?


22

मैंने PIC और x86 प्रोसेसर के लिए बहुत सारे नंगे धातु कोड लिखे हैं। क्या कोई मुझे बता सकता है कि मुझे ऑपरेटिंग सिस्टम की आवश्यकता कब और कैसे होनी चाहिए? इसके विपरीत, किस अनुप्रयोग या स्थिति से एक ऑपरेटिंग सिस्टम के साथ या उसके बिना भी निपटा जा सकता है?


2
क्योंकि आपको जो कुछ भी जानने की ज़रूरत नहीं है वह स्कूल में सिखाया जाता है। अगर आपको लगता है कि आपको आरटीओएस सीखने की ज़रूरत है, तो एक प्लेटफ़ॉर्म चुनें और इसे सीखें।
स्कॉट सीडमैन

3
एम्बेडेड में ओएस के उपयोग के बारे में सवाल वैध है। हालाँकि, EE.SE आपकी मदद नहीं कर सकता है "उन्होंने मुझे स्कूल में क्यों नहीं पढ़ाया?" अंश। मैंने इसे संपादित करने के लिए एक स्वतंत्रता ली।
निक एलेक्सीव


वैसे केवल उन कारणों के बारे में, जिनके बारे में मैंने अपने विश्वविद्यालय में नहीं पढ़ाया था, क्योंकि मैं कभी भी किसी भी ईई छात्र के पास नहीं आया, जिसने विश्वविद्यालय में प्रवेश लिया हो। इस प्रकार मुझे ऐसा लगता है कि यह किसी भी विश्वविद्यालय में नहीं किया गया है।
क्वांटम 231

@ क्वांटम 231 यह मेरे विश्वविद्यालय, एनटीएनयू - नॉर्वे में किया गया है।
सीके

जवाबों:


23

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

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

जैसे-जैसे सॉफ़्टवेयर आवश्यकताओं में वृद्धि होती है, सुपर-लूप अधिक जटिल हो जाता है। जब सॉफ्टवेयर आवश्यकताएं इतनी अधिक होती हैं कि सुपर-लूप बहुत जटिल हो जाता है या सिस्टम की वास्तविक समय की आवश्यकताओं को पूरा नहीं कर सकता है, तो यह समय एक और वास्तुकला पर विचार करने का है।

RTOS आर्किटेक्चर आपको सॉफ़्टवेयर आवश्यकताओं को कार्यों में विभाजित करने की अनुमति देता है। यदि ठीक से किया जाता है, तो यह प्रत्येक कार्य के कार्यान्वयन को सरल करता है। और कार्य प्राथमिकता के साथ एक आरटीओएस वास्तविक समय की आवश्यकताओं को पूरा करना आसान बना सकता है। एक RTOS एक रामबाण नहीं है, हालांकि। RTOS समग्र प्रणाली जटिलता को बढ़ाता है और आपको नए प्रकार के बग (जैसे गतिरोध) के लिए खोलता है। RTOS के विकल्प के रूप में आप विचार कर सकते हैं और इवेंट-आधारित स्टेट मशीन आर्किटेक्चर (जैसे QP )।

यदि आपके उत्पाद में नेटवर्किंग, एक जटिल GUI और एक फ़ाइल-सिस्टम है, तो आप उस बिंदु पर हो सकते हैं जहाँ आपको पूर्ण विशेषताओं वाले ऑपरेटिंग सिस्टम जैसे VxWorks, Windows या Linux पर विचार करना चाहिए। पूर्ण विशेषताओं वाले ऑपरेटिंग सिस्टम में निम्न-स्तरीय विवरण के लिए ड्राइवर शामिल होंगे और आपको अपने एप्लिकेशन पर ध्यान केंद्रित करने की अनुमति देगा।


8

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

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

हालाँकि, केवल ऑफ-द-शेल्फ I / O मॉड्यूल खरीद रहा है, उन्हें एक रैक माउंट पीसी में प्लग कर रहा है, और GUI में कॉन्फ़िगरेशन को व्हिप करने से कुछ के लिए एम्बेडेड सिस्टम डिज़ाइन के रूप में अर्हता प्राप्त करने में विफल हो सकता है । थोड़े कम ऑफ-द-शेल्फ स्थिति के लिए, एक FPGA के साथ एक कस्टम प्रोसेस कंट्रोलर पर विचार करें, जिसके लिए आप कुछ फैंसी विज्ञापन लॉगिंग करना चाहते हैं। आप एक सॉफ्ट-कोर प्रोसेसर सिस्टम (एक मौजूदा बीएसपी के साथ) को एम्बेड कर सकते हैं और एक नेटवर्क स्टैक (अपने लॉगिंग और एनटीपी आदि के लिए) चलाने के लिए और एक तर्क में बाकी सब करने के लिए एक रियलटाइम लिनक्स चला सकते हैं।


7

अंगूठे का मेरा (बहुत अस्पष्ट) नियम है यदि आपको नियंत्रण के एक से अधिक धागे की आवश्यकता है (कम से कम एक उपकरण जिसमें प्रोटोकॉल या एक राज्य मशीन शामिल है और कुछ और करने के लिए शामिल है) तो OSish सॉफ़्टवेयर के लिए कुछ आपके जीवन को आसान बना देगा


RTOS सेट करने पर एक निश्चित मात्रा में काम होता है। जब तक- switchआधारित मशीनों का उपयोग करने का प्रयास अधिक नहीं हो जाता है, तब तक- switchआधारित मशीन बेहतर होने के लिए उपयुक्त नहीं होती हैं। इसके अलावा, दोनों 8x51 और TMS2000 प्लेटफार्मों पर, मैंने एक साधारण स्टैक-आधारित सहकारी कार्य-स्विचर लागू किया है। स्विच करने के लिए कब तय करने के लिए कोई ओएस तर्क नहीं है - किसी भी समय एक "धागा" लगा कि यह एक ब्रेक ले सकता है, यह दूसरे पर स्विच करेगा। कुछ इसके लिए था अभी तक नहीं हुई इंतज़ार कर रहा था, उसे वापस पहले करने के लिए कम समय में एक सामान्य ओएस से स्विच कर सकता है कि कि अन्य धागा देखा निर्णय लेने से खर्च किया गया होता तो है कि क्या स्विच करने के लिए।
सुपरकैट

यह एक सच्चे सॉफ़्टवेयर-मल्टीस्टासिंग "थ्रेड" (जो कि ओएस पर बहुत अधिक इंगित करता है) के बीच अंतर करने के लायक हो सकता है। बनाम हार्डवेयर की स्थिति के लिए एक सरल अवरोधक।
क्रिस स्ट्रैटन

1

एक पुराना सवाल है, लेकिन मैं वैसे भी टिप्पणी करूंगा।

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

आरटीओएस आपको मेमोरी प्रोटेक्शन जैसी चीजें भी देता है और सी कोड में कुछ सामान्य गफ़्स को ट्रैक करना आसान बनाता है, लेकिन सरल माइक्रोकंट्रोलर केवल जटिल मेमोरी प्रोटेक्शन को संभालने में सक्षम नहीं हो सकते हैं। उदाहरण के लिए MSP430 आपको उच्च स्तर में कोड और डेटा को अलग करने की अनुमति देता है, लेकिन कोई ठीक से मेमोरी एक्सेस कंट्रोल नहीं है।


0

एक ऑपरेटिंग सिस्टम वास्तव में हार्डवेयर और एप्लिकेशन सॉफ़्टवेयर (डिवाइस ड्राइवर के माध्यम से) के बीच की खाई को पाटता है। दूसरे शब्दों में, यह प्रोग्रामर के लिए अपेक्षाकृत उच्च-स्तरीय मंच प्रदान करता है जो अंततः कोड जटिलता को कम करता है। और आगे, ऑपरेटिंग सिस्टम आवेदन के निष्पादन के लिए मजबूत और लचीला मंच प्रदान करता है।

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