प्रोग्रामिंग माइक्रोकंट्रोलर: जेटी, एसपीआई, यूएसबी ओह माय !?


52

मैंने देखा है, माइक्रोकंट्रोलर के संबंध में, उन्हें प्रोग्राम करने के कई तरीके हैं। मैं USB के साथ परिचित हूं क्योंकि मेरे Arduino को USB के माध्यम से प्रोग्राम किया जा सकता है।

JTAG या SPI इंटरफ़ेस क्या है?

अंततः मुझे पता है कि ये इंटरफेस नए निर्देशों के साथ चिप को फ्लैश करने का एक साधन प्रदान करते हैं लेकिन वे कैसे भिन्न होते हैं? क्या एक के बाद एक फायदे हैं?

जवाबों:


39

ATMEGA माइक्रोकंट्रोलर जैसे कि arduino में जो कारखाने से सीधे आ रहे हैं, केवल SPI या JTAG इंटरफ़ेस का उपयोग करके प्रोग्राम किया जा सकता है।

एसपीआई सीरियल पेरिफेरल इंटरफेस के लिए है और यह माइक्रोकंट्रोलर्स के लिए एक दूसरे के साथ या बाहरी दुनिया के साथ संवाद करने का एक तरीका है। इसे कभी-कभी 3-तार भी कहा जाता है क्योंकि यह संचार करने के लिए तीन तारों का उपयोग करता है। एक चिप प्रोग्राम करने के लिए, आपको एक विशेष प्रोग्रामर की आवश्यकता होगी जो चिप को प्रोग्राम करने के लिए SPI लाइनों को चलाने के लिए USB से कमांड पढ़ता है। एक लोकप्रिय एक Adafruit से USBTinyISP लगता है । SPI प्रोग्रामिंग में एक बहुत अच्छा परिचय SparkFun पर है। प्रोग्रामिंग Atmel AVR चिप्स के लिए सबसे लोकप्रिय अनुप्रयोग हैं avrdude (cmd लाइन), ponyprog (नए प्रोग्रामर के साथ काम नहीं करता है) और कुछ मामलों में AVR स्टूडियो (यदि आपका प्रोग्रामर इसका समर्थन करता है)। SPI प्रोग्रामिंग का लाभ यह है कि आप किसी भी Atmel चिप को सीधे कारखाने से प्रोग्राम कर सकते हैं, इसलिए आपको अपनी परियोजनाओं में हमेशा Arduino की आवश्यकता नहीं होगी।

जहाँ SPI "सिर्फ एक और" सीरियल प्रोटोकॉल है, JTAG एक प्रोटोकॉल है जिसे विशेष रूप से माइक्रोकंट्रोलर को प्रोग्राम और डीबग करने के लिए डिज़ाइन किया गया है। नहीं सभी Atmel सूक्ष्म समर्थन JTAG लेकिन Arduino में उपयोग किया जाता है जो करते हैं। JTAG प्रोटोकॉल का उपयोग "सर्किट एमुलेशन" और डीबगिंग जैसी ठंडी चीजों के लिए किया जा सकता है, जिसका अर्थ है कि यह आपके माइक्रोकंट्रोलर में प्रोग्राम की स्थिति को देखने में सक्षम बनाता है, जबकि यह वास्तव में चल रहा है। ऐसा करने के लिए आपको एक विशेष प्रोग्रामर की आवश्यकता होगी। एक और सवाल के लिए मेरा जवाब देखा ।

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


