32-बिट 48-96 मेगाहर्ट्ज माइक्रोप्रोसेसरों के लाभ (जैसे कि अरुडुइनो ड्यू में)


10

ऐसा लगता है कि Arduino Due (32-बिट, 84 Mhz, ARM-Cortex-M3- आधारित SAM3X8E) को आज जारी किया गया।

इसके अलावा, स्पष्ट रूप से इस श्रेणी (32-बिट / 48-96 मेगाहर्ट्ज / एआरएम) में प्रोसेसर के साथ-साथ संबंधित प्रोटोटाइप बोर्ड भी हैं:

  • NXP LPC1768 / mBed
  • STM32 / डिस्कवरी
  • PIC32 / चिपकिट
  • PIC32 / लंबन प्रोपेलर
  • LM4F120 / TI लॉन्चपैड
  • आदि।

मैं इन "इन-द-इन" माइक्रोप्रोसेसरों की अपील को समझने की कोशिश कर रहा हूं, जो मुझे निम्न-अंत AVR / MSP430 / etc के बीच झूठ बोलते हुए दिखाई देते हैं। (पेशेवरों: सस्ती, कम शक्ति, छोटे पदचिह्न) और उच्च अंत ARM7 / etc (समर्थक: प्रति सेकंड अधिक से अधिक निर्देशों में सक्षम)।

32-बिट / 48-96 मेगाहर्ट्ज / एआरएम-आधारित माइक्रोप्रोसेसर किन स्थितियों या तरीकों में उपयुक्त विकल्प हैं? अधिक विशेष रूप से, मैं सोच रहा हूं कि कम-अंत 8-बिट माइक्रोकंट्रोलर या बहुत उच्च-अंत ARM7 प्रोसेसर दोनों पर, डिज़ाइन के दौरान बेहतर विकल्प के लिए वे किन अनुप्रयोगों या किन मापदंडों में बदलाव करेंगे।


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

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

3
जहाँ तक मुझे पता है, Parallax Propeller एक कस्टम चिप है जिसका PIC32 से कोई संबंध नहीं है। कनेक्शन के लिए कोई स्रोत?
आंद्रेजाको जूल

जवाबों:


12

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

त्वरित सारांश:

यह उत्तर एक लंबा होने जा रहा है, इसलिए मुझे इसके बारे में संक्षेप में बताना चाहिए। अधिकांश लोगों के लिए ARM Cortex-M0 / M3 / M4 चिप्स की नवीनतम फसल सबसे अच्छा समाधान प्रदान करती है, जो लागत के लिए सबसे अच्छी सुविधा है। यह सच भी है जब इन 32-बिट MCUs की तुलना PIC और MSP430s जैसे 8 और 16 बिट पूर्वजों से की जाती है। M0 के यूएस $ 1 / से कम और M4 के लिए US $ 2 / से कम के लिए खरीदा जा सकता है, इसलिए बहुत ही संवेदनशील संवेदनशील अनुप्रयोगों को छोड़कर ARM समाधान बहुत अच्छे हैं। M0 की शक्ति बहुत कम है और अधिकांश लोगों के लिए पर्याप्त होनी चाहिए। जो लोग MSP430s के प्रति बहुत संवेदनशील हैं, वे अभी भी एक बेहतर विकल्प हो सकते हैं, लेकिन M0s इन अनुप्रयोगों के लिए भी विचार करने योग्य हैं।

यदि आप अधिक गहराई से विश्लेषण में रुचि रखते हैं, तो आगे पढ़ें, अन्यथा अब आप पढ़ना बंद कर सकते हैं।

अब मैं प्रत्येक क्षेत्र को देखूंगा और विभिन्न MCU की तुलना करूंगा:

निष्पादन की गति

बेशक 32-बिट MCU तेजी से होने जा रहे हैं। वे घड़ी की गति को तेज़ करते हैं, लेकिन उनमें से प्रत्येक घड़ी के लिए अधिक काम भी करते हैं। एआरएम कॉर्टेक्स-एम 4 जैसे एमसीयू में डीएसपी प्रसंस्करण निर्देश शामिल हैं, और यहां तक ​​कि हार्डवेयर में फ्लोटिंग पॉइंट सपोर्ट हो सकता है। 8 और 16 बिट सीपीयू 32-बिट नंबरों पर काम कर सकते हैं, लेकिन यह ऐसा करने में कुशल नहीं है। ऐसा करने से सीपीयू रजिस्टर, सीपीयू क्लॉक साइकिल और प्रोग्राम मेमोरी के लिए फ्लैश मेमोरी जल्दी से खपत होगी।

