कैसे एक Arduino से वर्तमान कार्यक्रम को पढ़ने के लिए?


14

मैंने एक Armeino PCB को ATmega2560 के साथ अधिग्रहित किया , पहले से ही Arduino बूटलोडर और कुछ प्रोग्राम के साथ प्रोग्राम किया। मेरे पास स्केच है , लेकिन इसके साथ फ़िडलिंग से पहले, मैं वर्तमान बाइनरी का बैकअप लेना चाहूंगा जो कि नियंत्रक में है। सबसे Arduinos रूप में, यह TX0 और RX0 से जुड़े एक यूएसबी धारावाहिक कनवर्टर का उपयोग कर पीसी से कनेक्ट हो, और वहाँ कोई है आईएसपी इंटरफ़ेस।

जाहिरा तौर पर Arduino बूटलोडर में पढ़ने के लिए कोड है , लेकिन मुझे कोई विचार नहीं है कि इसे एक्सेस करने के लिए कौन से टूल का उपयोग करना है क्योंकि Arduino IDE में कोई मेनू आइटम नहीं है।

Arduino से प्रोग्राम को पढ़ने के लिए मुझे किस सॉफ़्टवेयर की आवश्यकता होगी?


बूटलोडर में पढ़ने के लिए कोड मिला, संपादित प्रश्न।
आंद्रेकेआर

यह संदिग्ध आपके प्रश्न को जगाता है, लेकिन आप अपने arduino skeches को .HEX फ़ाइल के रूप में निर्यात कर सकते हैं।
यूरेनियम लीज

जवाबों:


1

Arduino बूटलोडर मूल STK500 प्रोटोकॉल (1.x) का एक प्रकार है । "टी" (ASCII 0x74) वर्ण "रीड पेज" कमांड है। तो शायद एवीआरडीयूडीई का उपयोग करके बूटलोडर के माध्यम से कार्यक्रम को पोर्ट के माध्यम से बाहर खींचना संभव है ... लेकिन सबसे अच्छा मुझे लगता है कि इसे बंद करने के लिए कुछ फैंसी समय लगेगा।


11

मैंने Duemillenova से ATMega328P के साथ निम्नलिखित कमांड के साथ एक मेमोरी डंप की है:

avrdude -C avrdude.conf -v -v -v -v -p atmega328p -c stk500 -U flash:r:"c:/arduino.hex":r -P\\.\COM2 -b57600

1
ध्यान दें कि प्रोग्रामर लागू है शायद arduino है और stk500 नहीं है।
पालो नेव्स

चार -vएस क्यों जरूरी हैं?
पीटर मोर्टेंसन

से AVRDUDE प्रलेखन, "2.1 विकल्प वर्णन" : "... उत्पादन वर्बोज़ सक्षम -v। अधिक -v विकल्प शब्दाडंबर स्तर को बढ़ाने के। "
पीटर मोर्टेनसेन

यह स्वीकृत उत्तर होना चाहिए।
Caterpillaraoz

हाँ! प्रो माइक्रो बूटलोडर मेरे प्रो माइक्रो क्लोन पर काम नहीं करता था। मैंने फ्लैश को एक काम करने वाले प्रो माइक्रो क्लोन से डंप किया और एक को बचाया, जिसे बूटलोडर की जरूरत थी। ISP (linux) के रूप में एक Arduino का उपयोग करना - डंप ./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:r:"/tmp/dump.bin":r -P /dev/ttyUSB0:; लिखना ./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:w:"/tmp/dump.bin":r -P /dev/ttyUSB0:; सत्यापित करें:./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:v:"/tmp/dump.bin":r -P /dev/ttyUSB0
b_laoshi

7

क्या बैकअप AVR के साथ avrdude थ्रेड आपके प्रश्न का उत्तर देता है? मूल रूप से आप एक AVR से सभी मेमोरी को तब तक पढ़ सकते हैं जब तक कि प्रोटेक्शन फ्यूज सेट न हो जाए।

यह मैं एटीटीनी और एटीमेगा के लिए उपयोग होने वाला सेटअप है।

दिखाए गए बोर्ड पर:

  • 11 = MOSI
  • 12 = MISO
  • 13 = एससीएलके

उस नियंत्रक की डेटशीट का संदर्भ लें जिसका उपयोग करने के लिए सटीक पिन है। AVR के Arduino के उपयोग से प्रोग्रामिंग के बारे में इंटरनेट पर कुछ वेबसाइटें हैं, उदाहरण के लिए: http://hlt.media.mit.edu/?p=1229


मैं उस के लिए एक दूसरे arduino की जरूरत है, है ना? मेरे पास एक नहीं है।
आंद्रेकेआर

1
यह एक दो Arduino विधि है, हाँ।
जिप्पी

और, हालांकि यह तस्वीर में देखने के लिए थोड़ा मुश्किल है, लक्ष्य Arduino पर इस्तेमाल किए गए पिन TX0 और RX0 भी नहीं हैं, वे हैं?
आंद्रेकेआर

