अन्तःस्थापित तंत्र
अन्तःस्थापित तंत्र या इम्बेडेड सिस्टम एक कम्प्यूटर सिस्टम है, जिसे अक्सर रीयल-टाइम कम्प्यूटिंग की बाध्यताओं के साथ एक या कुछ समर्पित कार्यों को करने के लिए बनाया जाता है। यह पूरे उपकरण के एक भाग में "एम्बेडेड (अंत:स्थापित)" होता है, जिसमें अक्सर हार्डवेयर तथा यांत्रिक भाग शामिल होते हैं। इसके विपरीत, सामान्य उद्देश्य वाले किसी कम्प्यूटर, जैसे पर्सनल कम्प्यूटर, की रचना लचीला होने और अंतिम-प्रयोक्ता की आवश्यकताओं की एक वृहद श्रेणी की पूर्ति करने के लिए की जाती है। एम्बेडेड सिस्टम वर्तमान में प्रयोग किये जाने वाले अनेक उपकरणों को नियंत्रित करते हैं।
एम्बेडेड सिस्टम को मुख्य प्रोसेसिंग के एक या अधिक अंतर्भागों, विशिष्टत: एक माइक्रोकंट्रोलर या एक डिजिटल सिग्नल प्रोसेसर (DSP), द्वारा नियंत्रित किया जाता है। हालांकि इसकी मुख्य विशेषता किसी एक विशिष्ट कार्य को संभालने के लिए समर्पित होना है, जिसमें अत्यधिक शक्तिशाली प्रोसेसर्स की आवश्यकता हो सकती है। उदाहरण के लिए, हवाई यातायात नियंत्रण प्रणालियों को एम्बेडेड के रूप में देखना उपयोगी हो सकता है, हालांकि उनमें मेनफ्रेम कम्प्यूटर तथा हवाई-अड्डों और राडार स्थानों के बीच क्षेत्रीय एवं राष्ट्रीय समर्पित नेटवर्क शामिल होते हैं। (संभवत: प्रत्येक राडार में अपने स्वयं के एक या एक से अधिक एम्बेडेड सिस्टम्स शामिल होते हैं।)
चूंकि एम्बेडेड सिस्टम विशिष्ट कार्यों के प्रति समर्पित होता है, अतः डिजाइन इंजीनियर्स, उत्पाद के आकार व लागत को घटाकर तथा विश्वसनीयता एवं प्रदर्शन को बढ़ाकर इसे अधिक उपयोगी बना सकते हैं। पैमाने की अर्थव्यवस्थाओं (Economies of scale) से लाभ उठाते हुए कुछ एम्बेडेड सिस्टम्स का उत्पादन बड़े-पैमाने पर किया जाता है।
भौतिक रूप से, एम्बेडेड सिस्टम, वहनीय उपकरणों, जैसे डिजिटल घड़ियों तथा MP3 प्लेयर्स, से लेकर बड़ी स्थिर संस्थापनाओं, जैसे यातायात बत्तियों, कारखानों के नियंत्रकों अथवा परमाणु ऊर्जा केन्द्रों, तक की श्रेणी में होते हैं। जटिलता का स्तर एकल माइक्रोकंट्रोलर चिप के लिए निम्न जटिलता से लेकर किसी बड़े ढांचे (Chassis) या घेरे में लगी अनेक इकाइयों, उपकरणों तथा नेटवर्क्स के लिए उच्च जटिलता तक होता है।
सामान्यत: "एम्बेडेड सिस्टम" शब्दावली की कोई सटीक परिभाषा नहीं दी जा सकती क्योंकि अधिकांश सिस्टम्स में विस्तारण अथवा प्रोग्रामिंग की क्षमता के कुछ तत्त्व भी शामिल होते हैं। उदहारण के लिए, हैण्ड-हेल्ड कम्प्यूटर्स अपने कुछ तत्वों, जैसे ऑपरेटिंग सिस्टम्स और उन्हें शक्ति देने वाले माइक्रोप्रोसेसर्स, को एम्बेडेड सिस्टम्स के साथ साझा करते हैं, परन्तु वे अन्य अनुप्रयोगों को लोड करने और उपकरणों को जोड़ने की अनुमति भी देते हैं। इसके अलावा, यहां तक कि जो सिस्टम्स प्रोग्रामिंग की क्षमता को अपनी प्राथमिक विशेषता के रूप में प्रदर्शित नहीं करते, उन्हें भी सॉफ्टवेयर अद्यतनों का समर्थन करने की आवश्यकता होती है। "सामान्य उद्देश्य" से "एम्बेडेड" की ओर एक अबाध क्रम में बढ़ने पर, बड़े अनुप्रयोगों में अधिकांश स्थानों पर कुछ उप-घटक होंगे, भले ही सम्पूर्ण सिस्टम को "एक या कुछ समर्पित कार्यों को पूर्ण करने के लिए बनाया गया हो" और इस प्रकार उसे "एम्बेडेड" कहना उपयुक्त हो।
एम्बेडेड सिस्टम्स का विस्तार आधुनिक जीवन के सभी पहलुओं तक है और उनके प्रयोग के अनेक उदाहरण उपलब्ध हैं।
दूरसंचार तंत्र अपने नेटवर्क के टेलीफोन स्विच से लेकर अंतिम-प्रयोक्ता के मोबाइल फोन तक विभिन्न एम्बेडेड सिस्टम्स का प्रयोग करते हैं। कम्प्यूटर नेटवर्किंग में डाटा का मार्ग-निर्धारण करने के लिए समर्पित रूटर्स तथा नेटवर्क ब्रिज का प्रयोग किया जाता है।
उपभोक्ता इलेक्ट्रॉनिक्स में पर्सनल डिजिटल असिस्टंट्स (PDAs), mp3 प्लेयर्स, मोबाइल फोन, वीडियोगेम कंसोल, डिजिटल कैमरा, DVD प्लेयर्स, GPS रिसीवर्स तथा प्रिंटर्स शामिल हैं। अनेक घरेलू उपकरणों जैसे माइक्रोवेव ओवन, वाशिंग मशीन तथा डिश-वाशर में लचीलापन, दक्षता और विशेषताएं प्रदान करने के लिए एम्बेडेड सिस्टम्स को शामिल किया जाता है। उन्नत HVAC तंत्र दिन के समय तथा मौसम के साथ बदल सकने वाले तापमान को अधिक सटीक रूप से और दक्षतापूर्वक नियंत्रित करने के लिए नेटवर्क-युक्त थर्मोस्टैट का प्रयोग करते हैं। घरों के स्वचालन में तारयुक्त- और बेतार-नेटवर्किंग का प्रयोग किया जाता है, जिसका प्रयोग बत्तियों, वातावरण, सुरक्षा, ऑडियो/वीडियो, निगरानी इत्यादि को नियंत्रित करने के लिए किया जा सकता है, जिनमें से सभी में संवेदनशीलता एवं नियंत्रण के लिए एम्बेडेड सिस्टम्स का प्रयोग हो सकता है।
हवाई-यातायात से लेकर वाहनों के यातायात तक परिवहन तंत्रों में एम्बेडेड सिस्टम का प्रयोग बढ़ता जा रहा है। नए हवाई-जहाज़ों में जड़त्वीय मार्गदर्शन तंत्रों (Inertial guidance systems) तथा GPS रिसीवर्स जैसी उन्नत वैमानिकी का प्रयोग किया जाता है, जिनमें महत्वपूर्ण सुरक्षा आवश्यकताएं भी होती हैं। विभिन्न विद्युत् यंत्र- ब्रशविहीन DC मोटर्स, प्रवर्तन (Induction) मोटर्स तथा DC मोटर्स- इलेक्ट्रिक/इलेक्ट्रॉनिक मोटर नियंत्रकों का प्रयोग कर रहे हैं। वाहनों (ऑटोमोबाइल्स), विद्युत् वाहनों तथा संकरित वाहनों में दक्षता को अधिकतम सीमा तक बढ़ाने और प्रदूषण को कम करने के लिए एम्बेडेड सिस्टम्स का प्रयोग बढ़ता जा रहा है। अन्य स्वचालित सुरक्षा तंत्रों में एंटी-लॉक ब्रेकिंग सिस्टम (ABS), इलेक्ट्रॉनिक स्थिरता नियंत्रण (ESC/ESP), कर्षण नियंत्रण (TCS), तथा स्वचालित फोर-व्हील ड्राइव शामिल हैं।
महत्वपूर्ण संकेतों के निरीक्षण, ध्वनि को बढ़ाने के लिए इलेक्ट्रॉनिक स्टेथोस्कोप तथा गैर-आक्रमणशील आतंरिक निरीक्षण के लिए विभिन्न चिकीत्सकीय चित्रणों (PET, SPECT, CT, MRI) के लिए एम्बेडेड सिस्टम्स के बढ़ते प्रयोग के साथ चिकित्सीय उपकरण लगातार उन्नत होते जा रहे हैं।
छोटे कम्प्यूटर्स पर आधारित सामान्यत: वर्णित एम्बेडेड सिस्टम्स के अतिरिक्त, बेतार संवेदक नेटवर्किंग में उन्नति के साथ ही छोटे बेतार उपकरणों की एक नई श्रेणी, जिसे मोट्स (motes) कहा जाता है, बहुत तेज़ी से लोकप्रिय हो रही है। बेतार संवेदक नेटवर्किंग, WSN, लघुरूपण का प्रयोग करती है, जो पूर्ण बेतार उप-तंत्रों को परिष्कृत संवेदकों के साथ जोड़ने के लिए उन्नत IC रचना द्वारा संभव हुआ है और लोगों तथा कंपनियों को भौतिक-विश्व में असंख्य वस्तुओं का मापन कर पाने और IT निरीक्षण तथा नियंत्रण तंत्रों के माध्यम से इस जानकारी पर कार्य कर पाने में सक्षम बनाता है। ये मोट्स पूरी तरह स्व-सम्पूर्ण होते हैं और ये कई वर्षों तक एक बैटरी स्रोत की सहायता से चलेंगे, जिसके बाद बैटरियों को बदलने या चार्ज करने की आवश्यकता होगी।
1930-40 के दशकों में कम्प्यूटर के शुरुआती वर्षों में, कम्प्यूटर्स कभी-कभी किसी एक कार्य को करने के प्रति समर्पित होते थे, परन्तु आज के एम्बेडेड कम्प्यूटर्स द्वारा किये जाने वाले अधिकांश प्रकार के कार्यों को कर पाने के लिए वे अत्यधिक बड़े और महंगे थे। हालांकि, प्रोग्रामेबल नियंत्रकों की अवधारणा समय के साथ पारंपरिक विद्युत्-यांत्रिकीय अनुक्रमकों से शुरू होकर, ठोस अवस्था वाले उपकरणों से होती हुई, कम्प्यूटर प्रौद्योगिकी तक विकसित हुई।
चार्ल्स स्टार्क ड्रेपर (Charles Stark Draper) द्वारा MIT इंस्ट्रूमेंटेशन लैबोरेटरी में विकसित किया गया अपोलो गाइडेंस कम्प्यूटर शुरूआती उल्लेखनीय आधुनिक एम्बेडेड सिस्टम्स में से एक था। इस परियोजना के प्रारम्भ में, अपोलो गाइडेंस कम्प्यूटर को अपोलो परियोजना की सबसे जोखिमपूर्ण वस्तु माना गया था क्योंकि आकार तथा वजन को कम करने के लिए इसमें मोनोलिथिक इंटीग्रेटेड सर्किट का प्रयोग किया गया था, जो उस समय नई-नई विकसित हुई थी। बड़े पैमाने पर उत्पादित शुरूआती एम्बेडेड सिस्टम, मिनटमैन (Minuteman) मिसाइल के लिए 1961 में जारी किया गया ऑटोनेटिक्स D-17 (Autonetics D-17) गाइडेंस कम्प्यूटर था। यह ट्रांज़िस्टर तर्क से बनाया गया था और इसमें मेन मेमोरी के लिए एक हार्ड-डिस्क थी। 1966 में जब मिनटमैन II का उत्पादन शुरू हुआ, तो D-17 के स्थान पर एक नए कम्प्यूटर का प्रयोग किया जाने लगा, जिसमें पहली बार बड़े पैमाने पर इंटीग्रेटेड सर्किट का प्रयोग किया गया था। इस अकेले कार्यक्रम ने ही क्वैड नैण्ड गेट ICs की कीमत $1000/प्रति IC से घटाकर $3/प्रति IC कर दी, जिससे वाणिज्यिक उत्पादों में उनका प्रयोग कर पाना संभव हो गया।
1960 के दशक के प्रारम्भिक अनुप्रयोगों के बाद से, एम्बेडेड सिस्टम की कीमत में कमी आई है और प्रोसेसिंग शक्ति और कार्यात्मकता में एक नाटकीय वृद्धि हुई है। उदाहरण के लिए, पहले माइक्रोप्रोसेसर, इंटेल 4004 (Intel 4004), की रचना कैल्क्यूलेटर तथा अन्य छोटे तंत्रों के लिए की गई थी, लेकिन फिर भी इसमें अनेक बाह्य मेमोरी और समर्थन चिप्स की आवश्यकता थी। सन् 1978 में, नैशनल इंजीनियरिंग मैनुफैक्चरर्स एसोसियेशन ने प्रोग्रामेबल माइक्रोकंट्रोलर्स के लिए एक "मानक" जारी किया, जिसमें एकल बोर्ड वाले कम्प्यूटर्स, अंकीय तथा घटना-आधारित कम्प्यूटर्स सहित लगभग किसी भी कम्प्यूटर पर आधारित कंट्रोलर्स शामिल थे।
माइक्रोप्रोसेसर्स और माइक्रोकंट्रोलर्स की लागत कम हो जाने के कारण घुंडी-आधारित (Knob-based) महंगे एनालॉग घटकों, जैसे पोटेंशियोमीटर्स और वेरिएबल कैपेसिटर्स के स्थान पर माइक्रोप्रोसेसर द्वारा पढ़ी जाने वाली अप/डाउन बटनों या घुंडियों का कुछ उपभोक्ता उत्पादों में भी प्रयोग कर पाना साध्य हो गया। 1980 के दशक के मध्य तक, पूर्ववर्ती अधिकांश सामान्य बाहरी सिस्टम घटकों को प्रोसेसर की चिप में ही एकीकृत कर दिया गया था और माइक्रोकंट्रोलर्स के इस आधुनिक रूप ने और अधिक व्यापक प्रयोग की अनुमति दी, जो दशक के अंत तक लगभग सभी इलेक्ट्रॉनिक्स उपकरणों के लिए अपवाद न रह कर मानक बन गए थे।
जिन अनुप्रयोगों के लिए एम्बेडेड सिस्टम्स का प्रयोग किया जाता है, माइक्रोकंट्रोलर्स के एकीकरण ने आगे उन क्षेत्रों में और वृद्धि की, जिनमें पारंपरिक रूप से एक कम्प्यूटर का प्रयोग करने का विचार न किया गया होता। एक सामान्य-उद्देश्य और अपेक्षाकृत कम लागत वाले माइक्रोकंट्रोलर को अक्सर अनेक पृथक घटकों द्वारा किये जाने वाले कार्य को करने के लिए प्रोग्राम किया जा सकता है। हालांकि इस सन्दर्भ में एम्बेडेड सिस्टम एक पारंपरिक समाधान की तुलना में अधिक जटिल होता है, जिसमें से अधिकांश जटिलता स्वत: माइक्रोकंट्रोलर में ही समाहित होती है। बहुत कम अतिरिक्त घटकों की आवश्यकता होगी और अधिकांश डिजाइन प्रयास सॉफ्टवेयर में शामिल होते हैं। सॉफ्टवेयर के अमूर्त स्वरूप के कारण इसका प्रोटोटाइप बनाना और नए दोहरावों का परिक्षण करना, एम्बेडेड प्रोसेसर का प्रयोग न करने वाली नई सर्किट की रचना और निर्माण करने की तुलना में बहुत अधिक सरल हो जाता है।एम्बेडेड सिस्टम्स यूज़र इंटरफ़ेस विहीन-केवल एक कार्य के प्रति समर्पित- से लेकर आधुनिक कम्प्यूटर डेस्कटॉप ऑपरेटिंग सिस्टम्स के समान दिखाई देने वाले जटिल ग्राफिकल यूज़र इंटरफ़ेस तक की श्रेणी में होते हैं। सरल एम्बेडेड सिस्टम उपकरण एक सरल मेनू सिस्टम के साथ बटनों, LEDs, ग्राफिक या कैरेक्टर LCDs (उदाहरणार्थ लोकप्रिय HD44780 LCD) का प्रयोग करते हैं।
कुछ अधिक परिष्कृत उपकरण स्पर्श संवेदनशीलता (Touch Sensing) से युक्त ग्राफिकल स्क्रीन का या स्क्रीन पर बनी बटनों (Screen-Edge Buttons) का प्रयोग करते हैं, जो लचीलापन प्रदान करने के साथ ही प्रयोग किये जा रहे स्थान में भी कमी लाती है: बटनों का अर्थ स्क्रीन के अनुसार बदल सकता है और चयन में वांछित विकल्प की ओर सूचित करने का प्राकृतिक व्यवहार शामिल होता है। हैण्डहेल्ड सिस्टम्स में अक्सर सूचक उपकरण के लिए एक "जॉयस्टिक बटन" के साथ स्क्रीन होती है।
कुछ तंत्र क्रमिक (उदा. RS-232, USB, I²C इत्यादि) या नेटवर्क (उदा. ईथरनेट) संयोजन की सहायता से दूरस्थ रूप से यूज़र इंटरफ़ेस प्रदान करते हैं। स्थापित क्लाएंट सॉफ्टवेयर तथा तारों की आवश्यकता होने के बावजूद यह पद्धति सामान्यत: अनेक लाभ देती है: एम्बेडेड सिस्टम्स की क्षमताओं को बढ़ाती है, प्रदर्शन की लागत बचाती है, BSP को सरल बनाती है, PC पर उपयोगी यूज़र इंटरफ़ेस के निर्माण की अनुमति देती है। एम्बेडेड उपकरण पर चल रहे एम्बेडेड वेब सर्वर तथा PC पर वेब ब्राउज़र में चल रहे यूज़र इंटरफेस का संयोजन (IP कैमरों और नेटवर्क रूटर्स के लिए विशिष्ट) इस दिशा में एक सुस्थापित मॉडल है।
एम्बेडेड प्रोसेसर्स को मोटे तौर पर दो श्रेणियों में विभाजित किया जा सकता है: सामान्य माइक्रोप्रोसेसर्स (μP) तथा माइक्रोकंट्रोलर्स (μC), जिनमें लागत व आकार को कम करने के लिए एक चिप पर बहुत अधिक उपकरण होते हैं। पर्सनल कम्प्यूटर तथा सर्वर बाज़ार के विपरीत, बुनियादी CPU संरचना का एक पर्याप्त बड़ी मात्रा में प्रयोग किया जाता है; वॉन न्यूमन और साथ ही हारवर्ड संरचना की विभिन्न श्रेणियां, RISC और साथ ही गैर-RISC तथा VLIW; शब्दों की लम्बाई 4-बिट से 64-बिट और उससे अधिक (मुख्यत: DSP प्रोसेसर्स में) तक भिन्न हो सकती है, हालांकि आदर्श 8/16 बिट बना हुआ है। अधिकांश संरचनाएं अनेक भिन्न संस्करणों और आकारों के साथ उपलब्ध हैं और जिनमें से अनेक का उत्पादन विभिन्न कंपनियों द्वारा भी किया जाता है।
सामान्य संरचनाओं की एक लंबी, लेकिन अभी भी अपूर्ण सूची है: 65816, 65C02, 68HC08, 68HC11, 68k, 8051, ARM, AVR, AVR32, Blackfin, C167, Coldfire, COP8, Cortus APS3, eZ8, eZ80, FR-V, H8, HT48, M16C, M32C, MIPS, MSP430, PIC, PowerPC, R8C, SHARC, ST6, SuperH, TLCS-47, TLCS-870, TLCS-900, Tricore, V850, x86, XE8000, Z80, AsAP आदि।
PC/104 तथा PC/104+ छोटे, कम मात्रा में एम्बेडेड तथा मज़बूत बनाए गए (Ruggedized), अधिकांशत: x86-आधारित, सिस्टम्स के लिए अभीष्ट "पूर्व-निर्मित (Ready made)" कम्प्यूटर बोर्ड्स के लिए मानकों के उदाहरण हैं। अक्सर ये DOS, लिनक्स [Linux] [Linux], NetBSD या किसी एम्बेडेड रीयल-टाइम ऑपरेटिंग सिस्टम, जैसे MicroC/OS-II, QNX या VxWorks, का प्रयोग करते हैं। कभी-कभी ये बोर्ड्स गैर-x86 प्रोसेसर्स का प्रयोग भी करते हैं।
कुछ विशिष्ट अनुप्रयोगों, जिनमें छोटा आकार या ऊर्जा-दक्षता प्राथमिक चिंताएं न हों, में प्रयुक्त घटक सामान्य-उद्देश्य वाले x86 पर्सनल कम्प्यूटर्स में प्रयुक्त घटकों के साथ सुसंगत हो सकते हैं। कुछ बोर्ड्स, जैसे VIA EPIA श्रेणी, PC-सुसंगत लेकिन अत्यधिक एकीकृत, भौतिक रूप से छोटे होने के कारण इस कमी को पूरा करने में सहायता करते हैं या इनमें कुछ ऐसे लक्षण होते हैं, जो एम्बेडेड इंजीनियर्स को इनकी ओर आकर्षित करते हैं। इस पद्धति का लाभ यह है कि सामान्य सॉफ्टवेयर विकास के लिए प्रयुक्त सॉफ्टवेयर विकास उपकरणों के साथ कम-लागत सामग्री वाले घटकों का प्रयोग किया जा सकता है। इस प्रकार बनाए गए सिस्टम्स को भी एम्बेडेड माना जाता है क्योंकि वे बड़े उपकरणों में एकीकृत किये जाते हैं और किसी एकल भूमिका की पूर्ति करते हैं। ATMs तथा आर्केड मशीनें, जिनमें अनुप्रयोग के लिए विशिष्ट कोड होता है, इस पद्धति का प्रयोग करने वाले उपकरणों के उदाहरण हो सकते हैं।
हालांकि, अधिकांश पूर्व-निर्मित एम्बेडेड सिस्टम्स बोर्ड्स PC-केन्द्रित नहीं होते और ISA या PCI बसों का प्रयोग नहीं करते. जब एक सिस्टम-ऑन-अ-चिप (System-on-a-chip) प्रोसेसर शामिल होता है, तो पृथक घटकों को जोड़ने वाली एक मानक बस के होने से कुछ लाभ हो सकता है और हार्डवेयर और सॉफ्टवेयर उपकरणों, दोनों के लिए वातावरण बहुत भिन्न हो सकता है।
एक सामान्य डिजाइन शैली एक छोटे, शायद एक व्यापारिक कार्ड के आकार के, सिस्टम मॉड्यूल, उच्च घनत्व वाली BGA चिप्स, जैसे ARM-आधारित एक सिस्टम-ऑन-अ-चिप प्रोसेसर तथा बाह्य उपकरण, भंडारण के लिए बाहरी फ्लैश मेमोरी तथा रनटाइम मेमोरी के लिए DRAM का प्रयोग करती है। मॉड्यूल विक्रेता सामान्यत: बूट सॉफ्टवेयर प्रदान करेगा और इस बात को सुनिश्चित करेगा कि एक ऑपरेटिंग सिस्टम का चुनाव किया गया है, जिनमें सामान्यत: लिनक्स [Linux] और कुछ रीयल-टाइम विकल्प शामिल होते हैं। इन मॉड्यूल्स का उत्पादन, उन संगठनों द्वारा बड़े पैमाने पर किया जा सकता है जो इनके विशेषीकृत परीक्षण मुद्दों से परिचित हों और अनुप्रयोग-विशिष्ट बाहरी उपकरणों के साथ बहुत छोटे पैमाने पर बने पारंपरिक मेनबोर्ड्स के साथ जोड़ा जा सकते है। गमस्टिक्स (Gumstix) उत्पाद पंक्तियां इस मॉडल का एक लिनक्स [Linux]-केन्द्रित उदाहरण हैं।
सिस्टम-ऑन-अ-चिप (SoC), अत्यधिक-बड़ी-मात्रा में एम्बेडेड सिस्टम्स के लिए एक सामान्य विन्यास है, जिसमें अनेक प्रोसेसर्स, मल्टीप्लायर्स, कैशे तथा इंटरफ़ेस युक्त एक पूरा सिस्टम किसी एकल चिप पर होता है। SoCs को एक अनुप्रयोग-विशिष्ट एकीकृत सर्किट (ASIC) के रूप में या एक फील्ड-प्रोग्रामेबल गेट ऐरे (FPGA) का प्रयोग करके लागू किया जा सकता है।
एम्बेडेड सिस्टम्स, परिधीय उपकरणों (Peripherals) के माध्यम से बाहरी विश्व से संपर्क करते हैं, जैसे:
अन्य सॉफ्टवेयर्स की ही तरह एम्बेडेड सिस्टम डिज़ाइनर्स भी एम्बेडेड सिस्टम सॉफ्टवेयर विकसित करने के लिए कंपाइलर्स, असेम्बलर्स और डीबगर्स का प्रयोग करते हैं। हालांकि, वे कुछ अधिक विशिष्ट उपकरणों का प्रयोग भी कर सकते हैं।सॉफ्टवेयर उपकरण विभिन्न स्त्रोतों से आ सकते हैं:
जैसे-जैसे एम्बेडेड सिस्टम्स की जटिलता बढ़ रही है, उच्च-स्तरीय उपकरण और ऑपरेटिंग सिस्टम्स उस मशीनरी में स्थानांतरित हो रहे हैं, जहां उनका होना अर्थ-पूर्ण होता है। उदाहरण के लिए, सेलफोन, पर्सनल डिजिटल असिस्टन्ट्स तथा अन्य उपभोक्ता कम्प्यूटर्स के लिए अक्सर लक्षणीय सॉफ्टवेयर की आवश्यकता होती है, जो इलेक्ट्रानिक्स के उत्पादक के अतिरिक्त किसी अन्य व्यक्ति द्वारा खरीदा या प्रदान किया जाता है। ऐसे तंत्रों में, एक मुक्त प्रोग्रामिंग वातावरण, जैसे: लिनक्स [Linux], NetBSD, OSGi अथवा एम्बेडेड जावा, की आवश्यकता होती है, ताकि थर्ड-पार्टी सॉफ्टवेयर प्रदाता इन्हें एक बड़े बाज़ार को बेच सके।
उपलब्ध सुविधाओं के आधार पर एम्बेडेड डीबगिंग विभिन्न स्तरों पर की जा सकती है। सरलतम से सर्वाधिक परिष्कृत तक, मोटे तौर पर उन्हें निम्नलिखित क्षेत्रों में वर्गीकृत किया जा सकता है:
जब तक बाहरी डीबगिंग को प्रतिबंधित न किया जाये, तब तक प्रोग्रामर विशिष्ट रूप से सॉफ्टवेयर को उपकरणों द्वारा लोड कर सकता है और चला सकता है, प्रोसेसर में चल रहे कोड को देख सकता है और कार्य को शुरू या बंद कर सकता है। कोड को असेम्बली कोड या स्रोत-कोड के रूप में देखा जा सकता है।
चूंकि एक एम्बेडेड सिस्टम अक्सर विभिन्न प्रकार के तत्वों से मिलकर बना होता है, अत: डीबगिंग रणनीति भी अलग-अलग हो सकती है। उदहारण के लिए, किसी सॉफ्टवेयर- (और माइक्रोप्रोसेसर-) केन्द्रित एम्बेडेड सिस्टम की डीबगिंग किसी ऐसे एम्बेडेड सिस्टम की डीबगिंग से भिन्न होती है, जहां अधिकांश प्रोसेसिंग परिधीय उपकरणों (DSP, FPGA, को-प्रोसेसर) द्वारा की जाती है। एक से अधिक एकल प्रोसेसर कोर का प्रयोग करने वाले एम्बेडेड सिस्टम्स की संख्या लगातार बढ़ती जा रही है। सॉफ्टवेयर क्रियान्वयन का उचित सिन्क्रोनाइज़ेशन करना मल्टी-कोर विकास के साथ एक सामान्य समस्या है। ऎसी स्थिति में, एम्बेडेड सिस्टम डिजाइन को प्रोसेसर कोर के बीच बसों पर डाटा के यातायात की जांच करने की आवश्यकता हो सकती है, जिसके लिए सिग्नल/बस स्तर पर, उदा. एक लॉजिक एनालाइज़र के साथ, बहुत निम्न-स्तर की डीबगिंग की आवश्यकता होती है।
एम्बेडेड सिस्टम्स, अक्सर ऎसी मशीनों में होते हैं, जिनसे कई वर्षों तक लगातार त्रुटियों के बिना कार्य करते रहने और त्रुटि उत्पन्न होने पर कुछ स्थितियों में खुद ही उससे उबरने की उम्मीद की जाती है। इसलिए पर्सनल कम्प्यूटर की तुलना में अक्सर सॉफ्टवेयर अधिक सतर्कतापूर्वक विकसित किया और जांचा जाता है और डिस्क ड्राइव्स, स्विच और बटनों जैसे गतिमान यांत्रिक भागों, जो विश्वसनीय नहीं होते, के प्रयोग से बचा जाता है।
विशिष्ट विश्वसनीयता मुद्दों में शामिल हो सकते हैं:
त्रुटियों से उबरने के लिए विभिन्न प्रकार की तकनीकों का प्रयोग, कभी-कभी संयोजित रूप से, किया जाता है- मेमोरी लीक जैसी सॉफ्टवेयर त्रुटियों और साथ ही हार्डवेयर की सामान्य त्रुटियों, दोनों के लिए:उच्च मात्रा वाले सिस्टम्स, जैसे पोर्टेबल म्युज़िक प्लेयर्स या मोबाइल फोन के लिए, लागत को कम करना सामान्यत: डिजाइन के दौरान प्राथमिक विचार होता है। इंजीनियर्स विशिष्टत: ऐसे हार्डवेयर का चयन करते हैं, जो आवश्यक कार्यों को लागू करने के लिए केवल "पर्याप्त" हो।
प्रोग्राम्स को सीमित करके या ऑपरेटिंग सिस्टम को किसी रीयल-टाइम ऑपरेटिंग सिस्टम द्वारा प्रतिस्थापित करके सामान्य उद्देश्य वाले कम्प्यूटर्स को निम्न मात्रा वाले या प्रोटोटाइप एम्बेडेड सिस्टम्स के लिए अनुकूलित किया जा सकता है।
विभिन्न प्रकार की सॉफ्टवेयर संरचनाओं का प्रयोग प्रचलित है।
इस डिजाइन में, सॉफ्टवेयर में केवल एक लूप होता है। यह लूप सब-रूटीन्स को कॉल करता है, जिनमें से प्रत्येक द्वारा हार्डवेयर या सॉफ्टवेयर के एक भाग का प्रबंधन किया जाता है।
कुछ एम्बेडेड सिस्टम्स मुख्यत: इंटरप्ट द्वारा नियंत्रित किये जाते हैं। इसका अर्थ यह है कि सिस्टम द्वारा किये जाने वाले कार्य विभिन्न प्रकार की घटनाओं (Events) द्वारा शुरू किये जाते हैं। उदाहरणार्थ, एक पूर्व-परिभाषित अंतराल पर किसी टाइमर द्वारा या एक बाइट प्राप्त करने वाले किसी सीरियल पोर्ट नियंत्रक द्वारा एक इंटरप्ट उत्पन्न किया जा सकता है।
यदि इवेन्ट हैण्डलर्स को निम्न-विलंबता की आवश्यकता हो तथा इवेन्ट हैण्डलर्स छोटे और सरल हों, तो इस प्रकार के सिस्टम्स का प्रयोग किया जाता है।
सामान्यत: इस प्रकार के सिस्टम्स एक मुख्य लूप में कोई सरल कार्य भी क्रियान्वित करते हैं, लेकिन यह कार्य अनापेक्षित विलंबों के प्रति बहुत अधिक संवेदनशील नहीं होता।
कभी-कभी इंटरप्ट हैंडलर लम्बे कार्यों को एक पंक्ति-संरचना (Queue Structure) में जोड़ देगा। बाद में इंटरप्ट हैंडलर का कार्य समाप्त हो जाने पर ये कार्य मुख्य लूप द्वारा क्रियान्वित किये जाते हैं। यह विधि सिस्टम को असतत प्रक्रियाओं वाले एक मल्टी-टास्किंग कर्नल के निकट ले जाती है।
एक नॉन-प्रिएम्पटिव मल्टी टास्किंग सिस्टम भी एक सरल नियंत्रण लूप योजना के समान ही होता है, अंतर केवल इतना है कि लूप एक API में छिपा होता है। प्रोग्रामर कार्यों की एक श्रृंखला को परिभाषित करता है और प्रत्येक कार्य को अपना स्वयं का एक वातावरण प्राप्त होता है, जिसमें इसे "क्रियान्वित" किया जाता है। जब कोई कार्य निष्क्रिय (Idle) होता है, तो वह एक निष्क्रिय रूटीन को कॉल करता है, जिसे सामान्यत: "pause", "wait", "yield", "nop" ("नो ऑपरेशन" का संक्षिप्त रूप) आदि कहा जाता है।
इसके लाभ और हानियां नियंत्रण लूप के समान ही हैं, अंतर केवल इतना है कि नया सॉफ्टवेयर जोड़ना सरल होता है, केवल एक नया कार्य लिखा जाता है या इसे क्यू-इन्टरप्रेटर में जोड़ दिया जाता है।
इस प्रकार के सिस्टम में कोड का एक निम्न-स्तरीय भाग एक टाइमर (इंटरप्ट से संयोजित) के आधार पर कार्यों या थ्रेड्स के बीच आदान-प्रदान (Switch) करता रहता है। इस स्तर पर सामान्यत: यह माना जाता है कि सिस्टम में एक "ऑपरेटिंग कर्नल" उपस्थित है। कितनी कार्यात्मकता की आवश्यकता है, इस पर निर्भर करते हुए, यह अवधारणात्मक रूप से समानांतर स्थिति में क्रियान्वित हो रहे अनेक कार्यों के प्रबंधन के लिए अधिक या कम जटिलताएं प्रस्तुत करता है।
चूंकि कोई भी कोड संभावित रूप से किसी अन्य कार्य के डाटा को हानि पहुंचा सकता है (MMU का प्रयोग करने वाले बड़े सिस्टम्स को छोड़कर), अत: प्रोग्राम्स की रचना एवं परीक्षण सतर्कतापूर्वक किया जाना चाहिए, तथा साझा किये गए डाटा का नियंत्रण किसी सिन्क्रोनाइज़ेशन रणनीति, जैसे सन्देश-पंक्ति (Message queue), सेमाफोर या किसी गैर-अवरोधी (Non-blocking) सिन्क्रोनाइज़ेशन योजना द्वारा अनिवार्य रूप से किया जाना चाहिए।
इन जटिलताओं के कारण, संगठनों द्वारा एक रीयल-टाइम ऑपरेटिंग सिस्टम को खरीदना एक सामान्य बात है, जो अनुप्रयोग प्रोग्रामर्स को, कम-से-कम बड़े सिस्टम्स के लिए, ऑपरेटिंग सिस्टम सेवाओं की बजाय उपकरणों की कार्यात्मकता पर ध्यान केन्द्रित करने की अनुमति देता है; मेमोरी आकार, प्रदर्शन तथा/या बैटरी जीवन-काल आदि की सीमाओं के कारण छोटे सिस्टम्स एक "सामान्य (Generic)" रीयल-टाइम सिस्टम से जुड़े अतिरिक्त खर्च को वहन नहीं कर सकते.
एक माइक्रोकर्नल तार्किक रूप से रीयल-टाइम OS का अगला चरण होता है। सामान्य व्यवस्था यह है कि ऑपरेटिंग सिस्टम कर्नल मेमोरी आवंटित करता है और क्रियान्वन के विभिन्न थ्रेड्स पर CPU का आदान-प्रदान करता है। यूज़र मोड प्रक्रियाएं मुख्य कार्यों, जैसे फ़ाइल सिस्टम, नेटवर्क इंटरफ़ेस आदि को लागू करती हैं।
सामान्य रूप में, माइक्रोकर्नल तब सफल होते हैं, जब कार्यों का आदान-प्रदान तथा कार्यों के बीच संवाद तीव्र हो और तब असफल होते हैं, जब ये धीमे हों.
एक्सोकर्नल सामान्य सबरूटीन कॉल्स के द्वारा दक्षतापूर्वक संवाद करते हैं। हार्डवेयर और सिस्टम में उपस्थित सम्पूर्ण सॉफ्टवेयर, अनुप्रयोग प्रोग्रामर्स के लिए उपलब्ध और उनके द्वारा वितान्य होता है।
इस स्थिति में, एम्बेडेड वातावरण के अनुरूप बनाने के लिए परिष्कृत क्षमताओं वाले एक अपेक्षाकृत बड़े कर्नल का अनुकूलन किया जाता है। यह प्रोग्रामर्स को लिनक्स [Linux] या माइक्रोसॉफ्ट विन्डोज़ [Microsoft Windows] जैसे एक डेस्कटॉप ऑपरेटिंग सिस्टम के समान वातावरण प्रदान करता है और इसलिए विकास के लिए बहुत उत्पादक होता है; दूसरी ओर इसे लक्षणीय रूप से अधिक मात्रा में हार्डवेयर संसाधनों की आवश्यकता होती है, यह अधिक महंगा होता है और इन कर्नल की जटिलता के कारण कम अनुमान-योग्य और कम विश्वसनीय होता है।
एम्बेडेड लिनक्स [Embedded Linux] और विन्डोज़ CE [Windows CE] एम्बेडेड मोनोलिथिक कर्नल के सामान्य उदाहरण हैं।
हार्डवेयर की लागत बढ़ने के बावजूद इस प्रकार के एम्बेडेड सिस्टम की लोकप्रियता, विशेषत: अधिक शक्तिशाली एम्बेडेड उपकरणों, जैसे बेतार रूटर्स और GPS नेविगेशन सिस्टम्स पर, बढ़ती जा रही है। इसके कुछ कारण ये हैं:एम्बेडेड सिस्टम्स के एक छोटे भाग को सुरक्षित, सामयिक, विश्वसनीय या दक्ष व्यवहार की आवश्यकता होती है, जिसे उपरोक्त में से किसी एक संरचना द्वारा प्राप्त नहीं किया जा सकता. ऎसी स्थिति में संगठन एक उपयुक्त सिस्टम का निर्माण करता है। कुछ स्थितियों में, विशेष तकनीकों का प्रयोग करके सिस्टम को एक "क्रियाविधि नियंत्रक (Mechanism Controller)" और एक पारंपरिक ऑपरेटिंग सिस्टम के साथ एक "प्रदर्शन नियंत्रक (Display Controller)" में विभाजित किया जा सकता है। एक संवाद तंत्र दोनों के बीच डाटा का आदान-प्रदान करता है।
मूल ऑपरेटिंग सिस्टम के अलावा, अनेक एम्बेडेड सिस्टम्स में उच्च-परत वाले अतिरिक्त सॉफ्टवेयर घटक होते हैं। इन घटकों में CAN, TCP/IP, FTP, HTTP तथा HTTPS जैसे प्रोटोकॉल स्टैक होते हैं और इनमें FAT और फ्लैश मेमोरी प्रबंधन सिस्टम जैसी भंडारण क्षमताएं भी शामिल होती हैं। यदि एम्बेडेड उपकरण में ऑडियो तथा वीडियो क्षमताएं हैं, तो उपयुक्त ड्राइवर एवं कोडेक्स सिस्टम में उपस्थित होंगे। मोनोलिथिक कर्नल की स्थिति में, इनमें से अनेक सॉफ्टवेयर परतें शामिल होती हैं। RTOS श्रेणी में अतिरिक्त सॉफ्टवेयर घटकों की उपलब्धता वाणिज्यिक पेशकश पर निर्भर होती है।