एक बड़ा माइक्रोकंट्रोलर, या बहुत सारे छोटे माइक्रोकंट्रोलर?


24

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

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

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

मुझे लगता है कि मेरा प्रश्न वास्तव में दो-गुना है:

  1. क्या मल्टीटास्किंग करने के लिए ऑल-इन-वन दृष्टिकोण एक अच्छा विचार है, या क्या यह खंड और अलग करना बेहतर है, और

  2. अगर मैं देख रहा हूँ कि कैसे माइक्रोकंट्रोलर के पास मेरे कार्यों की सूची के आधार पर क्या करने के लिए पर्याप्त गणना शक्ति है, तो मैं कैसे पता लगा सकता हूं?

मैं मध्यम dsPIC33s को एआरएम SoCs कि RTOS चलाने के लिए सभी तरह से देख रहा हूँ। व्यवस्थित करने के लिए मुझे क्या चाहिए, मुझे बहुत मदद मिलेगी।




4
पहले से ही बहुत से उत्तर, लेकिन कभी-कभी एक ही बोर्ड पर कई प्रोग्राम करने योग्य माइक्रोस प्राप्त करने से सभी एक ही भाषा बोलते हैं, केवल एक माइक्रो का उपयोग करने की तुलना में अधिक काम है, शायद कुछ बुद्धिमान बाह्य उपकरणों के साथ।
एरिक फ्राइसन

जवाबों:


10

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

थोड़ी मात्रा में

यदि आप इन उपकरणों के एक-बंद या छोटे रन कर रहे हैं, तो आपके विकास के प्रयास आपके प्रति-आइटम लागत को कम करने जा रहे हैं, और आपको इस पर ध्यान केंद्रित करना चाहिए कि आपके विकास के लिए सबसे आसान / सबसे तेज़ क्या होगा, बजाय लागत / माइक्रोइलेक्ट्रॉनिक का आकार।

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

तो इस मामले में, आपके सवालों के जवाब हैं:

क्या मल्टीटास्किंग करने के लिए ऑल-इन-वन दृष्टिकोण एक अच्छा विचार है, या क्या यह खंड और अलग करना बेहतर है, और

बड़े पैमाने पर विभाजन और अलगाव की ओर युक्तियाँ। प्रमुख कारण यह है कि रीयल-टाइम सिस्टम को डीबग करना बहुत समय लेने वाला हो सकता है, और इस तरह के कार्यों को अपने स्वयं के प्रोसेसर पर रखने से चर को मापने या नियंत्रित करने की सीमा होती है जब कुछ सही काम नहीं कर रहा होता है।

अगर मैं देख रहा हूँ कि कैसे माइक्रोकंट्रोलर के पास मेरे कार्यों की सूची के आधार पर क्या करने के लिए पर्याप्त गणना शक्ति है, तो मैं कैसे पता लगा सकता हूं?

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

बड़े पैमाने पर उत्पादन

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

क्या मल्टी-टास्किंग करने के लिए ऑल-इन-वन एक अच्छा विचार है, या क्या यह सेगमेंट और आइसोलेट करना बेहतर है?

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

अगर मैं देख रहा हूँ कि कैसे माइक्रोकंट्रोलर के पास मेरे कार्यों की सूची के आधार पर क्या करने के लिए पर्याप्त गणना शक्ति है, तो मैं कैसे पता लगा सकता हूं?

आपको उन कार्यों को समझना होगा जो आप करना चाहते हैं और वे कितने संसाधन लेते हैं। मान लीजिए कि निम्नलिखित सत्य थे:

आपका बीएलडीसी पीआई रूटीन सेकंड के 100 बार प्रोसेसर समय के एक्स चक्रों का उपभोग करेगा, और प्रत्येक को ऑपरेशन के लिए 50 बाइट्स रैम, ट्यूनिंग के लिए ईईप्रॉम के 16 बाइट्स और कोड के लिए 1k फ्लैश की आवश्यकता होगी। उन्हें माइक्रोकंट्रोलर में 3 सोलह बिट पीडब्लूएम बाह्य उपकरणों की आवश्यकता होगी। आपको घबराना निर्दिष्ट करने की आवश्यकता हो सकती है, जिसमें विशिष्ट रुकावट विलंबता आवश्यकताएं होंगी।

