एक माइक्रोकंट्रोलर में फ्लैश का आकार चुनने में मदद चाहिए


9

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

मेरे पास निम्नलिखित प्रश्न हैं:

  1. क्या माइक्रो कंट्रोलर के लिए रैम और फ्लैश साइज तय करने के संबंध में कोई दिशा-निर्देश या मानक प्रथाएं हैं?
  2. MCU पर कोड की कितनी लाइनें (C) फ्लैश की मात्रा का अनुवाद करती हैं?
  3. क्या असेंबली लैंग्वेज एकमात्र तरीका है अगर फ्लैश साइज को कम से कम रखा जाए?

किसी प्रोजेक्ट के लिए माइक्रो कंट्रोलर के सामान्य चयन के बारे में, इस क्षेत्र के पेशेवर कार्य के लिए सबसे उपयुक्त माइक्रो कंट्रोलर का निर्णय कैसे लेते हैं? वे किन संसाधनों की खोज करते हैं? वे किस दिशा-निर्देश का पालन करते हैं?

जवाबों:


7

आपके सभी सवालों के जवाब इस बात पर निर्भर करेंगे कि आप क्या करना चाहते हैं।

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


माना। कुछ बड़े से शुरू करें, और फिर यदि आवश्यक हो तो अपने अंतिम आवश्यकताओं को पूरा करने वाले सबसे छोटे हिस्से को दें।
W5VO

"सबसे बड़ी" के साथ योग्य होने की आवश्यकता है "श्रृंखला में आप लक्ष्य कर रहे हैं"। उन परिधीयों को ढूंढें जिनकी आपको आवश्यकता है, और जिस गति वर्ग की आपको आवश्यकता है, एक आर्किटेक्चर / परिवार चुनें, और फिर उस परिवार में सबसे बड़े प्रोसेसर के साथ विकसित करें। फ्लैश के 512kB और RAM के 64kB के साथ कुछ शुरू न करें क्योंकि यह सबसे बड़ा माइक्रोकंट्रोलर है जिसे आप पा सकते हैं; इससे पहले कि आप आकार के बारे में चिंता करना शुरू कर दें, कॉर्टेक्स-एम 3 बनाम एवीआर बनाम PIC18 बनाम MSP430 (उदाहरण के लिए) के लिए इसे संकीर्ण करें। मुझे संदेह है कि डैनियल ने यह उम्मीद की थी, लेकिन सिर्फ यह सोचा था कि इसे कहीं और कहा जाना चाहिए।
केविन वर्मेयर

7

जहाँ तक msp430 की बात है, यह एक अच्छा वास्तुशिल्प है, इस विषय के लिए mspgcc और mspgcc4 और llvm में बहुत अच्छे उपकरण हैं। बिना थैली के बिनुतिल। आप उस कीमत पर $ 5 के तहत एक लॉन्चपैड प्राप्त कर सकते हैं, कुछ खरीद सकते हैं (अंततः आप किसी चीज को छोटा या छोटा कर देंगे और इसे पिघला देंगे, एक स्पेयर, इस कीमत पर एस्प) ...

उपकरण डाउनलोड करें, वे सभी मुफ़्त हैं, कोड की कुछ पंक्तियाँ लिखें, इसे लिंक करना सीखें, देखें कि बाइनरी कितनी बड़ी हो जाती है, एम्बेडेड के लिए एक भावना प्राप्त करें, कोड से लेकर रोम आकार की रेखाएं आदि।

कैसे करते हैं। बस हर तरह से आप कल्पना कर सकते हैं:

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

कभी-कभी ठेकेदार / पसंदीदा ग्राहक प्लेटफ़ॉर्म तय करता है, कभी-कभी आप शिक्षित / बातचीत कर सकते हैं, कभी-कभी नहीं।

कुछ लोगों को बस एक पसंदीदा, अज्ञात का डर है, जो भी हो। यही कारण है कि कुछ लोग केवल एक ब्रांड की कार खरीदते हैं, क्योंकि मेरे पिताजी ने किया था और उनके पिता ने उससे पहले किया था, और यह पूरी वजह हो सकती है।

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

कुछ मामलों में यह उपकरणों के बारे में है, लेकिन एक अलग तरीके से, समय के साथ आपने एक विक्रेता के साथ वार्षिक समर्थन अनुबंध में बहुत पैसा लगाया होगा (उदाहरण के लिए हाथ या xilinx या motorola) और यह हो सकता है कि आपको उनका समर्थन पसंद आया हो और न ही आप को बदलना चाहते हैं या शैतान को आप जानते हैं कि आप शैतान से बेहतर नहीं हैं। या ऐसा हो सकता है क्योंकि कंपनी में अन्य 5 सक्रिय परियोजनाएं इस चीज का उपयोग करती हैं और हमारे पास पहले से ही एक समर्थन अनुबंध है और उस वर्ष के लिए भुगतान करना जारी रखेगा, वर्ष के बाद आपको उन विक्रेताओं के समाधानों में से एक का चयन करना होगा।