10
इस विचार में सटीक है कि एक धारावाहिक बूटलोडर नए ATMEGA पर उपलब्ध नहीं है (हालांकि यह कई अन्य माइक्रोकंट्रोलरों पर है), SPI या JTAG का उपयोग करने का दावा गलत है। ATMEGAs एक उच्च वोल्टेज समानांतर प्रोग्रामिंग मोड का भी समर्थन करते हैं, जो कुछ फ़्यूज़ सेटिंग्स को ओवर-राइड करने की क्षमता रखता है जो सर्किट-प्रोग्रामिंग के तरीकों को अधिक लोकप्रिय बना देगा। JTAG प्रोग्रामिंग माइक्रो के लिए नहीं बल्कि IO पिन रजिस्टरों में और बाहर मूल्यों को देखते हुए पीसी बोर्डों के परीक्षण के लिए डिज़ाइन किया गया था। इसे प्रोग्रामिंग या डीबगिंग के लिए कोर फ़ंक्शंस में विस्तारित करना बाद में हैक था।
क्रिस स्ट्रैटन

SPI और सिस्टम प्रोग्रामिंग / सीरियल प्रोग्रामिंग अलग हैं। मुझे इस तथ्य के लिए भी इस्तेमाल किया गया था कि कई छोटे Atmega MCU के SPI इंटरफ़ेस पर सीरियल प्रोग्रामिंग पिन थे, लेकिन मुझे इस तथ्य से काट दिया गया था, कि कुछ बड़े Atmega MCUs पर, सीरियल प्रोग्रामिंग पिन SPI इंटरफ़ेस पर नहीं थे।
उत्सव

30

जबकि मैं उपलब्ध विभिन्न प्रोग्रामिंग विधियों में गोता लगाना पसंद करूंगा, किसी और के पास पहले से ही है। यहाँ AVRFreaks, AVR प्रोग्रामिंग विधियों पर डीन कैमरा का ट्यूटोरियल है :

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

विधि 1: सिस्टम प्रोग्रामिंग (ISP) में

समर्थित द्वारा: AVRs के विशाल बहुमत (नीचे के पद देखें)
समर्थित प्रोग्रामर: AVRISP MKI / II, JTAG MKII, STK500, STK600, ड्रैगन, AVRISP क्लोन, AVR9P प्रोग्रामर, AVRONE

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

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

ISP के लिए आवश्यक है कि लक्ष्य AVR ISP घड़ी के कम से कम चार बार क्लॉक रेट पर चल रहा हो। यह एक आम नुकसान है और AVRs के लिए कई नए भ्रम का स्रोत है।

विधि 2: जेटीजी

समर्थित द्वारा: MKR और MKII डिवाइस समर्थन के लिए AVRStudio उपकरण सहायता देखें
समर्थित प्रोग्रामर: JTAG-ICE, JTAG-ICE MKII, ड्रैगन, JTAG-ICE क्लोन, AVRONE, ST600 (केवल प्रोग्रामिंग)

तकनीकी रूप से JTAG एक डिबगिंग सिस्टम है, न कि प्रोग्रामिंग पद्धति। फिर भी, JTAG इंटरफ़ेस एक AVR की प्रोग्रामिंग के लिए अनुमति देता है जो इसका समर्थन करता है।

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

ATMEL की आधिकारिक JTAG-ICE इकाइयों को JTAG-ICE MKII द्वारा अधिगृहीत किया गया है, जो AVR रेंज डीबगवायर डीबगिंग प्रोटोकॉल के साथ-साथ ISP विधि (ऊपर देखें) के माध्यम से प्रोग्रामिंग में नए और अधिक व्यापक रूप से समर्थित है।

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

विधि 3: डिबगवायर

समर्थित द्वारा: कई छोटे AVRs
समर्थित प्रोग्रामर: JTAG-ICE MKII, ड्रैगन, AVRONE

फिर से डिबगवायर एक प्रोग्रामिंग इंटरफ़ेस के बजाय एक डीबगिंग है, लेकिन इसका उपयोग कार्यक्रमों में समर्थित AVR में लोड करने के लिए किया जा सकता है। DW इंटरफ़ेस सभी संचारों के लिए एक एकल AVR पिन (/ RESET लाइन) का उपयोग करता है, जिससे यह कम-पिन गणना AVR उपकरणों के लिए आदर्श होता है।