आपके USB और धारावाहिक रूटीन प्रोसेसर के Y चक्रों को आवश्यकतानुसार, 2k RAM, 64 बाइट्स EEPROM और 8k फ़्लैश की खपत करेंगे। यह USB और धारावाहिक बाह्य उपकरणों की आवश्यकता होगी।

आपका GUI एक सेकंड में 30 बार प्रोसेसर शक्ति के Z चक्र का उपभोग करेगा, और 2k RAM, EEPROM के 128 बाइट्स, और 10k फ़्लैश की आवश्यकता होगी। यह एलसीडी, बटन, नॉब्स आदि के साथ संचार के लिए 19 I / O का उपयोग करेगा।

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

आपके द्वारा इन डिज़ाइनों के पर्याप्त रूप से किए जाने के बाद, आप X, Y और Z का बेहतर अनुमान लगा पाएंगे। आपको पता होगा कि बीएलडीसी पीआई रूटीन, हालांकि अक्सर चलते हैं, काफी छोटे होते हैं और बहुत कम चक्रों की आवश्यकता होती है। USB और धारावाहिक रूटीन के लिए बहुत अधिक चक्र की आवश्यकता होती है, लेकिन अक्सर होता है। उपयोगकर्ता इंटरफ़ेस को परिवर्तन खोजने के लिए अक्सर कुछ चक्रों की आवश्यकता होती है, लेकिन उदाहरण के लिए, डिस्प्ले को अपडेट करने के लिए कई चक्रों की आवश्यकता होती है।


11

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

मैं तब मुख्य माइक्रोकंट्रोलर में सब कुछ चलाऊंगा, जैसे कि PIC24 (एक PIC32 संभवतः ओवरकिल है, आपके द्वारा सूचीबद्ध कार्यों के आधार पर)। इसके अलावा सबसे तेज PIC24E के रूप में एक PIC32 के रूप में तेजी से चला सकते हैं।

जब एक माइक्रोकंट्रोलर चुनते हैं, तो मैं पहले फ्लैश और रैम की मात्रा का अनुमान लगाता हूं जो मुझे चाहिए, और फिर शब्द की लंबाई और प्रोसेसर की गति को देखें। बाद में, अक्सर मिलने के लिए सबसे कठिन आवश्यकता सबसे तेज़ बाधा है जिसे आप संभालने की उम्मीद करते हैं। यदि आप उदाहरण के लिए, 16 KHz की ध्वनि का उत्पादन कर रहे हैं, और प्रत्येक 62.5 output के बीच में रुकावट है, तो आप बेहतर तरीके से नैनोकैन्ड्स के दसियों में एक निर्देश समय के साथ एक माइक्रोकंट्रोलर है, या आप इसे सेवा करने और किसी अन्य को प्राप्त करने में सक्षम नहीं होंगे काम किया।


7

एक अर्ध औपचारिक दृष्टिकोण है जिसका उपयोग आप अपना उत्तर देने में मदद करने के लिए कर सकते हैं। मैं व्हाइट के "डिजाइनिंग एंबेडेड सिस्टम" के अध्याय 2 को पढ़ने की अत्यधिक सलाह देता हूं, जिनमें से अधिकांश Google पुस्तकें पर उपलब्ध है ।

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

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

व्हाइट से, एंबेडेड सिस्टम बनाना, अध्याय 2

के रूप में "मुझे कैसे पता चलेगा कि मेरे पास पर्याप्त नियंत्रक है", मेरी अपनी प्राथमिकता यह है कि मैं अपने डिजाइनिंग सैंडबॉक्स में उतनी ही शक्ति डालूं जितना मैं कर सकता हूं, और फिर यह पता लगाऊंगा कि डिजाइन के ठीक होने पर मैं कितने संसाधनों में कटौती कर सकता हूं मार्ग। $ 10 माइक्रोकंट्रोलर और प्रोटोटाइप प्रयोजनों के लिए $ 3 माइक्रोकंट्रोलर के बीच की कीमत में अंतर सिर्फ नए भागों की प्रतीक्षा कर रहे अपने अंगूठे को वापस लेने और टटोलने के हफ्तों का हो सकता है, जबकि यदि आपके पास पर्याप्त शक्ति है तो डिज़ाइन हमेशा गतिशील रह सकता है।


5