विकास में आसानी

मेरी राय में, यह आधुनिक 32-बिट MCUs का उपयोग करने के लिए सबसे मूल्यवान कारण है - लेकिन सबसे अधिक प्रशंसा भी है। मुझे पहली बार 8-बिट PICs की तुलना करें। यह सबसे खराब मामला है, लेकिन मेरी बातों को समझाने के लिए यह सबसे अच्छा है।

मूल रूप से छोटे PIC की आवश्यकता होती है कि प्रोग्रामिंग असेंबली भाषा में की जाए। सच है, 8-बिट PICs के लिए भी C कंपाइलर उपलब्ध हैं लेकिन वे कंपाइलर्स या तो फ्री या अच्छे हैं। आपको ऐसा कंपाइलर नहीं मिल सकता जो अच्छा और मुफ्त दोनों हो। संकलक के मुक्त संस्करण में अपंग है कि इसका अनुकूलन "प्रो" संस्करण के रूप में अच्छा नहीं है। प्रो संस्करण लगभग US $ 1,000 है और केवल PIC चिप्स (8, 16, या 32 बिट चिप्स) के एक परिवार का समर्थन करता है। यदि आप एक से अधिक परिवार का उपयोग करना चाहते हैं तो आपको दूसरे यूएस $ 1,000 के लिए एक और कॉपी खरीदनी होगी। संकलक का "मानक" संस्करण एक मध्यम स्तर का अनुकूलन करता है और प्रत्येक चिप परिवार के लिए लगभग $ 500 का खर्च करता है। 8-बिट PICs आधुनिक मानकों से धीमी हैं और अच्छे अनुकूलन की आवश्यकता होती है।

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

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

अन्य गैर-एआरएम सी कंपाइलर हैं जो अच्छी तरह से काम करते हैं। MSP430 संकलक एक उचित काम करने लगता है। सरू PSoC उपकरण (विशेष रूप से PSoC1) छोटी गाड़ी हैं।

फ्लैट मेमोरी मॉडल

एक MCU जिसने RAM / रजिस्टरों / Flash को पृष्ठांकित किया है वह केवल बेवकूफ है। हाँ, मैं 8-बिट PICs के बारे में बात कर रहा हूँ। गूंगा, गूंगा, गूंगा। इसने मुझे PIC से इतना दूर कर दिया कि मैंने उनके नए सामान को देखने की जहमत नहीं उठाई। (अस्वीकरण: इसका मतलब है कि नए PIC में सुधार हो सकता है और मुझे अभी यह पता नहीं है।)

8-बिट MCU के साथ 256 बाइट्स से बड़े डेटा संरचनाओं तक पहुंचना मुश्किल (लेकिन असंभव नहीं) है। 16-बिट MCU के साथ जो 64 kbytes या kwords को बढ़ जाता है। 32-बिट MCUs के साथ जो 4 गीगाबाइट तक जाता है।

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

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

पैकेज का आकार

कुछ छोटे PIC और अन्य 8-बिट MCUs वास्तव में छोटे पैकेज में उपलब्ध हैं। 6 और 8 पिन! वर्तमान में सबसे छोटा ARM Cortex-M0 जो मुझे पता है कि QFN-28 में है। जबकि QFN-28 अधिकांश के लिए काफी छोटा है, यह सभी के लिए पर्याप्त छोटा नहीं है।

लागत

सबसे सस्ता PIC सबसे सस्ता ARM Cortex-M0 की कीमत का एक तिहाई है। लेकिन यह वास्तव में US $ 0.32 बनाम US $ 0.85 है। हां, कुछ के लिए यह कीमत अंतर मायने रखता है। लेकिन मेरा मानना ​​है कि इस वेब साइट पर अधिकांश लोगों को लागत के उस छोटे अंतर के बारे में परवाह नहीं है।

इसी तरह, जब ARM Cortex-M0 / M3 / M4 के साथ अधिक सक्षम MCUs की तुलना आमतौर पर ARM Cortex "मोटे तौर पर भी" या शीर्ष पर आती है। जब अन्य चीजों में फैक्टरिंग (विकास में आसानी, संकलक लागत, आदि) तो एआरएम बहुत आकर्षक हैं।

दूसरा सारांश

मुझे लगता है कि असली सवाल यह है: आप एआरएम कॉर्टेक्स-एम0 / एम 3 / एम 4 का उपयोग क्यों नहीं करेंगे ? जब पूर्ण लागत सुपर महत्वपूर्ण है। जब सुपर कम बिजली की खपत महत्वपूर्ण है। जब सबसे छोटे पैकेज आकार की आवश्यकता होती है। जब गति महत्वपूर्ण नहीं है। लेकिन अधिकांश अनुप्रयोगों के लिए इनमें से कोई भी लागू नहीं होता है और एआरएम वर्तमान में सबसे अच्छा समाधान है।

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

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

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