विधि 4: बूटलोडर

द्वारा समर्थित: अधिकांश नए AVRs
समर्थित प्रोग्रामर: N / A

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

बूटलोडर्स सीमित हैं कि वे फ्लैश स्पेस का उपभोग करते हैं (एवीआर के आवेदन के लिए उपलब्ध फ्लैश के आकार को सीमित करते हुए) और वे एवीआर फ्यूसेबिट्स को बदलने में असमर्थ हैं।

बूटलोडर्स व्यापक रूप से डाउनलोड के लिए इंटरनेट पर उपलब्ध हैं, लेकिन वे "चिकन और अंडा" समस्या से पीड़ित हैं; पहली जगह में बूटलोडर में प्रोग्राम करने के लिए आपको दूसरे प्रकार के प्रोग्रामर की आवश्यकता है। यह आमतौर पर एक साधारण समानांतर पोर्ट डोंगल (ISP अनुभाग देखें) के निर्माण या एक बूटलोडर (जैसे AVRButterfly बोर्ड) के साथ पहले से लोड किए गए AVR की खरीद के द्वारा हल किया जाता है।

विधि 5: उच्च वोल्टेज समानांतर प्रोग्रामिंग (HVPP)

द्वारा समर्थित: अधिकांश गैर-टिन AVR (अपवादों के साथ)
समर्थित प्रोग्रामर: STK500, STK600, ड्रैगन, होमब्रे डोंगल, AVRONE

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

STK500 और ड्रैगन दोनों HVPP का समर्थन करते हैं। एचवीपीपी के दौरान, लक्ष्य / RESET पिन को 12V के असामान्य रूप से उच्च मूल्य पर उठाया जाता है जो आंतरिक समानांतर प्रोग्रामिंग सर्किटरी को संलग्न करता है। / RESET पिन AVR (HVPP समर्थित AVRs पर) का एकमात्र पिन है जिसे सुरक्षित रूप से इस स्तर तक उठाया जा सकता है।

आप इस तरह की ऑनलाइन योजनाओं का उपयोग करके अपना खुद का एचवीपीपी डोंगल बना सकते हैं।

विधि 6: हाई वोल्टेज सीरियल प्रोग्रामिंग (एचवीएसपी)

द्वारा समर्थित: कई छोटे AVR (अपवादों के साथ)
समर्थित प्रोग्रामर: STK500, STK600, ड्रैगन, होमब्रे डोंगल, AVRONE

एचवीएसपी एचवीपीपी के समान है, सिवाय इसके कि डेटा ट्रांसफर को क्रमबद्ध रूप से समानांतर रूप से किया जाता है। यह वैकल्पिक प्रोग्रामिंग विधि है जिसका उपयोग कई टिन श्रृंखला AVRs पर किया जाता है जिनके पास HVPP के लिए पर्याप्त पिन की कमी होती है।

विधि 7: पीडीआई

समर्थित द्वारा: XMEGA AVRs
समर्थित प्रोग्रामर: STK600, AVRONE, JTAG MKII, ड्रैगन, AVRISP MKII

एवीआर के एक्समेगा लाइन के लिए पीडीआई डीबगवायर प्रोटोकॉल पर आधारित नया प्रोग्रामिंग इंटरफेस है। यह वर्तमान में किसी भी अन्य 8-बिट AVR माइक्रोकंट्रोलर पर उपयोग नहीं किया जाता है।

विधि 8: टीपीआई

द्वारा समर्थित: 6-पिन टिनि AVR (ATTINY10, आदि)
समर्थित प्रोग्रामर: STK600, ड्रैगन, AVRISP MKII