मैं एक ऐसी प्रणाली पर काम करता हूं जो मोटे तौर पर आप का वर्णन कर रहे हैं - मोटर्स, IO, प्रदर्शन, 3x UARTs + SPI + I2C एक कोल्डफायर 52259 (मध्य-सीमा 32-बिट ~ 80MHz माइक्रो) पर चल रहा है और यह बहुत मुश्किल नहीं है, हालांकि प्राप्त करना सॉफ्टवेयर आर्किटेक्चर का अधिकार महत्वपूर्ण है - हमारे पास हार्डवेयर और इंटरप्ट पर बहुत सारा सामान चल रहा है (कुछ भी जो हार्डवेयर अपने आप संभाल सकता है, हम हार्डवेयर और सर्विस में व्यवधान के साथ चलते हैं) मुख्य () लूप को छोड़कर सभी हाउसकीपिंग करते हैं।

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

उच्च अंत में, इन दिनों ऐसा लगता है कि MCU के बीच इतना कम अंतर है कि वास्तव में एक RTOS और कुछ (SoC) से लाभान्वित होने के लिए पर्याप्त जटिल और शक्तिशाली है जो सिर्फ एम्बेडेड लिनक्स चलाता है।

हालांकि, उस उदाहरण में, मैं कहूंगा कि महत्वपूर्ण कार्यों (ईजी मोटर नियंत्रण जहां समय या एक सीमा पर रोक महत्वपूर्ण है) को संभालने के लिए छोटे सस्ते माइक्रो का उपयोग करने में कुछ मूल्य है मुख्य "मस्तिष्क" सीपीयू की कमान के तहत तो आप भरोसा नहीं कर रहे हैं समय पर कुछ करने के लिए "गैर-रीयलटाइम" ओएस पर।


3

हर किसी का जवाब बेहतर होता है लेकिन मेरे पास जोड़ने के लिए थोड़ा सा है जो उपयोगी हो सकता है। यह निशान से थोड़ा हटकर हो सकता है और मैं इसे टिप्पणी के रूप में जोड़ना पसंद करूंगा लेकिन 50 प्रतिनिधि नियम है :(

संक्षिप्त उत्तर यह निर्भर करता है, ऊपर देखें लेकिन प्रोसेसर लाभ के बारे में भी क्यों नहीं सोचते।

छोटे प्रोसेसर के लाभों के बारे में क्यों नहीं सोचा। यह प्रोसेसर के बारे में एक सवाल के बाद है। गणितीय और कुछ गैर-पुनरावृत्त कार्यों के लिए, कई प्रोसेसर एक लघुगणक को बढ़ावा दे सकते हैं। Amdahl के नियम में कहा गया है कि एक बढ़ावा हासिल किया जा सकता है1((1-पी)+पीरों)लेकिन यह आता है। P गणना का प्रतिशत है जिसे विभाजित किया जा सकता है और s गति है (संचालन की संख्या, हार्डवेयर टूल आदि पर निर्भर करता है।)।

बेशक, लागत, कार्यान्वयन में आसानी; आदि के रूप में अच्छी तरह से विचार करने के लिए महत्वपूर्ण और भी अधिक महत्वपूर्ण हैं।


1

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


1

"हॉर्सपावर" माध्यमिक है कि क्या आप अपने रियलटाइम बाधाओं को पूरा कर सकते हैं।

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

अधिकांश प्रोटोकॉलों के लिए, आधुनिक MCU में प्रोटोकॉल के उन हिस्सों के कार्यान्वयन कार्यान्वित होते हैं जिनमें रीयल-टाइम बाधाएँ होती हैं, इसलिए यदि आप एक MCU पा सकते हैं जिसमें आवश्यक परिधीयता है और डेटा प्रवाह को संभालने के लिए आवश्यक CPU गति है (यानी हार्ड रियलिटी आवश्यकता घट जाती है) फॉर्म की एक नरम रीयलटाइम आवश्यकता में "एफआईएफओ से भरा हुआ होने से पहले पढ़ने में सक्षम होगा, और इससे अधिक तेजी से इसे भरता है"), यह इष्टतम विकल्प होगा।

यदि ऐसा कोई समाधान मौजूद नहीं है, तो आपके विकल्प सीपीयू + एफपीजीए समाधान (जैसे हार्ड एआरएम कोर के साथ एफपीजीए), या शुद्ध एफपीजीए समाधान (वैकल्पिक रूप से एक नरम सीपीयू के साथ जटिलता आवश्यकताओं के आधार पर) का उपयोग करके अलग-अलग नियंत्रकों में कार्य कर रहे हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.