আরডুইনো থেকে স্কেচ ডাউনলোড করার কোনও উপায় আছে কি?


44

আমি একটি স্কেচ তৈরি করেছি, তবে তারপরে আমি এটি হারিয়ে ফেলেছি। যাইহোক, এটি হারানোর আগে আমি এটি আরডিনোতে আপলোড করেছি। আমি আবার ফিরে পেতে পারে কি কোন উপায় আছে?


5
ইলেক্ট্রনিক্স.সটাকেক্সচেঞ্জ / প্রশ্নগুলি / ২৮২১১/২ তবে অন্যরা যেমন বলেন, এটি কেবলমাত্র .hex ফাইলগুলিকেই ছড়িয়ে দেয়, উত্সের সি উত্স নয়।
জিপ্পি

ক্রস সাইট ডুপ
কিউ

উত্তর:


35

এটি যতক্ষণ সম্ভব সুরক্ষা বিট সেট না করা সম্ভব হবে। এই প্রশ্নটি EE তে কিছুক্ষণ আগে জিজ্ঞাসা করা হয়েছিল।

একটি আরডুইনো বোর্ড থেকে কোড তোলা সম্ভব?

তবে আপনি যে আরডুইনো কোড লিখেছিলেন তা আপনি পাবেন না। কোডটি সমাবেশে সংকলিত হয়েছে এবং আপনাকে সেটিকে নিজেই সিতে রূপান্তর করতে হবে।


কাঁচা হেক্স ফিরে পাঠ: forum.arduino.cc/index.php?topic=6150.0 এবং স্বয়ংক্রিয় disassembly: forum.arduino.cc/index.php/topic,46843.0.html
SDsolar

20

এই উত্তরটি সরাসরি প্রশ্নের উত্তর দেয় না, তবে এখনও একই ফলাফলের ফলাফল হবে।

আরডুইনো আইডিই মূল স্কেচ পাশাপাশি এইচএক্স এবং মধ্যবর্তী ফাইলগুলি সহ বিল্ড ফাইলগুলি সঞ্চয় করতে অস্থায়ী ডিরেক্টরি ব্যবহার করে।

একটি ম্যাক এ, এটি ডিফল্টরূপে / var / ফোল্ডারে রয়েছে এবং একটি উইন্ডোজ মেশিনে তারা…… লোকাল সেটিংস \ টেম্প \ (যা উইন্ডোজের সংস্করণের উপর নির্ভর করে বেশ কয়েকটি জায়গায় থাকতে পারে)।

আমি খুঁজে পেয়েছি যে বিশেষত উইন্ডোজগুলিতে, স্কেচ বা আইডিই বন্ধ করার সময় এই বিল্ড ফাইলগুলি মুছে ফেলা হয় না, সুতরাং এটি আপনার মেশিনে আপনি যতটা ভাবেন তার চেয়ে বেশি সময় ধরে থাকতে পারে।

এছাড়াও, ডিফল্টরূপে ক্র্যাশপ্লান, ব্যাকব্লেজ এবং টাইম মেশিন এই অবস্থানগুলির ব্যাক-আপ করে, তাই এগুলি মুছে ফেলা হলেও, তারা এখনও ব্যাকআপে থাকতে পারে।

এখানে সুবিধা হ'ল আপনি ASM এর চেয়ে সি কোডটি পুনরুদ্ধার করবেন।


3
এটি সেরা সমাধান আইএমএইচও। খুব সৃজনশীল, খুব ...
ডিডি

1
আপনি এটি /tmp/লিনাক্সে (এবং ম্যাক) ডিরেক্টরিতেও পেতে পারেন । সিএফ আরডুইনো.সি.সি
হ্যাকিং /

গৃহীত উত্তরের মন্তব্যটির প্রতিধ্বনি: কাঁচা হেক্স: ফোরাম.আর্ডুইনো.সি.সি / ইন্ডেক্স.এফপি? টপিক=6150.0 এবং অটোমেটিক ডিসসেসাবলিজ
টোপিক

