अन्तःपरिपथ अनुकरण: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
इन-सर्किट इम्यूलेशन (आईसीई) हार्डवेयर डिवाइस या इन-सर्किट इम्यूलेटर का उपयोग [[ अंतः स्थापित प्रणाली |अंतः स्थापित प्रणाली]] के [[सॉफ़्टवेयर]] को डिबग करने के लिए किया जाता है। यह [[डिबगिंग]] संचालन का समर्थन करने के साथ-साथ सिस्टम के मुख्य कार्य को पूरा करने के लिए अतिरिक्त क्षमता वाले प्रोसेसर का उपयोग करके संचालित होता है। विशेष रूप से पुराने सिस्टम के लिए, सीमित प्रोसेसर के साथ, इसमें आमतौर पर प्रोसेसर को हार्डवेयर इम्यूलेटर के साथ अस्थायी रूप से बदलना शामिल होता है: अधिक शक्तिशाली हालांकि अधिक महंगा संस्करण। यह ऐतिहासिक रूप से [[बॉन्ड-आउट प्रोसेसर]] के रूप में था जिसमें डिबगिंग के उद्देश्य से कई आंतरिक सिग्नल लाए गए थे। ये सिग्नल प्रोसेसर की स्थिति के बारे में जानकारी प्रदान करते हैं।
'''इन-सर्किट अनुकरण''' (आईसीई) हार्डवेयर यूक्ति या इन-सर्किट अनुकरण का उपयोग [[ अंतः स्थापित प्रणाली |अंतः स्थापित प्रणाली]] के [[सॉफ़्टवेयर]] को डिबग करने के लिए किया जाता है। यह [[डिबगिंग]] संचालन का समर्थन करने के साथ-साथ प्रणाली के मुख्य कार्य को पूरा करने के लिए अतिरिक्त क्षमता वाले प्रोसेसर का उपयोग करके संचालित होता है। विशेष रूप से पुरानी प्रणालियों के लिए, सीमित प्रोसेसर के साथ, इसमें सामान्यतः प्रोसेसर को हार्डवेयर अनुकरण के साथ अस्थायी रूप से परिवर्तित करना सम्मिलित होता है: इस प्रकार अधिक शक्तिशाली तथा अधिक महंगे संस्करण को सम्मिलित किया जाता हैं। यह ऐतिहासिक रूप से [[बॉन्ड-आउट प्रोसेसर]] के रूप में किया गया था जिसमें डिबगिंग के उद्देश्य से कई आंतरिक सिग्नल लाए गए थे। ये सिग्नल प्रोसेसर की स्थिति के बारे में जानकारी प्रदान करते हैं।


हाल ही में इस शब्द में [[JTAG]]-आधारित हार्डवेयर डिबगर्स भी शामिल हैं जो मानक उत्पादन चिप्स के साथ [[ऑन-चिप डिबगिंग]] हार्डवेयर का उपयोग करके समकक्ष पहुंच प्रदान करते हैं। कस्टम बॉन्ड-आउट संस्करणों के बजाय मानक चिप्स का उपयोग करना प्रौद्योगिकी को सर्वव्यापी और कम लागत वाला बनाता है, और विकास और रनटाइम परिवेशों के बीच अधिकांश अंतरों को समाप्त करता है। इस सामान्य मामले में, ''इन-सर्किट इम्यूलेटर'' शब्द [[मिथ्या नाम]] है, कभी-कभी भ्रामक रूप से, क्योंकि अनुकरण अब शामिल नहीं है।
हाल ही में इस शब्द में [[JTAG|जेटैग]]-आधारित हार्डवेयर डिबगर्स को भी सम्मिलित किया गया हैं जो मानक उत्पादन चिप्स के साथ [[ऑन-चिप डिबगिंग]] हार्डवेयर का उपयोग करके समकक्ष पहुंच प्रदान करते हैं। कस्टम बॉन्ड-आउट संस्करणों के अतिरिक्त मानक चिप्स का उपयोग करना प्रौद्योगिकी को सर्वव्यापी और कम लागत वाला बनाता है, और इसलिए विकास और रनटाइम परिवेशों के बीच अधिकांश अंतर को समाप्त कर देता है। इस सामान्य स्थिति में ''इन-सर्किट अनुकरण'' शब्द [[मिथ्या नाम|त्रुटि का नाम]] हैं, कभी-कभी भ्रामक रूप से यह गतिविधि होती हैं क्योंकि अनुकरण इसमें अब सम्मिलित नहीं रहता है।


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


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


