কেউ দয়া করে ব্যাখ্যা করতে পারেন কীভাবে আরডুইনো বুটলোডার কাজ করে? আমি এখানে একটি উচ্চ স্তরের উত্তর খুঁজছি না, আমি কোডটি পড়েছি এবং আমি এর সংক্ষেপটি পেয়েছি। আমি এই অন্যান্য পোস্টের মাধ্যমেও পড়েছি (আমি এর প্রতিক্রিয়াশীলদের মধ্যে একজনও ছিলাম)।
আরডুইনো আইডিই এবং বুটলোডার কোডের মধ্যে ঘটে এমন একগুচ্ছ প্রোটোকল ইন্টারঅ্যাকশন রয়েছে যা শেষ পর্যন্ত অনেকগুলি ইনলাইন এসেম্বলির নির্দেশনার ফলস্বরূপ ঘটে যে প্রোগ্রামটির সাথে ফ্ল্যাশটি স্বয়ংক্রিয়ভাবে সিরিয়াল ইন্টারফেসে স্থানান্তরিত হয়।
আমি যা স্পষ্ট করছি না তা 270 লাইনে রয়েছে:
void (*app_start)(void) = 0x0000;
... যা আমি কোনও ক্রিয়াকলাপের পয়েন্টার হিসাবে ঘোষণা হিসাবে এবং NULL- র কাছে আরম্ভ করি। অ্যাপ-স্টার্টে পরবর্তী সময়ে কলগুলি রয়েছে যেখানে বুটলোডার ব্যবহারকারী-লোড কোডটি কার্যকর করার জন্য ডেলিগেট করার উদ্দেশ্যে তৈরি হয়।
অবশ্যই, app_start
একসাথে এটির জন্য সকলের একসাথে এক সময় নন-নুল মান পাওয়া দরকার। আমি এটি বুটলোডার কোডে দেখছি না ... এটি কি বুটলোডার দ্বারা লোড হয়ে যাওয়া প্রোগ্রামটির সাথে জাদুকরীভাবে যুক্ত? আমি অনুমান করি যে বুটলোডারের প্রধান হ'ল চিপটি পুনরায় সেট করার পরে সফ্টওয়্যারটিতে প্রবেশের পয়েন্ট।
Or০ বা তাই লাইনগুলি সমাবেশে আবদ্ধ হওয়া অবশ্যই গোপন ডিকোডার রিং হতে হবে যা মূল প্রোগ্রামটি জানায় যেখানে অ্যাপ_স্টার্টটি আসলে? বা সম্ভবত এটি এরডুইনো আইডিই দ্বারা কিছু অন্তর্নিহিত জ্ঞানের সুযোগ নিয়েছে? আমি কেবল জানি যে কেউ যদি 0_ এর বাইরে অন্য কোথাও অ্যাপ_স্টার্ট পরিবর্তন না করে তবে বুটলোডার কোডটি চিরতরে নিজেকে ছড়িয়ে দেবে ... সুতরাং কৌশলটি কী?
একটি পৃথক নোটে, বুটলোডার কোডের দ্বারা বাধা-বিপত্তির উপর নির্ভর করা সম্ভব হবে বা এটি কোনও নো-হ্যাম?
সম্পাদন করা
আমি বুটলোডারটিকে একটি ক্ষুদ্র এভিআর (বিশেষত এটিটিইন 44 এ) তে পোর্ট করার চেষ্টা করতে আগ্রহী যার বুট লোডার কোডের জন্য পৃথক মেমরির স্থান নেই। আমার কাছে যেমন স্পষ্ট হয়ে ওঠে যে বুটলোডার কোডটি কিছু নির্দিষ্ট ফিউজ সেটিংস এবং চিপ সহায়তার উপর নির্ভর করে, আমি অনুমান করি যে আমি কী জানার জন্য আগ্রহী তা হ'ল বুটলোডারটিকে এমন একটি চিপে বন্দরে নিয়ে যাওয়া উচিত যা এর সাথে ফিউজ এবং হার্ডওয়্যার নেই port সমর্থন (তবে এখনও স্ব-প্রোগ্রামিংয়ের ক্ষমতা আছে)?
আমি ভাবছিলাম যে আমি AVR307 বাস্তবায়নটি অর্ধ-দ্বৈত ইউআরটি হিসাবে ইউএসআই ব্যবহার করতে পারি (টাইমার0 বিঘ্নিত ব্যবহার করে, এবং পিন-পরিবর্তন বিঘ্নিত করি)। বুটলোডারগুলির জন্য হার্ডওয়্যার সমর্থন নেই এমন একটি চিপের জন্য বুটলোডার কোডটি লেখার / পোর্টিং সম্পর্কে কীভাবে নির্দেশনা দেওয়া যেতে পারে?
আমি মনে করি আমি আমার বুটলোডার কোডটিকে ঠিকানা ঠিকানা (যেমন 0x029e বা যেখানেই সংকলকটি মুখ্য রাখে) এর জন্য সাধারণ স্থানে রেখে দেব। আমি তখন এটি তৈরি করব যাতে বুটলোডার কোডের 'ঠিকানা' একটি অফসেট যুক্ত করেছিল যা আমাকে প্রধানের শেষের শেষে ফেলেছে এবং সেই ঠিকানায় 'অ্যাপ_স্টার্ট' সেট করেছে। আমি কি এই সম্পর্কে সঠিকভাবে ভাবছি বা আমি কিছু হারিয়ে যাচ্ছি? ধন্যবাদ!
সম্পাদনা 2
এফডব্লিউআইডাব্লু, আমি এটিটিইনি 85 তে আরডুইনো স্কেচগুলি কীভাবে লোড করব তার জন্য একটি নথিভুক্ত প্রক্রিয়া পেয়েছি , যেখানে আমি এই প্রশ্নটি নিয়ে মূলত যাচ্ছিলাম ... আমার মনে হয় বেশ ঝরঝরে