5

আপনি ফাইলটির হেক্স ডাম্প ডাউনলোড করতে পারেন, তবে সমস্ত সি ++ কোড এবং মন্তব্য পাওয়ার সহজ উপায় নেই। আপনি যদি সমাবেশটি বুঝতে পারেন তবে আপনি প্রোগ্রামটি পুনরায় তৈরি করতে পারেন তবে এতে কিছুটা সময় লাগবে। কিছু ডিভাইসের জন্য ডিসসেসেমব্লার রয়েছে, আমি আরডুইনো সম্পর্কে জানি না।


3
আরডুইনোর জন্য কোনও বিচ্ছিন্নকারী নেই, কারণ এটি কোনও এমসিইউ টাইপ নয়। সেখানে হয় একাধিক এটিমেগা disassemblers (Google atmega disassembler)।
কনার ওল্ফ

আপনার যদি আরডুইনো এনভিটোনমেন্ট থাকে তবে এটিআর-জিসিসি সহ আপনার ইতিমধ্যে অ্যাভি-অজডাম্প রয়েছে।
ক্রিস স্ট্রাটন


5

আমি মনে করি আরডুইনো বোর্ড থেকে কোডটি সরিয়ে না নিয়ে এটি করার আরও একটি উপায় আছে। আপনি স্কেচটি তৈরি করার তারিখটি পুনরায় বিবেচনা করুন এবং এটি সি: \ ব্যবহারকারী \ ব্যবহারকারী \ অ্যাপডাটা \ স্থানীয় \ টেম্পে look (উদাহরণস্বরূপ: সি: \ ব্যবহারকারীগণ) ব্যবহারকারী \ অ্যাপডেটা \ স্থানীয় \ টেম্প \ শিরোনামহীন 4390292704786567977.tmp \ স্কেচ_জেনআআ)) আপনি যদি কোনও "মুক্ত করা স্থান প্রোগ্রাম" দ্বারা মুছে ফেলা না হয় তবে আপনি আপনার সংরক্ষণ না করা কোডটি খুঁজে পেতে পারেন। শুভকামনা!


4

আপনার উদ্দেশ্যটি কেবল অন্য ডিভাইসে অভিন্ন কোডটি অনুলিপি করা না থাকলে সহজ উত্তরটি হ'ল: না

অন্যান্য উত্তরে যেমন উল্লেখ করা হয়েছে, আপনি ডিভাইসে থাকা হেক্স কোডটি আবার এসেম্বলারের কোডে পরিণত করতে পারেন।

উদাহরণস্বরূপ (একবার আপনি যখন ডিভাইস থেকে কোডটি আপনার ডিস্কে ফিরে আসেন):

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

যেমন আপনি দেখতে পাচ্ছেন, আপনার স্কেচ যা করেছে তা পুনরুত্পাদন করার জন্য বিশেষভাবে সহায়ক নয়। দুটি পরিস্থিতিতে একটি হতে পারে:

  • আপনার স্কেচটি সংক্ষিপ্ত ছিল, এক্ষেত্রে আপনি কয়েক সপ্তাহ কাজ করার পরে এসেম্বলারের কোডটি আবার সিটিতে পরিণত করতে পারেন
  • আপনার স্কেচটি দীর্ঘ ছিল, সেক্ষেত্রে এটি আবার সি-তে পরিণত করা কার্যত অসম্ভব

"শর্ট স্কেচ" ক্ষেত্রে আপনি স্ক্র্যাচ থেকে পুনরায় লেখার চেয়ে ভাল। এটি অবশ্যই দ্রুত হবে। "দীর্ঘ স্কেচ" ক্ষেত্রে - এটি কেবল মূল্যবান নয়। ভেরিয়েবলের কোনও নামই সংরক্ষিত নেই এবং সংকলক যেভাবে কোডটি অনুকূল করে, কোডের কাঠামোটিও নির্ধারণ করা শক্ত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.