कभी-कभी यह सहस्राब्दी को बचाने के बारे में है। यह हिस्सा उस हिस्से की तुलना में 1.5% सस्ता है, इसे इस हिस्से के साथ काम करें, एनआरई की परवाह न करें, मात्रा में निर्माण बचत के बारे में सोचें।

कभी-कभी यह नकारात्मकता के बारे में होता है। एक विक्रेता ने आपकी कंपनी को एक या दूसरे तरीके से खराब कर दिया होगा। आपके उत्पादों की देरी या रद्द करने वाले भागों की विज्ञापित आपूर्ति को पूरा करने में विफलता। बैट और स्विच घोटाले (सॉफ़्टवेयर के लिए $ 50,000 शुल्क में लाइसेंस अनलॉक करने के लिए आवश्यक डोंगल के लिए $ 1200 शुल्क शामिल नहीं था, यह एक अतिरिक्त लागत आइटम है। ओह और यह अस्थायी लाइसेंस के लिए प्रति उपयोगकर्ता था)। एक बार जब आप प्रोग्रामर संदर्भ मैनुअल या संदर्भ डिजाइन गाइड देखने के लिए एनडीए पर हस्ताक्षर करते हैं, तो आपको पता चलता है कि उनकी इंजीनियरिंग कितनी खतरनाक है और आप जीवन के लिए उनके सभी उत्पादों को ब्लैकलिस्ट करने का विकल्प चुन सकते हैं। भयानक तकनीकी सहायता के साथ पिछला इतिहास। किसी भी कारण से आप अपनी बिक्री के लोगों को सामने के दरवाजे पर कभी भी अनुमति नहीं दे सकते हैं, या आपको उनकी वेबसाइट पर फिर से देखने से रोक सकते हैं।

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

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

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

यहां तक ​​कि अगर आप न तो बाहर जा सकते हैं और न ही उस तरह के पैसे को हार्डवेयर पर खर्च कर सकते हैं, तो ज्यादातर में ऐसे उपकरण होते हैं, जिन्हें आप (मुफ्त में) डाउनलोड कर सकते हैं, माइक्रोचिप जैसे मामलों में अब आप सी कंपाइलर (हाई-टेक हुआ करते थे) ले सकते हैं लेकिन सदस्यता लें (अपना ईमेल पता दें)। इसे पसंद करें या नफरत करें यह आपके भविष्य, डेस्कटॉप या एम्बेडेड में होगा, अपने हाथों को गंदा करें और इसे क्रॉस कंपाइलर के रूप में उपयोग करना सीखें। Llvm भी आज़माएं, यह थोड़ी देर के लिए होगा और gcc को कुछ गंभीर प्रतियोगिता देगा। वैसे भी कुछ एमुलेटर लिखते हैं या पाते हैं, mame के बहुत से हैं, gdb के पास कुछ हैं, आदि मैंने लिखा है, एक को थंबुलेटर कहा जाता है github, ARM थंब मोड केवल, एक कोर्टेक्स- m3 के समान है, सिवाय इसके कि मैं thumb2 का समर्थन नहीं करता (अभी भी थोड़ा बहुत सीख सकता हूँ) और प्रोग्राम केवल हार्डवेयर पर स्विच करने से पहले दोनों पर चलते हैं)। मैं एक msp430 एमुलेटर को मार डाला, लेकिन थोड़े उस पर ठप हो गया। निर्देश सेट इतना छोटा है कि काम का थोक एक शाम या शायद एक शनिवार की परियोजना है। वही PIC के लिए जाता है, एक लंबी दोपहर और आपके पास एक निर्देश सेट सिम्युलेटर है जिसके साथ एम्बेडेड अभ्यास करना है। यदि और कुछ नहीं तो आप केवल इस बात को महसूस करने के लिए प्रोग्राम कंपाइल कर सकते हैं और लिंक कर सकते हैं कि कैसे करें और कितना बड़ा प्रोग्राम समाप्त हो रहा है, कैसे प्रोग्राम को ट्यूनर कोड बनाने के लिए ट्यून करें, आदि।

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

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

यदि आप प्रति यूनिट कीमत पर उस 10-20% को बचाना चाहते हैं और 64KB फ़्लैश भाग के बजाय सस्ता / धीमा माइक्रोकंट्रोलर या थरथरानवाला, या 32Kb फ़्लैश भाग खरीदना चाहते हैं और बिक्री की मात्रा के साथ विकास लागत को कवर कर सकते हैं, और शायद अन्य चीजों की एक लंबी सूची आप बहुत अच्छी तरह से असेंबलर, तेज, कम बिजली, कम लागत, खुश ग्राहकों को लिखने के लिए चुन सकते हैं।