1
एआरएम के साथ किसी भी स्मृति स्थान तक पहुंचने के लिए, पहले एक पते के साथ एक रजिस्टर लोड करना होगा जो इसके 4K के भीतर है; कई I / O उपकरणों को पता स्थान के 4K से अधिक आवंटित किया जाता है, भले ही कई केवल कुछ असतत पते का उपयोग करते हैं। इसके विपरीत, 18Fxx PIC सीधे एक निर्देश के साथ अधिकांश I / O स्थानों पर काम कर सकते हैं, जो बैंकिंग की स्थिति से स्वतंत्र है। वह साधन जिसके द्वारा अधिकांश रैम को बांधा जाता है, बल्कि कष्टप्रद होता है, लेकिन कुछ प्रकार की बिट-बैंगिंग के लिए (जिस उद्देश्य से 1970 में PIC आर्किटेक्चर को डिजाइन किया गया था) PIC आर्किटेक्चर बहुत अच्छा काम करता है।
सुपरकैट

1
BTW, मुझे यह उत्सुक लगता है कि जबकि 1970 से एक लोकप्रिय 8-बिट माइक्रोप्रोसेसर कुशलतापूर्वक 256-बाइट डेटा संरचनाओं को मनमाने ढंग से संरेखित कर सकता है, और एक लोकप्रिय 16-बिट प्रोसेसर 65,536-बाइट संरचनाओं के साथ अच्छी तरह से काम कर सकता है जो 16 पर गठबंधन किए गए थे -बाउंड सीमाएँ या मनमाने ढंग से संरेखित डेटा संरचनाएँ लगभग इतनी बड़ी, नए 8-बिट और 16-बिट प्रोसेसर के लिए कुशल कोड लिखना कठिन हो जाता है जो पेज / बैंक सीमाओं को स्ट्रैडल करता है।
सुपर

@supercat "LDR / SRT तत्काल ऑफसेट" निर्देश के लिए 4K पता सीमा सत्य है, लेकिन अक्सर कोई समस्या नहीं है। मैं आपकी बाकी टिप्पणी से असहमत हूं। फ़्रीस्केल M4 डॉक्स को देखते हुए, प्रत्येक परिधीय पता सीमा के 4K से अधिक नहीं लेता है, इसलिए उस परिधीय में सभी रजिस्टरों तक पहुंचने के लिए एक एकल "आधार पता सूचक" पर्याप्त है। 32 सामान्य प्रयोजन रजिस्टर भी हैं, जिनमें से किसी का भी आधार पता सूचक के रूप में उपयोग किया जा सकता है - इसलिए कोड के समान अनुभाग में कई बाह्य उपकरणों को जल्दी से एक्सेस करना अपेक्षाकृत दर्द रहित है।

1
@supercat आपका दूसरा बिंदु संपूर्ण RISC बनाम CISC बहस को छूता है। एआरएम एक आरआईएससी सीपीयू है, जिसका अर्थ है कि यह सबसे लगातार कार्यों को करने के लिए अनुकूलित है। ऐसे कार्य जो अक्सर नहीं होते हैं, जैसे बिना असाइन किए गए एक्सेस के लिए या तो अधिक काम करने की आवश्यकता होती है या अधिक समय लगता है (सीपीयू आर्क पर निर्भर करता है)। मैं इसे एक सकारात्मक चीज के रूप में देखता हूं, नकारात्मक चीज के रूप में नहीं। यही कारण है कि हम पुराने 8-बिट की कीमत के लिए तेजी से 32-बिट एमसीयू प्राप्त करते हैं। इन quirks के साथ भी, मैं इन CPU में से किसी एक पर PIC को किसी भी दिन ले जाऊंगा।

मुझे याद आती है; मेरा मतलब यह नहीं था कि एक आधार रजिस्टर एक संपूर्ण परिधीय को संभाल नहीं सकता था, बल्कि यह कि प्रत्येक परिधीय के लिए एक रजिस्टर को अक्सर लोड करना पड़ता है (इसलिए कोई बस उदाहरण के लिए IO_BASE_ADDR के साथ बैठे रजिस्टर को छोड़ नहीं सकता है )। कुछ प्रकार के कोड के लिए, "bsf LATA, 4" जैसे निर्देश के साथ एक एकल चक्र में I / O बिट सेट करने में सक्षम होने के बिना, पहले किसी भी रजिस्टर को प्री-लोड किए बिना, बहुत काम हो सकता है। मुझे एआरएम पसंद है, लेकिन पीआईसी पर प्रत्यक्ष I / O मैपिंग काफी अच्छा हो सकता है (बहुत बुरा अन्य मेमोरी एक्सेस इतना अच्छा नहीं है)।
सुपरकैट