ICP के लिए नहीं, TX और RX का उपयोग नहीं किया जाता है। उत्तर को थोड़ा सा अपडेट करें।
जिप्पी

खैर, मुझे लगता है कि आप मेरे सवाल के पूरे बिंदु से चूक गए, शायद इसलिए मैंने इसे एक खराब शीर्षक दिया। मैंने पूरे सवाल पर सवाल उठाया।
आंद्रेक

3

जहाँ तक मैं Arduino बूटलोडर सोर्स कोड देख सकता हूँ , वहाँ से सभी मेमोरी को 'डंप' करने का कोई तरीका नहीं है। बूटलोडर एक 'मॉनिटर' मोड का समर्थन करता है जो आपको एक बार में एक मेमोरी बाइट को डंप करने की अनुमति देता है। हालाँकि, स्रोत कोड टिप्पणियों के अनुसार "/ * मॉनिटर फ़ंक्शंस केवल ATmega128 का उपयोग करते समय संकलित किया जाएगा, बूटब्लॉक आकार की कमी के कारण * /"

जैसे, मुझे लगता है कि आप भाग्य से बाहर हैं यदि आप आईएसपी का उपयोग नहीं करना चाहते हैं, तो बूटलोडर को बदलें या इसे करने के लिए एक स्केच अपलोड करें।


मैं उस खंड का उल्लेख कर रहा था जो 701 पंक्ति में शुरू होता है else if(ch=='t') {
आंद्रेकेआर

अच्छी बात है - ऐसा नहीं देखा था।
आरजेआर

2

मुझे लगा कि इसके लिए एक मेनू विकल्प था, लेकिन मैं इसे अभी नहीं ढूंढ रहा हूं। यदि आपके पास एक ISP प्रोग्रामर है, तो आप AVR स्टूडियो का उपयोग मेमोरी इमेज को चिप से पढ़ने और HEX फ़ाइल में सहेजने के लिए कर सकते हैं, जो आपको उसी माध्यम से इसे पुनर्स्थापित करने की अनुमति देगा।

संपादित करें

आपकी टिप्पणी के जवाब में - यह आसान है! आपको इसे खींचने के लिए जानकारी के लायक दो आरेखों को आत्मसात करने की आवश्यकता है। पहला Arduino / ATMega2560 पिन मैपिंग है।

यहाँ छवि विवरण दर्ज करें

दूसरा है आईएसपी हैडर / एवीआर पिन मैपिंग:

यहाँ छवि विवरण दर्ज करें

इन दो चित्रों के साथ सशस्त्र, आपको यह देखने में सक्षम होना चाहिए कि इसे कैसे वायर किया जाए।

  • DIG50 से ड्रैगन ISP हैडर पिन 1 पर तार चलाएँ
  • VCC से ड्रैगन ISP हैडर पिन 2 पर तार चलाएं
  • DIG52 से ड्रैगन ISP हेडर पिन 3 तक एक तार चलाएं
  • DIG51 से ड्रैगन ISP हैडर पिन 4 तक एक तार चलाएं
  • RESET से ड्रैगन ISP हेडर पिन 5 तक एक तार चलाएं
  • जीएनडी से ड्रैगन आईएसपी हेडर पिन 6 तक एक तार चलाएं

उन लोगों के साथ, आपको चिप से हेक्स फ़ाइल को पढ़ने के लिए AVR स्टूडियो का उपयोग करने में सक्षम होना चाहिए - मुझे बताएं कि क्या आपको अधिक मार्गदर्शन की आवश्यकता है।


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

@AndreKR अधिक जानकारी के लिए मेरा संपादित उत्तर देखें
vicatcu

जैसा कि मेरे प्रश्न में कहा गया है, मुझे पता है कि निश्चित रूप से आईएसपी का उपयोग करके कार्यक्रम को कैसे पढ़ा जाए। जो मैं जानना चाहता हूं कि यह सीरियल इंटरफ़ेस (TX0 और RX0) का उपयोग करके कैसे किया जाता है - उसी तरह से प्रोग्राम को Arduino दुनिया में नियंत्रक पर अपलोड किया जाता है।
आंद्रेकेआर

@AndreKR मैं उलझन में हूँ ... आपके पास एक ड्रैगन है, आप सामान्य तरीके से कार्यक्रम क्यों नहीं पढ़ना चाहेंगे - मुझे आपकी टिप्पणी गलत
लगी

पीसीबी I में ISP हेडर नहीं है। हालाँकि, इसमें एक सीरियल इंटरफ़ेस और एक Arduino बूटलोडर है। इस तरह से कार्यक्रम Arduino दुनिया में अपलोड किए जाते हैं, और जाहिर है कि उन्हें उसी तरह से डाउनलोड किया जा सकता है।
आंद्रेकेआर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.