क्या Arduino के साथ JTAG इंटरफ़ेस बनाना संभव है?


14

यदि हां, तो क्या कोई मुझे ऐसी साइट पर ले जा सकता है जो बताती है कि यह कैसे करना है? मेरा मानना ​​है कि मुझे एक रास्ता मिल गया है , लेकिन मैं इस बात के लिए अनिश्चित हूं कि यह अभी तक काम करेगा या नहीं (इसे जांचने के लिए कुछ खोजने की जरूरत है)।

यह प्रश्न यहां स्थित मेरे पिछले प्रश्न से संबंधित है।

मामले में अधिक पृष्ठभूमि की जानकारी की आवश्यकता है।


JBailey मैं सिर्फ arduino का उपयोग कर एक JTAG-यूएसबी कनवर्टर बनाने के लिए के बारे में अपने प्रश्न में आए और मैं सोच रहा था कि कैसे आप बाहर किया \?

जवाबों:


14

हां, Arduino को ARM JTAG एडॉप्टर में बदलना संभव है।

तीन समस्याएं हैं, वोल्टेज, गति और ड्राइवर।

Arduino मूल रूप से 5V पर चलता है। अधिकांश एआरएम माइक्रोकंट्रोलर अपने जेटी पिन पर 5 वी सहिष्णु नहीं हैं और उन्हें 3.3 वी की आवश्यकता है। सबसे आसान उपाय है कि आप अपने Arduino को 3.3V पर चलाएं, यह असफल होने पर कि आपको किसी प्रकार के स्तर रूपांतरण की आवश्यकता होगी (देखें I2C 3.3 से 5.0 V विचारों के लिए रूपांतरण )।

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

JTAG एक उच्च स्तरीय प्रोटोकॉल है, जो प्रत्येक प्रोसेसर परिवार के लिए विशिष्ट है, जो डेटा का आदान-प्रदान करने के लिए एक SPI जैसे इंटरफ़ेस का उपयोग करता है। अधिकांश JTAG डोंगल बस USB पर एक SPI इंटरफ़ेस प्रदान करते हैं, फिर बाकी के काम को एक पीसी एप्लिकेशन पर छोड़ देते हैं। OpenOCD और URJTag लोकप्रिय विकल्प हैं। आपको अपने Arduino JTAG प्रोटोकॉल के लिए इनमें से किसी एक में ड्राइवर की आवश्यकता होगी।

बस समुद्री डाकू Arduino (कम गति microcontroller + FTDI चिप) के समान है। यह ओपनओसीडी के साथ जेटीजी का समर्थन करता है , इसलिए यह निश्चित रूप से संभव है।

यदि आप एक Teensy / Opendous या अन्य AVR-USB बोर्ड का उपयोग करते हैं, तो आप eStick-JTAG का उपयोग कर सकते हैं ।

लेकिन, JTAG की खोई हुई लागत के लिए, मैं FTDI2232 आधारित डोंगल में से एक की सिफारिश करूंगा। वे ओपनओसीडी द्वारा सस्ते और अच्छी तरह से समर्थित हैं।


5

यह संभव है लेकिन बहुत मुश्किल है। मुझे FTDI आधारित JTAGs पसंद नहीं हैं, क्योंकि FTDI चिप्स तैयार ब्लैक बॉक्स हैं और कोई भी वास्तव में उनका उपयोग करके नहीं सीखता है।

अगर मैं AVR के साथ USB-JTAG बनाना चाहता था, तो मुझे चिप में कम से कम USB फुल स्पीड सपोर्ट के साथ मिलेगा। फिर AVR usb स्टैक (c स्रोत कोड) प्राप्त करें और एक usb-to सीरियल उदाहरण देखें। चूंकि usb पर बिटबैंगिंग एक बुरा विचार (उच्च विलंबता) है, इसे उच्च स्तरीय कमांड में परिवर्तित करने की आवश्यकता होती है जो MCU को बिटबैंगिंग स्वयं करने का निर्देश देगा (या यदि संभव हो तो SPI का उपयोग करें) और usb पर उच्च स्तरीय परिणाम लौटाएं (पूर्ण बाइट्स) )। लेकिन फिर आईडीई के लिए ड्राइवरों को लिखने की जरूरत है ताकि नए जेटीएजी डिवाइस का समर्थन किया जा सके। OpenOCD और URJTag में कई jtag डिवाइसों के लिए ड्राइवरों का स्रोत कोड है, इसलिए आपको अपने नए आविष्कार किए गए डिवाइस के लिए एक प्राप्त करने और फिर से काम करने की आवश्यकता होगी। देखें कि कुछ लोगों ने समान काम कैसे किया है: http://code.google.com/p/estick-jtag/


1

खुलेआम देखो। बैकेंड ज्यादातर समानांतर पोर्ट बिट बैंग दृष्टिकोण के आसपास आधारित होते हैं, मुझे लगता है कि यह एक बार में केवल एक बिट को बदलने के लिए इतनी दूर जाता है। यह लेना काफी सरल है कि मुझे क्या लगता है कि वे डमी बैकेंड कहते हैं जो एक उदाहरण है। Arduino को जो भी बिट बिट कमांड भेजें, और उस बिट को सेट या क्लियर करें। जब इनपुट बिट को पढ़ने के लिए कहा जाता है, तो उस कार्य को करने और परिणाम वापस करने के लिए arduino को एक कमांड भेजें।

मैंने सफलता के साथ ऐसा ही किया है, लेकिन एक आर्दीनो के साथ नहीं, मैंने एक होस्ट से एक खुले हाथ कोर में एक एचडीएल सिम्युलेटर में चल रही ओपनोकैड बात की थी।

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

जैसा कि पहले से ही जॉबी ने नोट किया है, आपको वोल्टेज के साथ सावधान रहने की जरूरत है (सभी arduino जायके 5V नहीं हैं और सभी आर्म कंट्रोलर 3.3 वोल्ट नहीं हैं) और संकेत कंडीशनिंग और ग्राउंडिंग और उस सभी सामान। यदि आपके लक्ष्य बोर्ड को एक आपूर्ति द्वारा संचालित किया जाता है जो कि आप दोनों के साथ जुड़ने पर कुछ नीचे पिघल सकता है, तो आप अपने arduino के साथ बिजली की तुलना में एक अलग स्तर पर हैं।


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

1

यह संभव है, और मैंने वास्तव में इसे लागू किया और यहां सब समझाया ।

वहाँ GitHub पर एक पुस्तकालय है यहाँ कार्यक्रम है कि arduino और एक अजगर स्क्रिप्ट है कि Arduino के लिए XSVF फ़ाइलों भेजता है पर रन: कि दो हिस्से होते हैं।

5 V को 3.3 V में बदलने के लिए आपको कुछ प्रतिरोधों की आवश्यकता होगी, क्योंकि अधिकांश FPGAs और CPLDs इस वोल्टेज स्तर का उपयोग करते हैं।

मैंने XSVF फ़ाइलों के लिए एक असेंबलर / डिस्सेम्बलर लिखने के कुछ अनुभव भी किए, कोड एक ही गितूब लाइब्रेरी में है और यहाँ इस पोस्ट में बताया गया है

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