एक एमुलेटर को इसका नाम मिलता है क्योंकि यह एम्बेडेड सिस्टम के कंप्यूटर के [[सेंट्रल प्रोसेसिंग यूनिट]] (सीपीयू) का अनुकरण (नकल) करता है। परंपरागत रूप से इसमें प्लग होता था जो सॉकेट में डाला जाता था जहां सीपीयू [[ एकीकृत परिपथ |एकीकृत परिपथ]] चिप को सामान्य रूप से रखा जाता था। अधिकांश आधुनिक प्रणालियाँ विशेष JTAG-आधारित डिबग पहुँच के साथ सीधे लक्ष्य प्रणाली के CPU का उपयोग करती हैं। प्रोसेसर का अनुकरण करना, या सीधे JTAG तक पहुँचना, ICE को वह सब कुछ करने देता है जो प्रोसेसर कर सकता है, लेकिन सॉफ्टवेयर डेवलपर के नियंत्रण में।
किसी अनुकरण को इसका नाम मिलता है क्योंकि यह एम्बेडेड प्रणाली के कंप्यूटर के [[सेंट्रल प्रोसेसिंग यूनिट]] (सीपीयू) का अनुकरण (नकल) करता है। परंपरागत रूप से इसमें प्लग होता था जो सॉकेट में डाला जाता था जहाँ सीपीयू [[ एकीकृत परिपथ |एकीकृत परिपथ]] चिप को सामान्य रूप से रखा जाता था। अधिकांशतः आधुनिक प्रणालियाँ विशेष जेटैग-आधारित डिबग पहुँच के साथ सीधे लक्ष्य प्रणाली के सीपीयू का उपयोग करती हैं। प्रोसेसर का अनुकरण करना, या सीधे जेटैग तक पहुँचना, आईसीई को वह सब कुछ करने देता है जो प्रोसेसर कर सकता है, किन्तु सॉफ्टवेयर डेवलपर के नियंत्रण में यह किया जाता हैं।


आईसीई [[कंप्यूटर टर्मिनल]] या [[निजी कंप्यूटर]] (पीसी) को एम्बेडेड सिस्टम से जोड़ते हैं। टर्मिनल या पीसी प्रोग्रामर को एम्बेडेड सिस्टम की जांच और नियंत्रण के लिए इंटरैक्टिव [[ प्रयोक्ता इंटरफ़ेस |प्रयोक्ता इंटरफ़ेस]] प्रदान करता है। उदाहरण के लिए, ग्राफिकल विंडोिंग इंटरफ़ेस के साथ स्रोत कोड स्तर [[ डिबगर |डिबगर]] होना नियमित है जो JTAG एडेप्टर (एमुलेटर) के माध्यम से एम्बेडेड लक्ष्य सिस्टम के लिए संचार करता है जिसमें कोई ग्राफिकल यूजर इंटरफेस नहीं है।
आईसीई [[कंप्यूटर टर्मिनल]] या [[निजी कंप्यूटर]] (पीसी) को एम्बेडेड प्रणाली से जोड़ते हैं। टर्मिनल या पीसी प्रोग्रामर को एम्बेडेड प्रणाली की जांच और नियंत्रण के लिए इंटरैक्टिव [[ प्रयोक्ता इंटरफ़ेस |प्रयोक्ता इंटरफ़ेस]] प्रदान करता है। उदाहरण के लिए, ग्राफिकल विंडोिंग इंटरफ़ेस के साथ स्रोत कोड स्तर [[ डिबगर |डिबगर]] होना नियमित है जो जेटैग एडेप्टर (अनुकरण) के माध्यम से एम्बेडेड लक्ष्य प्रणाली के लिए संचार करता है जिसमें कोई ग्राफिकल यूजर इंटरफेस नहीं है।


