একটি বুট লোডার কী এবং আমি কীভাবে এটি বিকাশ করব?


53

আমি অনেক প্রকল্পের সাথে দেখা করেছি যার মধ্যে একটি এভিআর মাইক্রোকন্ট্রোলার একটি বুটলোডার (যেমন আরডুইনো) দিয়ে ব্যবহার করে তবে আমি ধারণাটি খুব ভালভাবে বুঝতে পারি না।

আমি কীভাবে কোনও বুটলোডার তৈরি করতে পারি (কোনও মাইক্রোকন্ট্রোলারের জন্য)?

আমার বুটলোডারটি লেখার পরে এটি কীভাবে মাইক্রোকন্ট্রোলারকে প্রোগ্রাম করা হয় (AVR এর ফ্ল্যাশ রোমে পোড়ানো কোনও হেক্স প্রোগ্রামের মতো, বা অন্য কোনও পদ্ধতির মতো)?


10
আপনি এটি বুটলোডার ট্যাগ দিয়ে ট্যাগ করেছেন, আপনি কি এটি পড়েছেন? যদি তা হয় তবে আপনি কি আরডুইনো বুটলোডার , আরডুইনো বুটলোডার ফলো অন , আরডুইনো বুটলোডার , বুটলোডারের কাঠামো বোঝার জন্য ভাল সরঞ্জাম বা পদ্ধতি এবং আরডুইনো বুটলোডার বিশদ প্রশ্নগুলি পড়েছেন ? আপনার প্রাথমিক প্রশ্নের সেই সমস্ত অংশের ঠিকানা। আমি এটিকে নতুন জিনিসগুলিতে ছাঁটাই করেছি।
কেভিন ভার্মির

বুটলডার ডিজাইন পদ্ধতি সম্পর্কে একটি কাগজ: beningo.com/wp-content/uploads/images/Papers/…
ইয়াহিয়া

2
@ কেভিন ভার্মির আমার ধারণা তাঁর প্রশ্নটি আরও সোজা।
richieqianle

উত্তর:


103

একটি বুটলোডার এমন একটি প্রোগ্রাম যা মাইক্রোকন্ট্রোলারে প্রোগ্রাম করার জন্য চলে। এটি কিছু যোগাযোগের মাধ্যমের মাধ্যমে বাহ্যিকভাবে নতুন প্রোগ্রামের তথ্য গ্রহণ করে এবং সেই তথ্যটি প্রসেসরের প্রোগ্রাম মেমোরিতে লিখে দেয়।

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

বিশেষায়িত হার্ডওয়ারের মাধ্যমে বাহ্যিক প্রোগ্রামিংয়ের গুরুত্বপূর্ণ বিষয়টি হ'ল প্রোগ্রাম মেমরির বিদ্যমান বিষয়বস্তু নির্বিশেষে এটি কাজ করে। মাইক্রোকন্ট্রোলারগুলি প্রোগ্রামের মেমোরিটি মুছে ফেলা বা অজানা অবস্থায় শুরু করে, তাই প্রথম প্রোগ্রামটিকে একটি মাইক্রোতে স্থান দেওয়ার একমাত্র মাধ্যম হ'ল বাহ্যিক প্রোগ্রামিং।

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

