एक माइक्रोकंट्रोलर और एक माइक्रोप्रोसेसर के बीच प्रोग्रामिंग अंतर?


9

इसलिए मैं अक्सर किताबों / ट्यूटोरियल और संदर्भों को देखता हूं जब असेंबली में एक माइक्रोप्रोसेसर के लिए प्रोग्रामिंग ..... तो मैं इसे कुछ माइक्रोकंट्रोलर के रूप में संदर्भित करता हूं।

उदाहरण के लिए Atmel ATtiny2313 .... मैंने कुछ ट्यूटोरियल देखे, कुछ ने इसे माइक्रोप्रोसेसर कहा, कुछ ने इसे माइक्रोकंट्रोलर कहा?

यह किसका है? और उन्हें (मूल रूप से) एक ही प्रोग्रामिंग कर रहा है? (विधानसभा में)



1
@Kellenjb: यह होगा यदि यह प्रोग्रामिंग के अंतर के बारे में नहीं पूछ रहा था। मुझे लगता है कि यह अलग है बंद करने के लिए पर्याप्त नहीं है।
बीजी 100

1
@ BG100 स्वीकृत उत्तर ने वास्तव में केवल अंतर को समझाया, न कि प्रोग्रामिंग अंतर को।
कोर्तुक

जवाबों:


14

यह वास्तव में एक में दो सवाल है ...

सबसे पहले, एक माइक्रोकंट्रोलर और एक माइक्रोप्रोसेसर के बीच अंतर क्या है?

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

माइक्रोकंट्रोलर एक ऑल-इन-वन सीपीयू + मेमोरी की तरह है, जिसमें बाहरी दुनिया के साथ संवाद करने के लिए कुछ बाहरी पोर्ट हैं। यह स्वयं समाहित है और यह प्रोग्राम रखने के लिए बाहरी मेमोरी का उपयोग नहीं करता है (हालाँकि यदि आवश्यक हो तो यह बाहरी मेमोरी में कार्यशील डेटा पढ़ और लिख सकता है)

दूसरे, क्या माइक्रोकंट्रोलर और माइक्रोप्रोसेसर एक ही प्रोग्रामिंग कर रहे हैं?

कुछ मायनों में हाँ, और कुछ मायनों में नहीं।

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

हालांकि, विभिन्न प्रकार के सीपीयू सीपीयू निर्देशों के एक अलग सेट को समझते हैं। उदाहरण के लिए, यदि आप एक असेंबली लैंग्वेज प्रोग्राम लिखते हैं जो 16F877 माइक्रोकंट्रोलर के साथ काम करता है, तो यह माइक्रोप्रोसेसर के 16Fxxx परिवार के बाहर माइक्रोप्रोसेसर या किसी अन्य माइक्रोकंट्रोलर के लिए पूर्ण बकवास होगा।

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


खैर मेरे कहने का मतलब ये था कि ASM हर एक के लिए अलग होगा ..... लेकिन कमांड / etc आम तौर पर एक ही (या उसी तरह से) MC और MP के बीच होते हैं ... मेरा मतलब है कि MC में MP होता है इसलिए मैं ऐसा

@ सौरोन: नहीं, वास्तव में नहीं .. जबकि कुछ कमांड डिवाइसों के बीच समान हो सकते हैं, जैसे कि ऐड, मूव, सब, आदि, वे संभवतः अलग तरीके से लागू किए जाते हैं, और उपकरणों के बीच पोर्ट नहीं करेंगे।
18100 बजे बीजी 100

1
उत्कृष्ट उत्तर, और एक जो शायद मेरी मदद कर सकता था जब मैं अपना माइक्रोप्रोसेसर वर्ग शुरू कर रहा था।
pfyon

अच्छी तरह से मैं क्या मतलब था ...... जैसे कि एक माइक्रोकंट्रोलर के अंदर एक सीपीयू है ... विधानसभा निर्देश वास्तविक सीपीयू के बजाय इसके आस-पास के घटकों के उद्देश्य से अधिक हैं।

@ सौरोन: हाँ, यह सही है।
20

10

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

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


ओह ठीक है कि अधिक समझ में आता है, लेकिन हर एक के लिए ASM मूल रूप से एक ही है?

आपका मतलब है कि अगर मैं कोर्टेक्स एम श्रृंखला के लिए कोड करना सीखता हूं, तो मैं कोर्टेक्स ए श्रृंखला के लिए भी कोड कर सकता हूं ??
0xakhil

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

8

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

हार्वर्ड आर्किटेक्चर का उपयोग करने वाले माइक्रोस्ट्रॉलर परिवारों के उदाहरणों में शामिल हैं: AVRs, Intel 8051, PICs (PIC32 को छोड़कर, नीचे देखें), और ARM Cortex-M3। एक उल्लेखनीय अपवाद FCScale प्रोसेसर हैं, जैसे HCS08, जो वॉन न्यूमैन वास्तुकला का उपयोग करते हैं, जैसा कि लंबन प्रोपेलर करता है।

यह प्रोग्रामिंग को कई तरीकों से प्रभावित करता है (उदाहरण सी के नीचे दिखाए गए उदाहरण):

रैम के कई प्रकार हो सकते हैं, जिनमें से प्रत्येक का अपना पता स्थान होता है। उदाहरण के लिए, 8051 में एक्सटर्नल डेटा (xdata) होता है जिसे रैम के पहले 256 बाइट्स से अलग संबोधित किया जाता है, भले ही दोनों को एक ही चिप पर लागू किया गया हो। तो किसी को वैरिएबल घोषणाओं पर क्वालिफायर का उपयोग करना होगाunsigned int xdata foo;

