मैंने एक स्केच बनाया, लेकिन फिर मैंने इसे खो दिया। हालाँकि, मैंने इसे खोने से पहले इसे Arduino पर अपलोड किया था। क्या कोई तरीका है जिससे मैं इसे वापस पा सकूं?
मैंने एक स्केच बनाया, लेकिन फिर मैंने इसे खो दिया। हालाँकि, मैंने इसे खोने से पहले इसे Arduino पर अपलोड किया था। क्या कोई तरीका है जिससे मैं इसे वापस पा सकूं?
जवाबों:
यह तब तक संभव होना चाहिए जब तक सुरक्षा बिट सेट न हो। यह सवाल कुछ समय पहले ईई पर पूछा गया था।
क्या एक Arduino बोर्ड से कोड निकालना संभव है?
लेकिन आपको वह Arduino कोड नहीं मिलेगा जो आपने लिखा था। कोड को असेंबली में संकलित किया गया है और आपको उस सी को अपने आप में बदलना होगा।
यह उत्तर सीधे प्रश्न का उत्तर नहीं देता है, लेकिन फिर भी उसी अंतिम परिणाम में परिणाम देगा।
Arduino IDE फ़ाइलों का निर्माण करने के लिए अस्थायी निर्देशिकाओं का उपयोग करता है, जिसमें मूल स्केच के साथ-साथ HEX और मध्यवर्ती फाइलें भी शामिल हैं।
एक मैक पर, ये डिफ़ॉल्ट रूप से / var / फ़ोल्डरों में होते हैं, और एक विंडोज मशीन पर वे… \ Local Settings \ Temp \ (जो विंडोज के संस्करण के आधार पर कई स्थानों पर हो सकता है) पर हैं।
मैंने पाया है कि विशेष रूप से विंडोज में, ये निर्माण फाइलें स्केच या आईडीई को बंद करने पर नष्ट नहीं होती हैं, इसलिए वे आपके मशीन पर मौजूद हो सकते हैं जितना आप सोचते हैं।
इसके अलावा, डिफ़ॉल्ट रूप से, Crashplan, Backblaze और Time Machine इन स्थानों का बैक-अप करते हैं, इसलिए भले ही वे हटा दिए गए हों, फिर भी वे बैकअप में हो सकते हैं।
यहाँ लाभ यह है कि आप ASM के बजाय C कोड को पुनर्प्राप्त करेंगे।
/tmp/
लिनक्स (और यहां तक कि मैक) पर निर्देशिकाओं में पा सकते हैं । सीएफ arduino.cc/en/Hacking/BuildProcess
आप फ़ाइल के हेक्स डंप डाउनलोड कर सकते हैं, लेकिन सभी सी ++ कोड और टिप्पणियां प्राप्त करने का कोई आसान तरीका नहीं है। यदि आप असेंबली को समझ सकते हैं, तो आप प्रोग्राम को फिर से बना सकते हैं, लेकिन इसमें थोड़ा समय लगेगा। कुछ उपकरणों के लिए असंतुष्ट उपलब्ध हैं, मुझे arduino के बारे में पता नहीं है।
atmega disassembler
)।
मुझे लगता है कि ऐसा करने का एक और तरीका है, बिना Arduino बोर्ड से कोड निकाले। जिस तिथि को आप स्केच बनाते हैं, उसे याद रखें और C: \ Users \ User \ AppData \ Local \ Temp \ (उदाहरण के लिए देखें: C: \ Users \ User \ AppData \ Local \ Temp \ untitled4343292704786567977.tmp \ sketch_jan19a)। जब तक इसे कुछ "खाली स्थान कार्यक्रम" द्वारा हटा नहीं दिया गया, आप अपने सहेजे गए कोड को पा सकते हैं। सौभाग्य!
जब तक आपका उद्देश्य किसी अन्य डिवाइस के समान कोड को कॉपी करना नहीं है, सरल उत्तर है: नहीं
जैसा कि अन्य उत्तरों में बताया गया है, आप डिवाइस पर हेक्स कोड को कोड कोड में बदल सकते हैं।
उदाहरण के लिए (एक बार आपने अपनी डिस्क पर डिवाइस से कोड कॉपी कर लिया है):
avr-objdump -j .sec1 -d -m avr5 yourFileHere.hex
बूटलोडर फ़ाइलों में से एक पर चलाएं मुझे ये परिणाम मिलते हैं (भाग में):
00007e00 <.sec1>:
7e00: 11 24 eor r1, r1
7e02: 84 b7 in r24, 0x34 ; 52
7e04: 14 be out 0x34, r1 ; 52
7e06: 81 ff sbrs r24, 1
7e08: f0 d0 rcall .+480 ; 0x7fea
7e0a: 85 e0 ldi r24, 0x05 ; 5
7e0c: 80 93 81 00 sts 0x0081, r24
7e10: 82 e0 ldi r24, 0x02 ; 2
7e12: 80 93 c0 00 sts 0x00C0, r24
7e16: 88 e1 ldi r24, 0x18 ; 24
7e18: 80 93 c1 00 sts 0x00C1, r24
7e1c: 86 e0 ldi r24, 0x06 ; 6
7e1e: 80 93 c2 00 sts 0x00C2, r24
7e22: 80 e1 ldi r24, 0x10 ; 16
7e24: 80 93 c4 00 sts 0x00C4, r24
7e28: 8e e0 ldi r24, 0x0E ; 14
7e2a: c9 d0 rcall .+402 ; 0x7fbe
7e2c: 25 9a sbi 0x04, 5 ; 4
जैसा कि आप देख सकते हैं, आपके स्केच ने जो किया है उसे पुन: पेश करने के लिए विशेष रूप से उपयोगी नहीं है। दो परिदृश्यों में से एक होने की संभावना है:
"शॉर्ट स्केच" मामले में, आप स्क्रैच से बस फिर से लिखना बेहतर है। यह तेज होगा, लगभग निश्चित रूप से। "लंबे स्केच" मामले में - यह सिर्फ इसके लायक नहीं है। चर नामों में से कोई भी संरक्षित नहीं है, और जिस तरह से संकलक कोड का अनुकूलन करता है, यहां तक कि कोड की संरचना भी निर्धारित करना कठिन होगा।