যদি আপনার ভলিউমগুলি কম হয় বা আরও গুরুত্বপূর্ণভাবে, আপনি চলমান ফার্মওয়্যার বিকাশ এবং বাগ ফিক্সগুলি প্রত্যাশা করেন, আপনি প্রাক-প্রোগ্রামযুক্ত চিপ কিনতে চান না। এক্ষেত্রে ফাঁকা চিপগুলি বোর্ডে মাউন্ট করা হয় এবং ফার্মওয়্যারটিকে উত্পাদন প্রক্রিয়ার অংশ হিসাবে চিপের উপরে চাপানো হয়। সেক্ষেত্রে হার্ডওয়্যার প্রোগ্রামিং লাইনগুলি কোনওভাবে উপলব্ধ করতে হবে। আপনি যদি উত্পাদন পরীক্ষার স্থিরতা তৈরি করতে ইচ্ছুক হন তবে এটি সুস্পষ্ট সংযোগকারী বা পোগো পিন প্যাডের মাধ্যমেও হতে পারে। প্রায়শই এই জাতীয় পণ্যগুলি পরীক্ষা করতে হয় এবং সম্ভবত যেভাবে ক্যালিব্রেট করা হয়, তাই প্রসেসরে প্রোগ্রাম লেখার অতিরিক্ত ব্যয় সাধারণত ন্যূনতম হয়। কখনও কখনও যখন ছোট প্রসেসরগুলি ব্যবহার করা হয় তখন একটি বিশেষ উত্পাদন পরীক্ষার ফার্মওয়্যার প্রথম প্রসেসরে লোড হয় is এটি ইউনিটটি পরীক্ষা ও ক্যালিব্রেট করার সুবিধার্থে ব্যবহৃত হয়, হার্ডওয়্যারটি ভাল হিসাবে পরিচিত হওয়ার পরে আসল ফার্মওয়্যারটি লোড হবে। এই ক্ষেত্রে প্রোগ্রামিং প্রক্রিয়াটি পর্যাপ্তভাবে কাজ করতে পারে তবে সার্কিটকে খুব বেশি অসুবিধে নাও করতে পারে এমন প্রোগ্রামিং লাইনে অ্যাক্সেসের অনুমতি দেওয়ার জন্য কিছু সার্কিট ডিজাইন বিবেচনা রয়েছে। এ সম্পর্কে আরও তথ্যের জন্য, আমার দেখুনইন-সার্কিট প্রোগ্রামিং লিখনআপ।

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

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

সহজ মনে হচ্ছে, তবে এটি হ'ল না, যদি আপনি এই প্রক্রিয়াটি দৃ be় হতে চান তবে তা নয় not যদি কোনও যোগাযোগের ত্রুটি ঘটে এবং নতুন ফার্মওয়্যারটি বুটলোডারের কাছে আসার সময়টি দূষিত হয়? বুট প্রক্রিয়া চলাকালীন যদি বিদ্যুৎ ব্যাহত হয়? তাহলে কি যদি বুটলোডার একটি বাগ থাকে এবং নিজেই ক্রেপগুলি থাকে?

একটি সরল পরিস্থিতি হ'ল বুটলোডার সর্বদা পুনরায় সেট করা থেকে চালিত হয়। এটি হোস্টের সাথে যোগাযোগের চেষ্টা করে। হোস্ট যদি প্রতিক্রিয়া জানায় তবে তা বুটলোডারকে বলে যে এটিতে নতুন কিছু নেই, বা এটি নতুন কোড প্রেরণ করে। নতুন কোড আসার সাথে সাথে পুরানো কোডটি ওভাররাইট করা হয়েছে। আপনি সর্বদা আপলোড কোড সহ একটি চেকসাম অন্তর্ভুক্ত করেন, যাতে নতুন অ্যাপটি অক্ষত রয়েছে কিনা তা বুটলোডার বলতে পারে। যদি তা না হয় তবে বৈধ চেকসাম সহ কোনও কিছু মেমরিতে লোড না হওয়া অবধি এটি বুটলোডার ক্রমাগত আপলোডের অনুরোধ করে। এটি সর্বদা সংযুক্ত এবং এমন কোনও ডিভাইসের পক্ষে গ্রহণযোগ্য হতে পারে যা সম্ভবত হোস্টে পটভূমি টাস্ক চালিত হয় যা বুটলোডার অনুরোধের প্রতিক্রিয়া জানায়। এই স্কিমটি এমন ইউনিটগুলির পক্ষে ভাল নয় যেগুলি বেশিরভাগ ক্ষেত্রে স্বায়ত্তশাসিত এবং কেবল মাঝে মধ্যে একটি হোস্ট কম্পিউটারের সাথে সংযুক্ত থাকে।