विशेष रूप से, जब उनका प्रोग्राम विफल हो जाता है, तो अधिकांश एम्बेडेड सिस्टम केवल [[ ईंट (इलेक्ट्रॉनिक्स) |ईंट (इलेक्ट्रॉनिक्स)]] बन जाते हैं। एंबेडेड सिस्टम में अक्सर [[सॉफ्टवेयर बग]] के संकेतों का पता लगाने के लिए बुनियादी कार्यों की कमी होती है, जैसे मेमोरी एक्सेस त्रुटियों को पकड़ने के लिए [[ स्मृति प्रबंधन इकाई |स्मृति प्रबंधन इकाई]] (MMU)। ICE के बिना, एम्बेडेड सिस्टम का विकास अत्यंत कठिन हो सकता है, क्योंकि आमतौर पर यह बताने का कोई तरीका नहीं होता है कि क्या गलत हुआ। आईसीई के साथ, प्रोग्रामर आमतौर पर कोड के टुकड़ों का परीक्षण कर सकता है, फिर कोड के किसी विशेष खंड में गलती को अलग कर सकता है, और फिर असफल कोड का निरीक्षण कर सकता है और समस्या को हल करने के लिए इसे फिर से लिख सकता है।
विशेष रूप से, जब उनका प्रोग्राम विफल हो जाता है, तो अधिकांश एम्बेडेड प्रणाली केवल [[ ईंट (इलेक्ट्रॉनिक्स) |ईंट (इलेक्ट्रॉनिक्स)]] बन जाते हैं। एंबेडेड प्रणाली में अधिकांशतः [[सॉफ्टवेयर बग]] के संकेतों का पता लगाने के लिए मौलिक कार्यों की कमी होती है, जैसे मेमोरी एक्सेस त्रुटियों को पकड़ने के लिए [[ स्मृति प्रबंधन इकाई |स्मृति प्रबंधन इकाई]] (एमएमयू) किया जाता हैं। आईसीई के बिना, एम्बेडेड प्रणाली का विकास अत्यंत कठिन हो सकता है, क्योंकि सामान्यतः यह बताने का कोई विधि नहीं होता है कि क्या गलत हुआ हैं। आईसीई के साथ प्रोग्रामर सामान्यतः कोड के टुकड़ों का परीक्षण करता हैं, फिर कोड के किसी विशेष खंड में त्रुटि को पृथक कर सकता है, और फिर असफल कोड का निरीक्षण कर सकता है और समस्या को हल करने के लिए इसे फिर से लिख सकता है।


उपयोग में, ICE प्रोग्रामर को निष्पादन [[ब्रेकपाइंट]], मेमोरी डिस्प्ले और मॉनिटरिंग, और इनपुट/आउटपुट नियंत्रण प्रदान करता है। इसके अलावा, विफलता की उत्पत्ति की पहचान करने के प्रयास में, आईसीई को रोकने के लिए मिलान मानदंडों की किसी भी श्रेणी को देखने के लिए प्रोग्राम किया जा सकता है।
इसके उपयोग में आईसीई प्रोग्रामर को निष्पादन [[ब्रेकपाइंट]], मेमोरी डिस्प्ले और मॉनिटरिंग, और इनपुट/आउटपुट नियंत्रण प्रदान करता है। इसके अतिरिक्त, विफलता की उत्पत्ति की पहचान करने के प्रयास में, आईसीई को रोकने के लिए संयोजित मानदंडों की किसी भी श्रेणी को देखने के लिए प्रोग्राम किया जा सकता है।