यदि कोड मेमोरी में स्थिरांक घोषित किए जाते हैं, तो उन्हें एक्सेस करने से पहले रैम में कॉपी करने की आवश्यकता हो सकती है। या, कोड मेमोरी को एक्सेस करने का एक तरीका होना चाहिए जैसे कि यह डेटा था - जैसे कि 8051 के लिए कोड क्वालिफायर, या पीआईसी के प्रोग्राम स्पेस विजिबिलिटी (पीएसवी) फीचर।

एक चिप परिवार से दूसरे में C कोड पोर्ट करते समय कोड और रैम तक पहुँचने के ये गैर-मानक तरीके प्रमुख अंतर (बाह्य उपकरणों के अलावा) होते हैं।

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


1

एक माइक्रोकंट्रोलर आमतौर पर गणना और परिधीय कार्यों को प्रदान करने के लिए एकल-चिप समाधान है।

एक माइक्रोप्रोसेसर गणना कार्यों को प्रदान करता है लेकिन परिधीय कार्यों को नहीं।

परिधीय कार्य सरल I / O के कुछ बिट होने के रूप में सरल हो सकते हैं; या परिष्कृत काउंटर और टाइमर, वीडियो डिस्प्ले, ईथरनेट, मोटर नियंत्रण, ऑडियो और वीडियो कोडेक, एट सेत्रा शामिल हो सकते हैं।

किसी दिए गए आर्किटेक्चर के लिए (x86- आधारित सीपीयू और एमसीयू के), "कम्प्यूटेशनल" कोडिंग समान होगी। लेकिन आप परिधीय कार्यों तक कैसे पहुंचेंगे, यह अलग-अलग होगा और इसलिए आपके पास अपने लक्ष्य हार्डवेयर पर परिधीय कार्यक्षमता कैसे कार्यान्वित होती है, इसके आधार पर बहुत भिन्न हार्डवेयर-विशिष्ट कोडिंग होगी।


1

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

कुछ माइक्रोकंट्रोलर लोकप्रिय माइक्रोप्रोसेसर के रूप में एक ही निर्देश सेट का उपयोग करते हैं। 68000 निर्देश सेट का उपयोग मूल मैकिनटोश, अमीगा और व्यक्तिगत कंप्यूटर के अटारी एसटी लाइनों में भी कुछ माइक्रोकंट्रोलर में किया गया है। भले ही मैकिंटोश और एक 68HC340-आधारित नियंत्रण बोर्ड द्वारा उपयोग किए जाने वाले निर्देश सेट एक ही हो, हालांकि, दो प्लेटफार्मों के लिए प्रोग्रामिंग बहुत भिन्न होने के लिए उपयुक्त नहीं है। मैकिन्टोश पर, जब तक एक उपयोगकर्ता-आपूर्ति वाला कार्यक्रम चलना शुरू नहीं हो जाता है, तब तक अधिकांश सिस्टम पहले से ही "सेट अप" हो जाएगा। कोड जो मेमोरी का एक ब्लॉक चाहता है, जरूरत के साथ एक रजिस्टर लोड कर सकता है और "ए-ट्रैप" निर्देश को निष्पादित कर सकता है। Macintosh OS फिर कुछ मेमोरी के लिए एक पॉइंटर लौटाएगा जो पहले किसी अन्य उद्देश्य के लिए आवंटित नहीं किया गया है, और स्मृति के उस क्षेत्र को चिह्नित करें ताकि यह जीता ' टी को फिर से आवंटित किया जाना चाहिए जब तक कि यह निर्देश न हो कि मूल प्राप्तकर्ता को अब इसकी आवश्यकता नहीं है। इसके विपरीत, एक 68HC340 और 128K RAM वाले बोर्ड पर, RAM के लिए "पूछने" की कोई आवश्यकता या क्षमता नहीं है। जब कार्यक्रम शुरू होता है, तो इसे "128K" मिल जाता है, लेकिन इसका उपयोग वह चाहेगा; और कुछ भी इसका उपयोग नहीं करेगा, लेकिन फ्लिप की ओर से उपयोगकर्ता के कार्यक्रम को इस बात पर नज़र रखना होगा कि यह किन क्षेत्रों के लिए उपयोग कर रहा है क्योंकि कुछ और नहीं जो इसे ट्रैक करेगा।

जबकि यहाँ अंतर वास्तव में एक माइक्रो कंप्यूटर बनाम माइक्रोकंट्रोलर के बीच है , और सवाल माइक्रोप्रोसेसरों के बारे में है, माइक्रोप्रोसेसर प्रोग्रामिंग के अधिकांश विचार एक सामान्य-उद्देश्य कंप्यूटर के संदर्भ में चर्चा करते हैं।


0

माइक्रोप्रोसेसर: एक डिजिटल हार्डवेयर मॉड्यूल जो निर्देशों को निष्पादित करता है। मॉड्यूल एक पूर्ण एकीकृत सर्किट हो सकता है।

माइक्रोकंट्रोलर: एक पूरा मॉड्यूल जिसमें अन्य मॉड्यूल के अलावा आंतरिक मेमोरी वाला माइक्रोप्रोसेसर होता है।


EE.SE, माइक में आपका स्वागत है। पैराग्राफ ब्रेक के लिए <Enter> x 2 का उपयोग करें। मैंने आपके लिए इसे ठीक कर दिया है।
ट्रांजिस्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.