সাধারণত উপরে বর্ণিত সাধারণ বুটলোডার গ্রহণযোগ্য হবে না কারণ কোনও ব্যর্থ নিরাপদ নেই। যদি কোনও নতুন অ্যাপের চিত্রটি অক্ষত না পাওয়া যায়, আপনি সফল আপলোডটি সম্পাদন না করা পর্যন্ত ডিভাইসটি পুরানো চিত্রটি চালিয়ে যাওয়া চালিয়ে যেতে চান, মরে যাবেন না। এই কারণে, সাধারণত ফার্মওয়্যারটিতে দুটি বিশেষ মডিউল থাকে, একটি আপলোডার এবং একটি বুটলোডার। আপলোডার মূল অ্যাপের অংশ। হোস্টের সাথে নিয়মিত যোগাযোগের অংশ হিসাবে, একটি নতুন অ্যাপ্লিকেশন চিত্র আপলোড করা যেতে পারে। এটিতে বাহ্যিক EEPROM এর মতো মূল অ্যাপ্লিকেশন চিত্র থেকে পৃথক মেমরির প্রয়োজন হয় বা একটি বৃহত প্রসেসর ব্যবহার করা উচিত যাতে নতুন অ্যাপ্লিকেশন চিত্র সংরক্ষণের জন্য অর্ধেক প্রোগ্রামের মেমরির স্থান বরাদ্দ করা যায়। আপলোডার কেবল প্রাপ্ত নতুন অ্যাপ চিত্রটি কোথাও লিখেছেন, তবে এটি চালায় না। প্রসেসরটি পুনরায় সেট করা হয়, যা কোনও আপলোডের পরে হোস্টের কমান্ডে ঘটতে পারে, বুটলোডার চালায়। এটি এখন সম্পূর্ণ স্বয়ংসম্পূর্ণ প্রোগ্রাম যা বাহ্যিক যোগাযোগের সক্ষমতা প্রয়োজন হয় না। এটি বর্তমান এবং আপলোড হওয়া অ্যাপ্লিকেশন সংস্করণগুলির সাথে তুলনা করে, তাদের চেকসামগুলি চেক করে এবং সংস্করণগুলি পৃথক হলে এবং নতুন চিত্র চেকসাম চেকগুলি অ্যাপ্লিকেশন অঞ্চলে নতুন চিত্রের অনুলিপি করে। যদি নতুন চিত্রটি দূষিত হয় তবে এটি কেবল আগের মতোই পুরানো অ্যাপ্লিকেশনটি চালায়।

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

  1. বেসিক বুটলোডার। এই ডিভাইসের একটি সিরিয়াল লাইন ছিল এবং এটি একটি হোস্টের সাথে সংযুক্ত হবে এবং প্রয়োজন অনুসারে চালু হবে। বুটলোডার রিসেট থেকে দৌড়ে এবং হোস্টকে কয়েকটি আপলোড অনুরোধের প্রতিক্রিয়া প্রেরণ করেছে। আপলোড প্রোগ্রামটি চলমান থাকলে, এটি প্রতিক্রিয়া জানাবে এবং একটি নতুন অ্যাপ্লিকেশন চিত্র পাঠাবে। যদি এটি 500 এমএসের মধ্যে সাড়া না দেয় তবে বুটলোডারটি ছেড়ে দিয়ে বিদ্যমান অ্যাপটিকে চালিত করে। অতএব ফার্মওয়্যার আপডেট করার জন্য আপনাকে প্রথমে হোস্টে আপডেটেটর অ্যাপটি চালাতে হবে, তারপরে সংযোগ স্থাপন করুন এবং ডিভাইসে পাওয়ার করুন।

  2. প্রোগ্রাম মেমরি আপলোডার। এখানে আমরা পরবর্তী আকারের পিআইসি ব্যবহার করেছি যা প্রোগ্রামের মেমরির দ্বিগুণ। প্রোগ্রামের মেমরিটি মোটামুটিভাবে 49% প্রধান অ্যাপ্লিকেশন, 49% নতুন অ্যাপ্লিকেশন চিত্র এবং 2% বুটলোডারে বিভক্ত ছিল। বুটলোডারটি রিসেট থেকে চালানো হবে এবং সঠিক অ্যাপ্লিকেশন চিত্রটিতে সঠিক অবস্থার অধীনে নতুন অ্যাপ্লিকেশন চিত্রটি অনুলিপি করবে।

  3. বাহ্যিক EEPROM চিত্র। বাইরের EEPROM নতুন অ্যাপ্লিকেশন চিত্র সংরক্ষণের জন্য ব্যবহৃত হয়েছে # 2 এর মতো। এক্ষেত্রে আরও মেমোরি সহ প্রসেসরটি শারীরিকভাবে আরও বড় হয়ে উঠত এবং অন্য কোনও উপ-পরিবারে আমাদের পেরিফেরিয়ালগুলির মিশ্রণ ছিল না।

  4. টিসিপি বুটলোডার। এটি ছিল তাদের মধ্যে সবচেয়ে জটিল। একটি বৃহত PIC 18F ব্যবহার করা হয়েছিল। মেমরির শেষ 1/4 বা বুটলোডার ধরেছিল, যার টিসিপি নেটওয়ার্ক স্ট্যাকের নিজস্ব সম্পূর্ণ অনুলিপি ছিল। বুটলোডার পুনরায় সেট করা থেকে দৌড়ে গিয়ে পূর্বের কনফিগার করা আইপি ঠিকানায় পরিচিত বন্দরে একটি বিশেষ আপলোড সার্ভারের সাথে সংযোগ দেওয়ার চেষ্টা করেছিল। এটি ছিল বৃহত ইনস্টলেশনগুলির জন্য যেখানে সর্বদা পুরো সিস্টেমের জন্য একটি ডেডিকেটেড সার্ভার মেশিন ছিল। প্রতিটি ছোট ডিভাইস পুনরায় সেট করার পরে আপলোড সার্ভারের সাথে চেক ইন করবে এবং যথাযথভাবে একটি নতুন অ্যাপ্লিকেশন অনুলিপি দেওয়া হবে। বুটলোডারটি নতুন অনুলিপি সহ বিদ্যমান অ্যাপ্লিকেশনটিকে ওভাররাইট করতে পারে, তবে চেকসাম চেক করা থাকলে কেবল এটি চালিত হবে। যদি তা না হয় তবে এটি আপলোড সার্ভারে ফিরে যাবে এবং আবার চেষ্টা করবে।

    যেহেতু বুটলোডার নিজেই একটি সম্পূর্ণ টিসিপি নেটওয়ার্ক স্ট্যাকযুক্ত কোডের একটি জটিল টুকরো ছিল তাই এটি ফিল্ড আপগ্রেডেবলও হতে হয়েছিল। তারা যেভাবে করেছিল আমরা তা হ'ল আপলোড সার্ভারটি একটি বিশেষ অ্যাপ্লিকেশন সরবরাহ করাই ছিল যার একমাত্র উদ্দেশ্য ছিল বুটলোডারটি একবার চালিত হয়ে ওভাররাইট করা, তারপরে মেশিনটি পুনরায় সেট করা যাতে নতুন বুটলোডার চলতে পারে, যার ফলে আপলোড সার্ভারটি প্রেরণ করতে পারে সর্বশেষ প্রধান অ্যাপ্লিকেশন চিত্র। প্রযুক্তিগতভাবে কয়েক মিলি সেকেন্ডের সময় পাওয়ার এড়াতে এটি বুটলোডারের উপরে একটি নতুন চিত্র অনুলিপি করতে বিশেষ অ্যাপ্লিকেশনটি গ্রহণ করেছিল এটি অপরিবর্তনযোগ্য ব্যর্থতা হতে পারে। বাস্তবে এটি কখনও ঘটেনি। আমরা খুব সম্ভবত সম্ভাবনার সম্ভাবনা নিয়ে ঠিক ছিলাম যেহেতু এই ডিভাইসগুলি বৃহত ইনস্টলেশনগুলির অংশ ছিল যেখানে ইতিমধ্যে এমন লোকেরা ছিল যারা সিস্টেমে রক্ষণাবেক্ষণ করবে, যা মাঝেমধ্যে অন্য কারণে এম্বেডড ডিভাইসগুলি অন্য কোনও কারণে প্রতিস্থাপন করে।