3

डेविड केसनर सही है। मैं निम्नलिखित जोड़ना चाहूंगा।

  1. 8-बिट MCUs केवल MCUs हैं जो PDIP पैकेजों में आसानी से उपलब्ध हैं, जिन्हें हैंडल करना आसान है और एक प्रोटोटाइप ब्रेडबोर्ड में छड़ी करना आसान है।
  2. 32-बिट MCUs वास्तव में 8-बिट MCU से कम बिजली का उपयोग कर सकते हैं। यह जरूरी नहीं है कि <20 एमएचजेड 8-बिट एमसीयू एक कॉर्टेक्स एम 4 की तुलना में कम बिजली का उपयोग करेगा।
  3. 8-बिट MCU का उपयोग अक्सर शौक से किया जाता है जिन्हें आमतौर पर MCU से बहुत अधिक आवश्यकता नहीं होती है। शायद सरल सी कोड की कुछ सौ लाइनें।

मैं मानता हूं कि इन दिनों 32-बिट MCU का उपयोग नहीं करने का बहुत कम कारण है। मैं उन्हें केवल 2 कारणों से [8-बिट MCUs] का उपयोग करूंगा: मुझे PDIP पैकेज की आसानी पसंद है (कोई सोल्डर आवश्यक नहीं); मुझे अक्सर 8-बिट एमसीयू की पेशकश की तुलना में अधिक शक्ति / जटिलता की आवश्यकता नहीं होती है।

डील ब्रेकर वास्तव में उपलब्ध उपकरण हैं।


प्रोटोटाइप के लिए, एलक्यूएफपी के लिए सॉकेट हैं, जो काफी अच्छी तरह से काम करते हैं। और निश्चित रूप से आप हाथ से LQFP मिलाप कर सकते हैं , बस थोड़ा सा अभ्यास करते हैं। QFN, DFN और BGA मैं हाथ से नहीं मिलाप कर सकते हैं, लेकिन फिर हर एक लो-एंड 32 बिट MCU बाजार पर LQFP के साथ आते हैं।
लंडिन

1

हम एक अपेक्षाकृत अपठनीय Freescale MCF52259, एक 32-बिट ~ 80Mhz सक्षम MCU का उपयोग करते हैं।

पसंद के लिए कारण / विचार प्रक्रिया थी:

  • यह 32-बिट M.Core डिवाइस की जगह ले रहा था, इसलिए पोर्टिंग अपेक्षाकृत सरल थी
  • इसका मतलब यह भी है कि हम मौजूदा आईडीई (कोडवर्ड) से चिपक सकते हैं
  • हमें IO की बहुत आवश्यकता थी: 3 स्टेपर मोटर्स, PWM के 4 चैनल, 3 UART और I2C और SPI पर कदम / दिशा के लिए नियंत्रण।
  • बहुत कुछ चल रहा था (अंतिम बिंदु देखें) और कुछ को समय पर होने की आवश्यकता थी, इसलिए हमें यह सुनिश्चित करने की आवश्यकता थी कि सब कुछ प्राप्त करने के लिए पर्याप्त सीपीयू चक्र थे।
  • विरासत कोड 256k फ्लैश साइज और एम .कोर के 32k रैम के मुकाबले टकरा रहा था, इसलिए फ्लैश और रैम को दोगुना करने से जीवन को जल्दी से जल्दी चलाना और चलाना आसान हो गया।

इन दिनों हार्डवेयर की क्षमताओं (स्टोरेज, स्पीड, आईओ, आदि) को बढ़ाने के लिए मूल्यवान विकास समय खर्च करने के बजाय कोड को मामूली सस्ता / छोटा MCU में निचोड़ने के लिए अनुकूलन या अधिक विस्तार करना (अधिक समीचीन) है। सत्ता बड़े मुद्दे हैं।

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

यदि हम एक लाख बोर्ड का निर्माण कर रहे थे, तो यह लागत-इंजीनियरिंग अभ्यास को चीजों को नीचे करने के लायक बनाने के लिए होगा, लेकिन जैसा कि यह खड़ा है कि यह विकास के समय के लायक नहीं है।

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