टीपीआई सीमित पिन के साथ AVRs की नई टिन लाइन के लिए एक बहुत ही छोटा प्रोग्रामिंग इंटरफ़ेस है, जैसे 6 पिन ATTINV10। DW की तरह, TPI डिवाइस / / RESET लाइन का उपयोग संचार इंटरफेस के हिस्से के रूप में करता है, लेकिन इसमें समानता समाप्त होती है। चूंकि पिंट के आकार के टिनी एवीआर में ऑन-चिप डिबगिंग सर्किट की कमी होती है, इसलिए टीपीआई प्रोटोकॉल आधे-द्वैध प्रोटोकॉल में तीन पिनों के नए प्रोग्रामिंग इंटरफ़ेस का उपयोग करता है। क्योंकि डिवाइस के RSTDSB पिन सेट होने पर प्रोग्रामिंग के लिए / RESET लाइन को + 12V तक उठाना पड़ता है, यह वर्तमान में केवल नए STK600 प्रोग्रामिंग बोर्ड द्वारा समर्थित है।

बोनस पूछे जाने वाले प्रश्न अनुभाग!

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

  2. मैंने एक समानांतर पोर्ट डोंगल बनाया है। क्या मैं इसे AVRStudio के साथ उपयोग कर सकता हूं?
    मुझे डर नहीं लग रहा है। AVRStudio किसी भी "गूंगा" डोंगल के साथ इंटरफ़ेस नहीं कर सकता है - इसके लिए एक स्मार्ट प्रोग्रामिंग डिवाइस की आवश्यकता होती है - जिसमें एक माइक्रोकंट्रोलर होता है - जो संचार प्रोटोकॉल को भेजता है। एक माइक्रोकंट्रोलर के बिना सरल डोंगल को "बिट-बैंग" होना चाहिए (यानी! कंप्यूटर के माध्यम से डोंगल के माध्यम से उपयुक्त उचित संकेत।

  3. तो मेरे डोंगल बेकार है?
    नहीं। आप थर्ड पार्टी प्रोग्रामिंग सॉफ्टवेयर टूल के साथ होम मेड डोंगल के जरिए भी प्रोग्राम कर सकते हैं। AVRDude एक अच्छी, ज्ञात, मुफ्त कमांड लाइन उपयोगिता है - और यह WinAVR पैकेज के साथ शामिल है।

  4. यदि मेरे प्रोग्रामर AVRStudio के साथ काम करना चाहते हैं तो मेरे पास क्या विकल्प हैं?
    एक प्रोग्रामर चुनें जो एक AVRStudio- समर्थित प्रोटोकॉल का उपयोग करता है। यह सरल "AVR910" प्रोटोकॉल (पदावनत) या STK500 / AVRISP द्वारा प्रयुक्त प्रोटोकॉल का एक कस्टम कार्यान्वयन हो सकता है। ध्यान दें कि इन प्रोग्रामर्स को उनमें एक माइक्रो कंट्रोलर की आवश्यकता होती है, जिससे कैच -22 स्थिति पैदा होती है। उपयुक्त फर्मवेयर के साथ खरीद के समय प्रोग्रामर के AVR पूर्व-क्रमादेशित होने या AVR पूर्व-प्रोग्रामर के साथ बूटलोडर के साथ होने से इसे हल किया जा सकता है।

  5. ठीक है, मैं एक बूटलोडर का उपयोग करना चाहता हूं। मैं इसे पहली जगह में कैसे प्राप्त करूँ?
    किसी AVR में बूटलोडर का उपयोग करने के लिए, आपको सबसे पहले बूटलोडर को प्रोग्राम करना होगा। यदि आपके पास कोई मौजूदा प्रोग्रामर नहीं है (यहां तक ​​कि एक साधारण गूंगा डोंगल प्रारंभिक प्रोग्रामिंग के लिए पर्याप्त होगा), तो आप वैकल्पिक रूप से एवीआर के साथ पूर्व-क्रमबद्ध खरीद सकते हैं। कई आपूर्तिकर्ताओं से बूटलोडर।
    Atmel भी बटरफ्लाई डेमो बोर्ड बनाती है, जिसका MEGA169 AVR AVR-Studio संगत बूटलोडर के साथ प्री-लोडेड आता है।

  6. मदद! मैंने फ़्यूज़ के साथ खिलवाड़ किया है और ISP का उपयोग करते समय अपने AVR को पछाड़ दिया है! सबसे आम गलती घड़ी चयन फ़्यूज़ को अमान्य सेटिंग में बदल रही है। AVR के XTAL1 पिन पर एक बाहरी घड़ी लगाने की कोशिश करें और देखें कि क्या मदद करता है।
    असफल होना, यदि संभव हो तो उच्च-वोल्टेज विधियों में से एक का उपयोग करें। ये किसी भी ग़लतफ़हमी को ठीक कर देंगे, जिसमें घड़ी का स्रोत भी शामिल होगा क्योंकि उच्च-वोल्टेज विधियाँ प्रोग्रामिंग के लिए AVR को अपनी स्वयं की घड़ी प्रदान करती हैं।

  7. मैं अपने प्रोग्रामर के साथ कैसे इंटरफेस करूं?
    आप अपने प्रोग्रामर के साथ इंटरफेस करने के लिए किस सॉफ्टवेयर का उपयोग करते हैं, यह आपके द्वारा उपयोग किए जा रहे प्रोग्रामर के प्रकार पर निर्भर करता है।
    सरल "गूंगा" डोंगल को पोनीप्रोग या एवीआरडूड जैसे तीसरे पक्ष के सॉफ़्टवेयर की आवश्यकता होती है। ये कमांड लाइन या GUI उपकरण हो सकते हैं - वेब पर चारों ओर देखें और आप अपनी आवश्यकताओं को पूरा करने के लिए एक को ठीक करेंगे।
    AVR910 प्रोटोकॉल के आधार पर प्रोग्रामर और बूटलोडर्स का उपयोग AVRStudio के भीतर किया जा सकता है। टूल मेनू से, अपने प्रोग्रामर के साथ इंटरफ़ेस करने के लिए GUI स्क्रीन खोलने के लिए "AVRProg" विकल्प चुनें। एक विकल्प के रूप में, AVRDude जैसे तीसरे पक्ष के उपकरण भी AVR910 संगत हैं।
    आधिकारिक उपकरण कसकर AVRStudio में एकीकृत होते हैं, विशेष रूप से डिबगिंग वेरिएंट (JTAG / Dragon / etc) के मामले में। AVRStudio टूल मेनू से, "प्रोग्राम AVR ..." सबमेनू चुनें और "कनेक्ट" आइटम पर क्लिक करें। नई विंडो से, अपने टूल और उसके कनेक्शन इंटरफेस का चयन करें और ठीक पर क्लिक करें।
    जैसा कि गूंगा डोंगल और AVR910 प्रोग्रामर के साथ होता है, आधिकारिक उपकरण का उपयोग थर्ड पार्टी प्रोग्रामिंग सॉफ्टवेयर के साथ भी किया जा सकता है।

(सी) डीन कैमरा, 2009. सभी अधिकार सुरक्षित। बिना किसी पूर्व अनुमति के AVRFreaks.net के अलावा किसी भी वेबसाइट पर प्रजनन के लिए नहीं।

पुनर्त्पादित साथ निश्चित रूप से पहले स्पष्ट अनुमति,!


5

मैं चर्चा में एक और बात जोड़ना चाहूंगा।

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

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

जब शिक्षण मैं शिक्षण को सबसे महत्वपूर्ण कार्यों में से एक इंटरफेस के बारे में विचार करता हूं।

सामुदायिक विकि उन लोगों के लिए उपलब्ध है जो मेरी जानकारी पर विस्तार करना चाहते हैं।


2
मैंने कभी नहीं सुना है कि I2C को एक माइक्रोकंट्रोलर पर एक देशी फ्लैश प्रोग्रामिंग इंटरफ़ेस के रूप में इस्तेमाल किया जा रहा है, हालांकि इसका कोई कारण नहीं है कि मैं बूटलोडर के लिए प्रवेश बिंदु नहीं हो सकता हूं ...
vicatcu

@vicatcu, मैं इसे बहुत सामान्य इंटरफ़ेस के रूप में जोड़ रहा था।
कोर्तुक

3

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

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

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


2

जैसा कि आप सीरियल, स्पि (2 वायर, 3 वायर?), यूएसबी, जेटीएजी, एसडीडी आदि का उल्लेख करते हैं, सभी का उपयोग किया जाता है।

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

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

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

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

Jtag टूल में हजारों डॉलर खर्च होते थे, अब वे न ही $ 15 के लिए, आप एक ftdi ब्रेकआउट बोर्ड प्राप्त कर सकते हैं और ओपनकॉड के साथ इसका पुन: उपयोग कर सकते हैं। $ 50 प्लस या माइनस के लिए कुछ आप एक ftdi आधारित usb समाधान प्राप्त कर सकते हैं जो ओपनऑक के साथ बॉक्स से बाहर काम करता है। आप $ 75- $ 80 के लिए एक गैर-वाणिज्यिक जे-लिंक प्राप्त कर सकते हैं। और फिर बहु ​​हजार डॉलर वाले हैं जो तेज हैं, निश्चित रूप से लेकिन सामान्य रूप से पैसे के लायक नहीं हैं। आप उन्हें खरीदते हैं जब आप एक बहुत बड़ा निगम होते हैं जिसके पास बहुत सारी नकदी होती है और आप सहायता के लिए भुगतान करना चाहते हैं। जब आप उन कीमतों का भुगतान करते हैं जो आपको मनचाहा उत्पाद मिलता है और आपको तुरंत तकनीकी सहायता के सवालों के जवाब मिलते हैं। उदाहरण के लिए मुफ्त लिनक्स बनाम विंडोज़ या आरएचईएल की तरह, लिनक्स समर्थन मुफ़्त है लेकिन आपको जो मिलता है वह आपको मिलता है। वैसे भी यह jtag को और अधिक आकर्षक बनाता है,

जब और जहां सस्ती हो, तो आपको अपने डिबगिंग और विकास शस्त्रागार jtag टूल में होना चाहिए। स्पार्कफुन में सीरियल बोर्ड के लिए एफडीआई आधारित यूएसबी है और एफडीटीआई भागों को बड़े बैंगरों में पुनर्निर्मित किया जा सकता है, आप इन्हें स्पाई या आई 2 सी या पीडी या जेटीजी या अन्य इंटरफेस के लिए उपयोग कर सकते हैं। आदर्श रूप से उन बोर्डों को प्राप्त करना जो बस / भाग के लिए बने होते हैं, जिसमें आप रुचि रखते हैं और इसके साथ जाने वाले मुक्त / खुले स्रोत सॉफ़्टवेयर का उपयोग कर रहे हैं। इन धारावाहिक बोर्डों का उपयोग करते हुए, आदर्श रूप से 3.3V और 5V (लगभग $ 15 प्रत्येक की आप लिलीपैड्स और अर्डिनो मिनिस, आदि के लिए उपयोग करते हैं) की आपूर्ति करते हैं, जो विभिन्न प्रकार के सीरियल प्रोटोकॉल के लिए सीरियल पोर्ट से जुड़ने के लिए होते हैं। मुझे अपना खुद का लोडर उन प्रोटोकॉल के आधार पर लिखना आसान लगता है, जो कि arduino / avr लोगों की तरह हैं जहाँ बूटलोडर स्रोत प्रकाशित होता है और माना जाता है कि वे जिस मानक का समर्थन करते हैं उससे काफी उपसमुच्चय है। YMMV।

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

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