उपकरणों के नियंत्रण के लिए सॉफ्टवेयर

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

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

ऑपरेटिंग प्रणाली
मानक कंप्यूटरों के विपरीत जो सामान्यतः पर मैक ओएस, माइक्रोसॉफ्ट विंडोज या लिनक्स जैसे ऑपरेटिंग प्रणाली का उपयोग करते हैं, एम्बेडेड सॉफ़्टवेयर किसी ऑपरेटिंग प्रणाली का उपयोग नहीं कर सकते हैं। जब वे एक का उपयोग करते हैं, तो विभिन्न प्रकार के ऑपरेटिंग प्रणाली को चुना जा सकता है, सामान्यतः एक रीयल-टाइम ऑपरेटिंग प्रणाली। एम्बेडेड सॉफ़्टवेयर के लिए कोड सामान्यतः C (प्रोग्रामिंग भाषा) या C++ में लिखा जाता है, लेकिन विभिन्न उच्च-स्तरीय प्रोग्रामिंग भाषाएँ, जैसे कि जावा (प्रोग्रामिंग भाषा), पायथन (प्रोग्रामिंग भाषा) और जावास्क्रिप्ट, अब माइक्रोकंट्रोलर्स को लक्षित करने के लिए भी आम उपयोग में हैं। अंतः स्थापित प्रणालियाँ। सभा की भाषा का भी अक्सर उपयोग किया जाता है, खासकर बूटिंग और बाधा डालना  हैंडलिंग में। Ada (प्रोग्रामिंग लैंग्वेज) का उपयोग कुछ सैन्य और विमानन परियोजनाओं में किया जाता है।

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

एंबेडेड सॉफ़्टवेयर को निर्माण समय पर सभी आवश्यक डिवाइस ड्राइवरों को शामिल करने की आवश्यकता होती है, और डिवाइस ड्राइवर विभिन्न हार्डवेयर उपकरणों के लिए लिखे जाते हैं। ये डिवाइस ड्राइवर, जिन्हें BSP ( बोर्ड समर्थन पैकेज ) कहा जाता है, हार्डवेयर-विशिष्ट ड्राइवर और अन्य रूटीन वाले सॉफ़्टवेयर की परत बनाते हैं जो एक विशेष ऑपरेटिंग प्रणाली (पारंपरिक रूप से एक रीयल-टाइम ऑपरेटिंग प्रणाली, या RTOS) को एक विशेष हार्डवेयर वातावरण में कार्य करने की अनुमति देते हैं। (एक कंप्यूटर या सीपीयू कार्ड), आरटीओएस के साथ ही एकीकृत। सॉफ्टवेयर सीपीयू और चुने गए विशिष्ट चिप्स पर अत्यधिक निर्भर है। अधिकांश एम्बेडेड सॉफ़्टवेयर इंजीनियरों के पास रजिस्टरों और संचार प्रणाली के उपयोग को निर्धारित करने के लिए ढांच के रूप में ्स पढ़ने और घटकों के लिए डेटा शीट पढ़ने का कम से कम ज्ञान होता है। बिट हेरफेर का उपयोग करने के साथ-साथ दशमलव, हेक्साडेसिमल और बाइनरी अंक प्रणाली के बीच रूपांतरण उपयोगी है। वेब एप्लिकेशन का उपयोग अक्सर हार्डवेयर के प्रबंधन के लिए किया जाता है, चुकी प्रदर्शन के लिए XML फाइलें और अन्य आउटपुट कंप्यूटर को पास किए जा सकते हैं। फ़ोल्डर्स के साथ फ़ाइल प्रणाली सामान्यतः उपयोग किए जाते हैं, चुकी SQL डेटाबेस अक्सर अनुपस्थित होते हैं।

सॉफ़्टवेयर विकास के लिए एक क्रॉस कंपाइलर के उपयोग की आवश्यकता होती है, जो कंप्यूटर पर चलता है लेकिन लक्षित डिवाइस के लिए निष्पादन योग्य कोड उत्पन्न करता है। डिबगिंग के लिए एक इन-सर्किट एमुलेटर और डीबगिंग हार्डवेयर जैसे JTAG या JTAG#सीरियल वायर डिबग डिबगर्स के उपयोग की आवश्यकता होती है। सॉफ्टवेयर डेवलपर्स के पास अक्सर संपूर्ण कर्नेल (OS) स्रोत कोड तक पहुंच होती है।

स्टोरेज मेमोरी और रैम का आकार महत्वपूर्ण रूप से भिन्न हो सकता है। कुछ प्रणाली 16 केबी फ्लैश और 4 केबी रैम में चलते हैं, जिसमें सीपीयू 8 मेगाहर्ट्ज पर काम करता है, अन्य प्रणाली समकालीन कंप्यूटरों को टक्कर दे सकते हैं। इन स्पेस आवश्यकताओं के कारण C++ के बजाय C या एम्बेडेड सी ++ में अधिक काम किया जा रहा है। व्याख्या की गई भाषाएँ जैसे बुनियादी  (जबकि उदाहरण के लिए Parallax Propeller#BASIC संकलक संकलित BASIC का उपयोग कर सकते हैं) और जावा प्रोग्रामिंग भाषा (जावा एमई एंबेडेड 8.3 उदाहरण के लिए उपलब्ध है  ARM Cortex-M4, Cortex-M7 माइक्रोकंट्रोलर और पुराने ARM11 जिनका प्रयोग Raspberry Pi और Intel Galileo Gen. 2 में किया जाता है) सामान्यतः उपयोग नहीं किए जाते हैं; व्याख्या किए गए पायथन (प्रोग्रामिंग भाषा) 3 भाषा के कार्यान्वयन के दौरान –  माइक्रोपायथन –  चुकी माइक्रोकंट्रोलर उपयोग के लिए स्पष्ट रूप से उपलब्ध है, उदा। एआरएम कॉर्टेक्स-एम विकास उपकरण-आधारित (जैसे बीबीसी माइक्रो बिट | माइक्रो: बिट) की 32-बिट सूची और 16-बिट तस्वीर माइक्रोकंट्रोलर

संचार प्रोटोकॉल
प्रोसेसर के बीच और एक प्रोसेसर और अन्य घटकों के बीच संचार आवश्यक है। स्मृति पता  के अलावा, हार्डवेयर स्तर के सामान्य प्रोटोकॉल में I²C, सीरियल पेरिफेरल इंटरफेस बस,  आनुक्रमिक द्वार,  1-तार , इथरनेट और यूनिवर्सल सीरियल बस शामिल हैं।

एम्बेडेड प्रणाली में उपयोग के लिए डिज़ाइन किए गए संचार प्रोटोकॉल NicheStack TCP/IPv4 और CMX प्रणाली सहित कंपनियों से बंद स्रोत के रूप में उपलब्ध हैं। ओपन-सोर्स मॉडल | ओपन-सोर्स प्रोटोकॉल यूआईपी (माइक्रो आईपी), एलडब्ल्यूआईपी और अन्य से उत्पन्न होते हैं।

यह भी देखें

 * अंतः स्थापित प्रणाली

संदर्भ

 * Edward A. Lee, "Embedded Software", Advances in Computers (Marvin Victor Zelkowitz, editor) 56, Academic Press, London, 2002.