लक्ष्य [[ microcontroller |microcontroller]] के और विशेष अनुकरण-संस्करण (यानी, बॉन्ड-आउट) की आवश्यकता के बजाय, अधिकांश आधुनिक माइक्रोकंट्रोलर डिवाइस प्रोग्रामिंग, अनुकरण और डीबगिंग सुविधाओं के लिए माइक्रोकंट्रोलर के निर्मित संस्करण पर प्रदान किए गए संसाधनों का उपयोग करते हैं।<ref>{{cite web|last=Keil|first=Reinhard|title=Debugging with Cortex-M3 Microcontrollers|date=July 22, 2008|url=http://www.embedded.com/design/mcus-processors-and-socs/4007634/PRODUCT-HOW-TO-Debugging-with-Cortex-M3-Microcontrollers|publisher=www.embedded.com|access-date=25 May 2013}}</ref> भले ही यह लागत प्रभावी तरीका है, क्योंकि ICE इकाई केवल लक्ष्य माइक्रोकंट्रोलर का अनुकरण करने के बजाय केवल अनुकरण का प्रबंधन करती है, निर्माण समय पर कीमतों को कम रखने के लिए ट्रेड-ऑफ किया जाना चाहिए, फिर भी (अपेक्षाकृत कुछ) के लिए पर्याप्त अनुकरण सुविधाएँ प्रदान करें ) अनुकरण अनुप्रयोग।
[[ microcontroller |माइक्रोकंट्रोलर]] के लक्ष्य और विशेष अनुकरण-संस्करण (यानी, बॉन्ड-आउट) की आवश्यकता के अतिरिक्त, अधिकांश आधुनिक माइक्रोकंट्रोलर यूक्ति प्रोग्रामिंग, अनुकरण और डीबगिंग सुविधाओं के लिए माइक्रोकंट्रोलर के निर्मित संस्करण पर प्रदान किए गए संसाधनों का उपयोग करते हैं।<ref>{{cite web|last=Keil|first=Reinhard|title=Debugging with Cortex-M3 Microcontrollers|date=July 22, 2008|url=http://www.embedded.com/design/mcus-processors-and-socs/4007634/PRODUCT-HOW-TO-Debugging-with-Cortex-M3-Microcontrollers|publisher=www.embedded.com|access-date=25 May 2013}}</ref> इस प्रकार भले ही यह लागत इसके लिए प्रभावी विधि के रूप में उपयोग हो, क्योंकि आईसीई इकाई केवल लक्ष्य माइक्रोकंट्रोलर का अनुकरण करने के अतिरिक्त केवल अनुकरण का प्रबंधन करती है, निर्माण समय पर कीमतों को कम रखने के लिए ट्रेड-ऑफ किया जाना चाहिए, फिर भी (अपेक्षाकृत कुछ) के लिए पर्याप्त अनुकरण सुविधाएँ अनुकरण के अनुप्रयोग के लिए प्रदान करते हैं।


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


अधिकांश ICE में एडेप्टर इकाई होती है जो ICE होस्ट कंप्यूटर और परीक्षण की जाने वाली प्रणाली के बीच बैठती है। [[पिन हेडर]] और केबल असेंबली एडॉप्टर को सॉकेट से जोड़ती है जहां वास्तविक सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) या माइक्रोकंट्रोलर एम्बेडेड सिस्टम के भीतर माउंट होता है। हालिया आईसीई प्रोग्रामर्स को ऑन-चिप डीबग सर्किट तक पहुंचने में सक्षम बनाता है जो एम्बेडेड सिस्टम के सॉफ़्टवेयर को डीबग करने के लिए जेटीजी या पृष्ठभूमि डीबग मोड इंटरफ़ेस (बीडीएम) के माध्यम से सीपीयू में एकीकृत होता है। ये प्रणालियाँ अक्सर CPU चिप के मानक संस्करण का उपयोग करती हैं, और उत्पादन प्रणाली पर डिबग पोर्ट से आसानी से जुड़ सकती हैं। उन्हें कभी-कभी इन-सर्किट डिबगर्स या ICDs कहा जाता है, इस तथ्य को अलग करने के लिए कि वे CPU की कार्यक्षमता को दोहराते नहीं हैं, बल्कि इसके बजाय पहले से मौजूद, मानक CPU को नियंत्रित करते हैं। चूंकि सीपीयू को बदलने की जरूरत नहीं है, वे उन उत्पादन इकाइयों पर काम कर सकते हैं जहां सीपीयू को सोल्डर किया गया है और इसे बदला नहीं जा सकता है। x86 पेंटियम पर, डिबगिंग में सहायता के लिए ICE द्वारा विशेष 'जांच मोड' का उपयोग किया जाता है।<ref>{{Cite web|url=http://www.rcollins.org/articles/probemd/ProbeMode.html|title = Overview of Pentium Probe Mode}}</ref>
अधिकांश आईसीई में एडेप्टर इकाई होती है जो आईसीई होस्ट कंप्यूटर और परीक्षण की जाने वाली प्रणाली के बीच बैठती है। इस प्रकार [[पिन हेडर]] और केबल असेंबली एडॉप्टर को सॉकेट से जोड़ती है जहां वास्तविक सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) या माइक्रोकंट्रोलर एम्बेडेड प्रणाली के भीतर माउंट होता है। वर्तमान समय के अनुसार आईसीई प्रोग्रामर्स को ऑन-चिप डीबग सर्किट तक पहुंचने में सक्षम बनाता है जो एम्बेडेड प्रणाली के सॉफ़्टवेयर को डीबग करने के लिए जेटीजी या पृष्ठभूमि डीबग मोड इंटरफ़ेस (बीडीएम) के माध्यम से सीपीयू में एकीकृत होता है। ये प्रणालियाँ अधिकांशतः सीपीयू चिप के मानक संस्करण का उपयोग करती हैं, और उत्पादन प्रणाली पर डिबग पोर्ट से सरलता से जुड़ सकती हैं। उन्हें कभी-कभी इन-सर्किट डिबगर्स या आईसीडी कहा जाता है, इस तथ्य को पृथक करने के लिए कि वे सीपीयू की कार्यक्षमता को दोहराते नहीं हैं, बल्कि इसके अतिरिक्त पहले से सम्मिलित, मानक सीपीयू को नियंत्रित करते हैं। चूंकि सीपीयू को बदलने की जरूरत नहीं है, वे उन उत्पादन इकाइयों पर काम कर सकते हैं जहां सीपीयू को सोल्डर किया गया है और इसे बदला नहीं जा सकता है। एक्स86 पेंटियम पर, डिबगिंग में सहायता के लिए आईसीई द्वारा विशेष 'जांच मोड' का उपयोग किया जाता है।<ref>{{Cite web|url=http://www.rcollins.org/articles/probemd/ProbeMode.html|title = Overview of Pentium Probe Mode}}</ref>
एम्बेडेड सिस्टम के संदर्भ में, ICE हार्डवेयर का अनुकरण नहीं कर रहा है। बल्कि, यह वास्तविक सीपीयू को सीधे डिबग एक्सेस प्रदान कर रहा है। परीक्षण के तहत प्रणाली पूर्ण नियंत्रण में है, जिससे डेवलपर को सीधे लोड, डिबग और परीक्षण कोड की अनुमति मिलती है।


अधिकांश होस्ट सिस्टम साधारण व्यावसायिक कंप्यूटर होते हैं जो विकास के लिए उपयोग किए जाने वाले CPU से संबंधित नहीं होते हैं। उदाहरण के लिए, [[लिनक्स]] पीसी का उपयोग [[फ्रीस्केल 68HC11]] चिप, प्रोसेसर जो लिनक्स नहीं चला सकता है, का उपयोग करके सिस्टम के लिए सॉफ्टवेयर विकसित करने के लिए किया जा सकता है।
एम्बेडेड प्रणाली के संदर्भ में, आईसीई हार्डवेयर का अनुकरण नहीं कर रहा है। बल्कि, यह वास्तविक सीपीयू को सीधे डिबग एक्सेस प्रदान कर रहा है। परीक्षण के अनुसार प्रणाली पूर्ण नियंत्रण में है, जिससे डेवलपर को सीधे लोड, डिबग और परीक्षण कोड की अनुमति मिलती है।


प्रोग्रामर आमतौर पर होस्ट सिस्टम पर एम्बेडेड सिस्टम के कोड को संपादित और संकलित करता है। होस्ट सिस्टम में विशेष कंपाइलर होंगे जो एम्बेडेड सिस्टम के लिए निष्पादन योग्य कोड का उत्पादन करते हैं, जिसे [[क्रॉस कंपाइलर]]्स या क्रॉस [[असेंबलर (कंप्यूटिंग)]] कहा जाता है।
अधिकांश होस्ट प्रणाली साधारण व्यावसायिक कंप्यूटर होते हैं जो विकास के लिए उपयोग किए जाने वाले सीपीयू से संबंधित नहीं होते हैं। उदाहरण के लिए, [[लिनक्स]] पीसी का उपयोग [[फ्रीस्केल 68HC11|फ्रीस्केल 68एचसी11]] चिप, प्रोसेसर जो लिनक्स नहीं चला सकता है, का उपयोग करके प्रणाली के लिए सॉफ्टवेयर विकसित करने के लिए किया जा सकता है।
 
प्रोग्रामर सामान्यतः होस्ट प्रणाली पर एम्बेडेड प्रणाली के कोड को संपादित और संकलित करता है। होस्ट प्रणाली में विशेष कंपाइलर होंगे जो एम्बेडेड प्रणाली के लिए निष्पादन योग्य कोड का उत्पादन करते हैं, जिसे [[क्रॉस कंपाइलर]] या क्रॉस [[असेंबलर (कंप्यूटिंग)]] कहा जाता है।


== ऑन-चिप डिबगिंग ==
== ऑन-चिप डिबगिंग ==
ऑन-चिप डिबगिंग इन-सर्किट एमुलेशन का विकल्प है। यह समान लक्ष्य को पूरा करने के लिए अलग दृष्टिकोण का उपयोग करता है।
ऑन-चिप डिबगिंग इन-सर्किट अनुकरण का विकल्प है। यह समान लक्ष्य को पूरा करने के लिए पृथक दृष्टिकोण का उपयोग करता है।


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


== इंटेल ==
== इंटेल ==
[[Intel 286]] पर इन-सर्किट इम्यूलेटर (ICE) डिबगिंग का समर्थन करने के लिए, प्रोसेसर पर पांच अतिरिक्त पिन उपलब्ध थे: ICE ब्रेकप्वाइंट को बाहरी रूप से बाध्य करने के लिए इनपुट पिन, (<code>ICEBP#</code>) और उपयोगकर्ता मेमोरी के बजाय ICE-बस के माध्यम से संचालन का चयन करने के लिए आउटपुट पिन के दो वैकल्पिक जोड़े।<ref name="louie-et-al-1984">{{cite patent|number=4547849|country=US|inventor1-first=Glenn|inventor1-last=Louie|inventor2-first=Rafi|inventor2-last=Retter|inventor3-first=Neve|inventor3-last=Shaanan|inventor4-first=James|inventor4-last=Slager|fdate=1984-08-17|pridate=1981-12-09|gdate=1985-10-15|status=patent|url=https://patentimages.storage.googleapis.com/97/6f/f7/5d970cf466267a/US4547849.pdf|title=एक माइक्रोप्रोसेसर और एक कोप्रोसेसर के बीच इंटरफेस|assign1=[[Intel Corporation]]}}<!--|quote=--> "User bus cycle status signals, S1# and S0# support the user's bus and ICE bus cycle status signals, ICES1# and ICES0# support the ICE bus. … The ICE bus is used only for Data Read, Code Read, Halt, Shutdown, and Memory Write cycles. … microprocessor is forced to compatible mode at reset, … it cannot be switched back to compatible mode except by reset (or ICE breakpoint), … ICE must be given special attention since it is the only case in which a switch of the master microprocessor from protection mode to compatibility mode can occur (except for reset). … ICE software begins execution following an ICE breakpoint in compatibility mode and then switches to protection mode for the bulk of its operations."</ref> 80286 पर दो निर्देश (<code>0F 04</code>, <code>[[LOADALL|0F 05]]</code>) सिंगल-बाइट ओवरराइड प्रीफिक्स के साथ, मेमोरी ऑफ़सेट 0x800 में पूर्ण CPU स्थिति को डंप/पुनर्स्थापित करने के लिए मौजूद है (<code>F1</code>) उपयोगकर्ता-स्मृति तक पहुँचने के लिए ICE- मोड को सक्षम करने के लिए।
[[Intel 286|इंटेल 286]] पर इन-सर्किट अनुकरण (आईसीई) डिबगिंग का समर्थन करने के लिए, प्रोसेसर पर पांच अतिरिक्त पिन उपलब्ध थे: आईसीई ब्रेकप्वाइंट को बाहरी रूप से बाध्य करने के लिए इनपुट पिन, (<code>आईसीईबीपी</code>) और उपयोगकर्ता मेमोरी के अतिरिक्त आईसीई-बस के माध्यम से संचालन का चयन करने के लिए आउटपुट पिन के दो वैकल्पिक संयोजन उपलब्ध हैं।<ref name="louie-et-al-1984">{{cite patent|number=4547849|country=US|inventor1-first=Glenn|inventor1-last=Louie|inventor2-first=Rafi|inventor2-last=Retter|inventor3-first=Neve|inventor3-last=Shaanan|inventor4-first=James|inventor4-last=Slager|fdate=1984-08-17|pridate=1981-12-09|gdate=1985-10-15|status=patent|url=https://patentimages.storage.googleapis.com/97/6f/f7/5d970cf466267a/US4547849.pdf|title=एक माइक्रोप्रोसेसर और एक कोप्रोसेसर के बीच इंटरफेस|assign1=[[Intel Corporation]]}}<!--|quote=--> "User bus cycle status signals, S1# and S0# support the user's bus and ICE bus cycle status signals, ICES1# and ICES0# support the ICE bus. … The ICE bus is used only for Data Read, Code Read, Halt, Shutdown, and Memory Write cycles. … microprocessor is forced to compatible mode at reset, … it cannot be switched back to compatible mode except by reset (or ICE breakpoint), … ICE must be given special attention since it is the only case in which a switch of the master microprocessor from protection mode to compatibility mode can occur (except for reset). … ICE software begins execution following an ICE breakpoint in compatibility mode and then switches to protection mode for the bulk of its operations."</ref> 80286 पर दो निर्देशों (<code>0F 04</code>, <code>[[LOADALL|0F 05]]</code>) सिंगल-बाइट ओवरराइड प्रीफिक्स के साथ, मेमोरी ऑफ़सेट 0x800 में पूर्ण सीपीयू स्थिति को डंप/पुनर्स्थापित करने के लिए सम्मिलित किया गया हैं, इस प्रकार (<code>F1</code>) उपयोगकर्ता-स्मृति तक पहुँचने के लिए आईसीई- मोड को सक्षम करने के लिए अग्रसर हैं।


== यह भी देखें ==
== यह भी देखें ==

Revision as of 22:00, 21 March 2023

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

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

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

फंक्शन

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

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

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

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

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

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

लाभ

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

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

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

अधिकांश होस्ट प्रणाली साधारण व्यावसायिक कंप्यूटर होते हैं जो विकास के लिए उपयोग किए जाने वाले सीपीयू से संबंधित नहीं होते हैं। उदाहरण के लिए, लिनक्स पीसी का उपयोग फ्रीस्केल 68एचसी11 चिप, प्रोसेसर जो लिनक्स नहीं चला सकता है, का उपयोग करके प्रणाली के लिए सॉफ्टवेयर विकसित करने के लिए किया जा सकता है।

प्रोग्रामर सामान्यतः होस्ट प्रणाली पर एम्बेडेड प्रणाली के कोड को संपादित और संकलित करता है। होस्ट प्रणाली में विशेष कंपाइलर होंगे जो एम्बेडेड प्रणाली के लिए निष्पादन योग्य कोड का उत्पादन करते हैं, जिसे क्रॉस कंपाइलर या क्रॉस असेंबलर (कंप्यूटिंग) कहा जाता है।

ऑन-चिप डिबगिंग

ऑन-चिप डिबगिंग इन-सर्किट अनुकरण का विकल्प है। यह समान लक्ष्य को पूरा करने के लिए पृथक दृष्टिकोण का उपयोग करता है।

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

इंटेल

इंटेल 286 पर इन-सर्किट अनुकरण (आईसीई) डिबगिंग का समर्थन करने के लिए, प्रोसेसर पर पांच अतिरिक्त पिन उपलब्ध थे: आईसीई ब्रेकप्वाइंट को बाहरी रूप से बाध्य करने के लिए इनपुट पिन, (आईसीईबीपी) और उपयोगकर्ता मेमोरी के अतिरिक्त आईसीई-बस के माध्यम से संचालन का चयन करने के लिए आउटपुट पिन के दो वैकल्पिक संयोजन उपलब्ध हैं।[3] 80286 पर दो निर्देशों (0F 04, 0F 05) सिंगल-बाइट ओवरराइड प्रीफिक्स के साथ, मेमोरी ऑफ़सेट 0x800 में पूर्ण सीपीयू स्थिति को डंप/पुनर्स्थापित करने के लिए सम्मिलित किया गया हैं, इस प्रकार (F1) उपयोगकर्ता-स्मृति तक पहुँचने के लिए आईसीई- मोड को सक्षम करने के लिए अग्रसर हैं।

यह भी देखें

संदर्भ

  1. Keil, Reinhard (July 22, 2008). "Debugging with Cortex-M3 Microcontrollers". www.embedded.com. Retrieved 25 May 2013.
  2. "Overview of Pentium Probe Mode".
  3. US patent 4547849, Louie, Glenn; Retter, Rafi & Shaanan, Neve et al., "एक माइक्रोप्रोसेसर और एक कोप्रोसेसर के बीच इंटरफेस", issued 1985-10-15, assigned to Intel Corporation  "User bus cycle status signals, S1# and S0# support the user's bus and ICE bus cycle status signals, ICES1# and ICES0# support the ICE bus. … The ICE bus is used only for Data Read, Code Read, Halt, Shutdown, and Memory Write cycles. … microprocessor is forced to compatible mode at reset, … it cannot be switched back to compatible mode except by reset (or ICE breakpoint), … ICE must be given special attention since it is the only case in which a switch of the master microprocessor from protection mode to compatibility mode can occur (except for reset). … ICE software begins execution following an ICE breakpoint in compatibility mode and then switches to protection mode for the bulk of its operations."

बाहरी संबंध