আশা করি আপনি দেখতে পাচ্ছেন যে অন্যান্য ঝুঁকির গতি, গতি, ব্যয়, ব্যবহারের সহজলভ্যতা, ডাউনটাইম ইত্যাদির সাথে আরও কয়েকটি সম্ভাবনা রয়েছে each


1
এক্সমেগা পরিবার ব্যতীত সমস্ত এভিআর (যা একটি নতুন 2-তারের ইন্টারফেস রয়েছে) পুনরায় সেট করার সময় একটি এসপিআই ইন্টারফেস ব্যবহার করে। বৃহত্তরগুলিরও জেটিএল থাকে, কারও কারও সমান্তরাল প্রোগ্রামিং থাকে এবং ছোটগুলিতে উচ্চ ভোল্টেজের প্রয়োজন হতে পারে যদি I / O হিসাবে পুনরায় কনফিগার করা থাকে। কিছু এমসিইউ, যেমন প্যারালাক্স প্রপেলার এবং মটোরোলা / ফ্রিস্কেল 68 এইচসি08 পরিবারগুলির, রমটিতে ন্যূনতম প্রোগ্রামিং হার্ডওয়্যার নয় তবে বুটলোডার নেই।
ইয়ান ভার্নিয়ার

এটি বর্তমান এবং আপলোড হওয়া অ্যাপ্লিকেশন সংস্করণগুলির সাথে তুলনা করে, তাদের চেকসামগুলি চেক করে এবং সংস্করণগুলি পৃথক হলে এবং নতুন চিত্র চেকসাম চেকগুলি অ্যাপ্লিকেশন অঞ্চলে নতুন চিত্রের অনুলিপি করে। হ্যাঁ তবে কী যদি এই ক্রিয়াকলাপের মাঝামাঝি সময়ে বিদ্যুৎ ব্যাহত হয় তবে "অ্যাপ্লিকেশন অঞ্চল" তে একটি দূষিত চিত্র থাকবে। আমি মনে করি এমসিইউ ফ্ল্যাশ-এ নতুন অ্যাপটি লেখার জন্য একটি বুটলোডার-ফেইলসেফ-অ্যাপ্লিকেশন থাকা ভাল এবং যদি চেকসামটি বৈধ হয় তবে এটি কোথাও "ঠিক আছে নতুন অ্যাপ্লিকেশন বুট করার জন্য" লিখেছেন। সুতরাং শুরুতে, এটি নতুন অ্যাপ্লিকেশনটি বুট করা ঠিক আছে কিনা তা যাচাই করে না, যদি এটি নিজে চালানো অব্যাহত না রাখে (
ফেইলসেফ

@ আরভি: যদি বিদ্যুতটি নতুন সংস্করণটিকে কারেন্টে অনুলিপি করার মাঝখানে ব্যর্থ হয়, তবে বিদ্যুৎ ফিরে আসার সাথে সাথে বুটলোডার আবার চললে বর্তমান সংস্করণ চেকসাম ব্যর্থ হবে। আমি সাধারণত চিত্রের একেবারে শেষে চেকসাম শব্দটি রাখি যাতে কোনও আংশিক লেখায় চেকসাম ব্যর্থতার খুব ভাল সম্ভাবনা থাকে।
অলিন ল্যাথ্রপ

ওহে. আমি আপনাকে বুটলোডার 5 প্রকারের সুপারিশ করতে পারি - টিসিপি স্ট্যাকের পরিবর্তে আপনি ইউডিপি প্রয়োগ করতে পারেন। তারপরে আপডেট বা নেটিভ প্রোটোকলটি ডাউনলোড করতে টিএফটিপি ব্যবহার করুন।
i486

22

বুটলোডার ধারণাটি কী?

এই দৃশ্যের চিত্রটি দেখুন: আপনার মাইক্রোকন্ট্রোলারের কাছে আপনার পর্যাপ্ত পরিমাণ সঞ্চয়স্থান রয়েছে - একে অপরের থেকে স্বতন্ত্র 2-3-৮ টির বেশি প্রোগ্রাম বা অ্যাপ্লিকেশন সংরক্ষণ করার জন্য যথেষ্ট। মনে করুন যে আপনি যখন নিজের ডিভাইসটি বুট করেন, তখন আপনি কোনটি চালাবেন তা চয়ন করতে সক্ষম হতে পারেন। সুতরাং আপনি কি এই সমর্থন প্রয়োজন? আপনার একটি প্রারম্ভিক প্রোগ্রামের প্রয়োজন হবে যা আপনাকে বুট-সময় অন্যদের মধ্যে চয়ন করতে দেয়।

কিভাবে এটা কাজ করে?

একটি বুটলোডার হ'ল প্রোগ্রাম - এটি চালানোর প্রথম জিনিস এবং মেমোরির নির্দিষ্ট স্থানে অন্যান্য অ্যাপ্লিকেশনগুলি লোড করতে পারে (হয় FLASH এর মতো অবিচ্ছিন্ন, অথবা র‌্যামের মতো অস্থির) এবং তারপরে সেই পছন্দসই প্রোগ্রামে ঝাঁপিয়ে পড়ে যেখানে এটি সেখান থেকে সম্পাদন কার্যভার গ্রহণ করবে ।

একটি এভিআর বুটলোডার (বা কোনও মাইক্রোকন্ট্রোলারের জন্য) কীভাবে তৈরি করবেন?

আমি কখনই কোনও বুটলোডার তৈরি করি নি তবে আমার মনে হয় আমি এটি করাতে যাব: আপনি যেমন সাধারণত ফার্মওয়্যার প্রোগ্রামটি লিখতে শুরু করেন - তবে এটি কোনও অঞ্চলে এমনভাবে স্থাপন করা হয়েছে তা নিশ্চিত করুন যে এটি সর্বদা চালানো প্রথম জিনিস is ডিভাইস বুট। আমার মাথার শীর্ষে, আমি এই ছোট্ট প্রোগ্রামটির বাইরে কিছু কার্যকারিতা চাই: স্মৃতিতে উপলব্ধ স্পটে একটি নতুন প্রোগ্রাম আপলোড করার ক্ষমতা, পূর্ববর্তী আপলোডকৃত প্রোগ্রামটি মুছতে, কোন প্রোগ্রামটি চালাবেন তা চয়ন করুন (যদি আরও বেশি কিছু থাকে তবে এক), এবং অন্যান্য প্রোগ্রামগুলি কোথায় রয়েছে তা স্মরণে রাখতে এবং সেগুলিতে ঝাঁপিয়ে পড়ার জন্য এক ধরণের স্টোরেজ ডেটা স্ট্রাকচার (বাড়ার পক্ষে সক্ষম জাম্প টেবিল?) রয়েছে। ইন্টারঅ্যাকশনটি ইউআরটি জুড়ে করা যেতে পারে যেখানে এটি আপনাকে একটি খুব সাধারণ টার্মিনাল মেনু এবং সেই একই চ্যানেলে ফার্মওয়্যার আপলোড করার ক্ষমতা উপস্থাপন করতে পারে।

এটি কীভাবে মাইক্রোকন্ট্রোলারকে প্রোগ্রাম করা হয় (এভিআর এর ফ্ল্যাশ রোমে পোড়ানো কোনও হেক্স প্রোগ্রাম বা অন্য কোনও পদ্ধতির মতো)?

যদি এটি সম্পূর্ণরূপে কোনও ফাঁকা চিপ না থাকে যা কোনও বিদ্যমান বুটলোডার নিজেই আপডেট করতে পারে তবে আপনার এটির মতোই ফ্ল্যাশ পোড়াতে হবে যা অর্জনের জন্য যে কৌশলটি প্রয়োজন তা ব্যবহার করে (এভিআর ক্ষেত্রে আইসিএসপি) ব্যবহার করতে হবে।

এটি "বুটলোডার" কী তা কোনওভাবেই বিস্তৃত নয় । আপনি যে কোনওটির জন্য বা তাদের ডিজাইন করা সিস্টেমের বাইরে যা চান তার উপর নির্ভর করে আপনি ফ্ল্যাশের পরিবর্তে র্যামের নির্দিষ্ট স্থানে স্টাফ আপলোড করতে এবং যেকোন স্বেচ্ছাসেবী মেমরির স্থানে কার্যকর করতে শুরু করতে পারেন। অথবা আপনার পিসি বুট হওয়ার সময় কোন অপারেটিং সিস্টেমটি লোড করা যায় তা চয়ন করতে সক্ষম এমন একটি আপনি চান ( উদাহরণস্বরূপ গ্রাব দেখুন )। 8-বিট মাইক্রোকন্ট্রোলারগুলির জন্য বুটলোডার খুব সাধারণ থাকে।

আরডুইনো সম্পর্কে একটি নোট: এই বুটলোডার কেবল একটি প্রোগ্রাম আফাইক পরিচালনা করে, এটি ফার্মওয়্যার আপলোড এবং অন্যান্য সামগ্রী পরিচালনা করতে সিরিয়াল বন্দরটিও নিয়ে যায় ।


এফওয়াইআই, উত্তরটি বুলেট পয়েন্টগুলিকে সম্বোধন করতে লেখা হয়েছিল যা এখন সম্পাদনা করা হয়েছে।
জন এল

3

একটি "বুট" লোডার ধারণাটি পাম্পের "প্রাইমিং" ধারণার অনুরূপ। অন্য কথায়, আপনার "কিছু" দরকার যা একটি প্রদত্ত ঠিকানায় একটি প্রোগ্রাম লোড করে এবং তারপরে সেই ঠিকানায় প্রোগ্রামটি চালানো শুরু করে। এটাই হ'ল বুট লোডার। সহজতম ক্ষেত্রে, বুট লোডার সিপিইউর মনোনীত প্রারম্ভিক ঠিকানাতে "উপস্থিত হয়" (শূন্য, সম্ভবত), প্রোগ্রামটি প্রয়োজনীয় মেমরি বিভাগে লোড করে, এতে নিয়ন্ত্রণ স্থানান্তর করে এবং "অদৃশ্য হয়ে যায়"। চেহারা এবং অন্তর্ধানটি "বাহ্যিক" হার্ডওয়্যার দ্বারা নিয়ন্ত্রিত হয়। একটি সম্ভাব্য বাস্তবায়ন হ'ল একটি হার্ডওয়ার "রিসেটের মাধ্যমে সক্রিয় করা এবং" সফ্টওয়্যার "রিসেট দ্বারা নিষ্ক্রিয় করা একটি রম ব্যবহার করে। রমের লোডারটি যতটা সহজ বা জটিল হিসাবে প্রয়োজনীয় হতে পারে, এবং নির্দিষ্ট সিপিইউ যে বাইনারি ফর্মটি বোঝে তা লিখতে হবে। রম দ্বারা ব্যবহৃত ঠিকানা স্থানের প্রয়োজন না হলে, রম নিষ্ক্রিয়করণ প্রয়োজন হবে না। স্পষ্টতই, রমের পরিবর্তে EEPROM, ePROM, ফ্ল্যাশ PROM, ইত্যাদি ব্যবহার করা যেতে পারে।

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