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

From Vigyanwiki
(Created page with "{{Use American English|date = March 2019}} {{Short description|Debugging for embedded systems}} {{Use mdy dates|date = March 2019}} {{Refimprove|date=May 2008}} इन-सर...")
 
No edit summary
Line 1: Line 1:
{{Use American English|date = March 2019}}
इन-सर्किट इम्यूलेशन (आईसीई) हार्डवेयर डिवाइस या इन-सर्किट इम्यूलेटर का उपयोग [[ अंतः स्थापित प्रणाली |अंतः स्थापित प्रणाली]] के [[सॉफ़्टवेयर]] को डिबग करने के लिए किया जाता है। यह [[डिबगिंग]] संचालन का समर्थन करने के साथ-साथ सिस्टम के मुख्य कार्य को पूरा करने के लिए अतिरिक्त क्षमता वाले प्रोसेसर का उपयोग करके संचालित होता है। विशेष रूप से पुराने सिस्टम के लिए, सीमित प्रोसेसर के साथ, इसमें आमतौर पर प्रोसेसर को हार्डवेयर इम्यूलेटर के साथ अस्थायी रूप से बदलना शामिल होता है: अधिक शक्तिशाली हालांकि अधिक महंगा संस्करण। यह ऐतिहासिक रूप से [[बॉन्ड-आउट प्रोसेसर]] के रूप में था जिसमें डिबगिंग के उद्देश्य से कई आंतरिक सिग्नल लाए गए थे। ये सिग्नल प्रोसेसर की स्थिति के बारे में जानकारी प्रदान करते हैं।
{{Short description|Debugging for embedded systems}}
{{Use mdy dates|date = March 2019}}
{{Refimprove|date=May 2008}}


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


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


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


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


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


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


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


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


अधिकांश 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>
अधिकांश 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>
एम्बेडेड सिस्टम के संदर्भ में, ICE हार्डवेयर का अनुकरण नहीं कर रहा है। बल्कि, यह वास्तविक सीपीयू को सीधे डिबग एक्सेस प्रदान कर रहा है। परीक्षण के तहत प्रणाली पूर्ण नियंत्रण में है, जिससे डेवलपर को सीधे लोड, डिबग और परीक्षण कोड की अनुमति मिलती है।
एम्बेडेड सिस्टम के संदर्भ में, ICE हार्डवेयर का अनुकरण नहीं कर रहा है। बल्कि, यह वास्तविक सीपीयू को सीधे डिबग एक्सेस प्रदान कर रहा है। परीक्षण के तहत प्रणाली पूर्ण नियंत्रण में है, जिससे डेवलपर को सीधे लोड, डिबग और परीक्षण कोड की अनुमति मिलती है।


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


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


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


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


== यह भी देखें ==
== यह भी देखें ==
Line 49: Line 44:
==संदर्भ==
==संदर्भ==
{{Reflist}}
{{Reflist}}


==बाहरी संबंध==
==बाहरी संबंध==
*[http://www.ganssle.com/articles/BegincornerICE.htm Jack Ganssle's Beginner's Corner article]
*[http://www.ganssle.com/articles/BegincornerICE.htm Jack Ganssle's Beginner's Corner article]
*[http://www.eetimes.com/document.asp?doc_id=1200927 How to choose an in-circuit emulator By Jonathan Hector]
*[http://www.eetimes.com/document.asp?doc_id=1200927 How to choose an in-circuit emulator By Jonathan Hector]
{{Microcontrollers}}
[[Category: अंतः स्थापित प्रणालियाँ]] [[Category: डिबगिंग]]  
[[Category: अंतः स्थापित प्रणालियाँ]] [[Category: डिबगिंग]]  



Revision as of 20:46, 21 March 2023

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

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

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

समारोह

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

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

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

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

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

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

लाभ

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

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

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

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

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

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

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

इंटेल

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

यह भी देखें

संदर्भ

  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."

बाहरी संबंध