अब तक की आपकी पृष्ठभूमि के आधार पर, शायद आपको सभी असेंबलर में लिखने के बारे में चिंता करनी चाहिए और शायद माइक्रोकंट्रोलर्स के साथ एम्बेडेड के इलेक्ट्रिकल इंजीनियरिंग पहलुओं के बारे में, योजनाबद्ध तरीके से पढ़ना, यह जानना कि कलेक्टर, ट्राई स्टेट, पुश पुल, pwm, adc, dac, और क्या है अन्य शर्तों की लंबी सूची और उनका उपयोग कैसे करें। बिट पीटने i2c, spi, mdio, डलास एक तार, आदि एक सॉफ्टवेयर डिबगर के रूप में एक गुंजाइश का उपयोग करना। भले ही आज स्कोप्स आपके लिए चीजों को उजागर कर सकते हैं (एक अतिरिक्त लागत वाली वस्तु), आपको आईईएल 2 आई और स्पाई और कुछ अन्य प्रोटोकॉल पर प्रकाश डाला बिना सक्षम होना चाहिए।

मैं यह भी सलाह देता हूं कि आपके द्वारा खेले जाने वाले प्रत्येक प्लेटफ़ॉर्म के लिए, किसी से बाहर निकलता है सैंडबॉक्स (Arduino ide / प्रोग्रामिंग वातावरण उदाहरण के लिए)। बूट कोड लिखें जो प्रोसेसर को आपके मुख्य () प्रोग्राम में रीसेट करता है, जितना संभव हो उतना समझें कि फ्लैश को उस बिंदु पर लोड / प्रोग्राम कैसे करें जो शेल्फ के होते हुए भी आपके खुद के लोडर को लिख सकता है। वहाँ। यह सभी व्यक्तिगत शिक्षा के बारे में है, जितना अधिक आप जानते हैं और अपनी पीठ की जेब से बाहर निकाल सकते हैं और अपने करियर पर अधिक नियंत्रण का उपयोग करेंगे और अपने पेचेक पर संख्या के अंत में अधिक शून्य होगा।

आप जो भी करते हैं, वह नहीं करते हैं, एक डेस्कटॉप पर अपने पहले असेंबलर के रूप में x86 सीखने की कोशिश करें, बहुत अधिक कुछ और चुनें और संकलित करें और अनुकरण करें, एआरएम, THUMB, MSP430, PIC, AVR, यहां तक ​​कि 6502, 8051. x86 एक भयानक निर्देश है सेट और एक परिणाम के रूप में इतने सारे तरीके से आकार और आकार दिया गया है, माइक्रोकोड, माइक्रोकोड नहीं, मल्टी कोर, ऑन और ऑन। उच्च स्तरीय भाषाओं और भारी ऑपरेटिंग सिस्टम के लिए x86 रखें। अपने पाठ संपादक और संकलक के लिए इसका उपयोग करें और कुछ और लक्ष्य करें।

लंबे उत्तर के लिए क्षमा करें ... आशा है कि यह मददगार था।


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

1
लंबाई के बावजूद मुझे यह उत्तर बहुत अच्छा लगता है
सरक

3

आपकी परियोजना के लिए फ्लैश / रैम आवश्यकताओं को निर्धारित करने का सबसे अच्छा तरीका एक प्रोटोटाइप का निर्माण करना और इसे मापना है।

एक पीसी पर कोर एल्गोरिदम को लागू करें और ऑब्जेक्ट कोड और रैम उपयोग के आकार की गणना करें। यह आपको काम करने के लिए बॉलपार्क का आंकड़ा देगा।

यदि आप ऑपरेटिंग सिस्टम सुविधाओं जैसे कि stdio या मेमोरी मैनेजमेंट पर भरोसा कर रहे हैं, तो अपने बजट में और अधिक जोड़ना न भूलें।

संकलित कोड आकार की लाइनों की तुलना करने का कोई सीधा तरीका नहीं है। लेकिन, आप कोड घनत्व के संदर्भ में प्रोसेसर आर्किटेक्चर की तुलना कर सकते हैं।


3

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

किसी कार्य के लिए सबसे उपयुक्त MCU? आपको कितने एडीसी चैनलों की आवश्यकता है? DAC के बारे में क्या? आपके आवेदन में क्या अधिक महत्वपूर्ण है: प्रदर्शन या कम शक्ति? क्या विशिष्ट MCU का चयन करते समय इस तरह के प्रश्नों का उत्तर देना होता है।


3

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


0

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

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

IME फ़्लैश आकार अब एक बड़ा लागत कारक नहीं है, यहां तक ​​कि पिंस की संख्या भी एक कारक से कम नहीं है, रैम आकार सबसे बड़ा लागत चालक लगता है।

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