কিভাবে প্রথম বুটস্ট্র্যাপ তৈরি করা হয়নি?
একটি বুটস্ট্র্যাপ প্রোগ্রাম নির্মাণ (লেখার এবং ক্রস-কম্পাইলিং) আপনি সুপারিশ হিসাবে মনে হয় হিসাবে daunting হয় না।
আমি অবশ্যই এআরএম ডিভাইস সম্পর্কে কথা বলছি, আমি একটি সাধারণ মেশিনে BIOS এর মাধ্যমে লোড করার বুনিয়াদি পেয়েছি, তবে বলুন আমরা একটি কাস্টম ডিভাইস সম্পর্কে কথা বলছি?
আপনি উল্লেখ করে যে BIOS মূলত একটি পিসি কনভেনশন। (সিপি / এম এছাড়াও একটি BIOS ছিল, কিন্তু অ-উদ্বায়ী মেমরি মধ্যে অপরিহার্য ছিল না।) এআরএম CPUs সাধারণত বা একটি BIOS ব্যবহার করে না।
আজকে ব্যবহার করা সাধারণ এআরএম প্রসেসরটি একটি আইসি তে একটি পেরেকেরালের সাথে সংহত করা হয় SoC একটি চিপ সিস্টেম ,. প্রধান স্মৃতি, যেমন DRAM, এবং অ-উদ্বায়ী স্টোরেজ, উদাঃ। NAND ফ্ল্যাশ, সাধারণত সর্বাধিক নকশা নমনীয়তা জন্য SoC বহিরাগত হয়। তবে বুটস্ট্র্যাপ অপারেশনগুলি শুরু করার জন্য সর্বনিম্ন সিস্টেম উপাদানগুলি প্রাথমিকভাবে শুরু করতে সাধারণত একটি ছোট (সম্ভবত 128KB) এমবেডেড রম (কেবল-পঠনযোগ্য মেমরি) রয়েছে। একটি প্রসেসর রিসেট সর্বদা এই বুট রম কার্যকর করা হবে। (এই রমটি কেবলমাত্র পঠনযোগ্য, এবং সংশোধন করা যাবে না। চিপ ফ্যাব্রিকেশনের সময় কোডটিকে সিলিকন-এ মুছিয়ে দেওয়া হয়।)
ওএস লোড এবং এক্সিকিউটিভ পাওয়ার জন্য প্রতিটি SOC বিক্রেতার নিজস্ব বুটস্ট্র্যাপ পদ্ধতি রয়েছে। বুটস্ট্র্যাপ ক্রম পরবর্তী ধাপের উত্স নির্ধারণ করতে GPIO পিনের মাধ্যমে কিছু হার্ডওয়ার স্ট্র্যাপিং ব্যবহার করে। আরেকটি বিক্রেতা একটি বুটস্ট্র্যাপ প্রোগ্রামের জন্য অনুসন্ধানের স্মৃতি এবং ডিভাইসগুলির একটি আদেশের তালিকা ব্যবহার করতে পারে। আরেকটি কৌশল, NOR ফ্ল্যাশে ফার্মওয়্যারে শাখা করা হয়, যা সরাসরি নির্বাহ করা যেতে পারে (যেমন XIP, সঞ্চালিত হয়)।
প্রধান মেমরির জন্য DRAM ব্যবহার করে এমন একটি সিস্টেম বুটস্ট্র্যাপিংয়ের সমস্যাগুলির মধ্যে একটি হল তার হার্ডওয়্যার আরম্ভকরণ। ডিআরএমে লোড করা এবং মৃত্যুদন্ড কার্যকর করার আগে DRAM মেমরি কন্ট্রোলারটি শুরু করতে হবে। সুতরাং এই প্রাথমিককরণ কোডটি কোথায় থাকে, যেহেতু এটি মূল মেমরিতে থাকতে পারে না?
প্রতিটি বিক্রেতা তাদের নিজস্ব সমাধান আছে। বুট রম ব্যবহারের জন্য কিছুকে মেমোরি কনফিগারেশন ডেটা ননভোল্যাটাইল মেমরিতে সংরক্ষণ করতে হবে। কিছু SOCs একটি ছোট বুটস্ট্র্যাপ প্রোগ্রাম চালানোর জন্য SRAM সংহত করেছে (যা DRAM এর মতো প্রাথমিককরণের প্রয়োজন নেই)। কিছু SOCs একটি XIP বুটস্ট্র্যাপ প্রোগ্রাম ধরে রাখার জন্য NOR ফ্ল্যাশ ব্যবহার করে।
একবার বুটস্ট্র্যাপ প্রোগ্রামটি ডিআরএএম-এর সূচনা করে, তখন মেমরিটি বুট করার পরবর্তী পর্যায়ে লোড করতে ব্যবহার করা যেতে পারে। এটি একটি সুধুনিক বুট ইউটিলিটি যেমন ইউ-বুট, বা (যদি বুটস্ট্র্যাপ প্রোগ্রাম সক্ষম হয়) লিনাক্স কার্নেল হতে পারে। মনে রাখবেন যে অনেকগুলি বুটস্ট্র্যাপ প্রোগ্রাম বা স্তর থাকতে পারে যা OS এর কার্যকর করার জন্য প্রসেসর রিসেটের মধ্যে সঞ্চালিত হয়।
লিনাক্স এআরএম কার্নেল বুট করার প্রয়োজনীয়তা নিম্নলিখিত নথিতে বানানো হয়েছে: http://www.simtec.co.uk/products/SWLINUX/files/booting_article.html
Linux এআরএমের পুরোনো সংস্করণগুলি কার্নেলের মৌলিক কনফিগারেশন তথ্য পাস করার জন্য ATAGs তালিকা ব্যবহার করে। আধুনিক সংস্করণ একটি ডিভাইস ট্রি একটি কম্পাইল বাইনারি ব্যবহার করে একটি সম্পূর্ণ বোর্ড কনফিগারেশন প্রদান।
অবশ্যই "আপনি কিভাবে একটি বুটস্ট্র্যাপ করবেন?" প্রশ্ন কিছু যোগ্যতা ছাড়া উত্তর দেওয়া যাবে না।
পিসির BIOS এর মত, সোসাইটির বুট রম মালিকানাধীন এবং প্রকাশ করা হয় না (যদি না আপনি কোনও এনডিএতে সাইন ইন না করেন তবে)। তবে অন্যান্য বুট কোডটি জিপিএল বা অনুরূপ লাইসেন্সিংয়ের অধীনে এবং সহজে প্রাপ্তযোগ্য হিসাবে প্রকাশ করা হয়।
অভিযোজ্য বস্তু
যেহেতু আপনি এখন উল্লেখ করেছেন যে আপনি একটি Zynq 7000 ব্যবহার করছেন (যা একটি Xilinx SoC ব্যবহার করে), Xilinx একটি ভিডিও টিউটোরিয়াল আছে কিভাবে একটি লিনাক্স বুট ইমেজ নির্মাণ করা ।
যে ভিডিওটি আমি ইতিমধ্যে লিখিত করেছি তা নিশ্চিত করে:
1. এক্সিলিন্স এসওসিটিতে একটি এমবেডেড বুট রম রয়েছে (যা টেকনিক্যালি প্রথম পর্যায়ে রয়েছে, তবে এটি প্রায়শই উপেক্ষা করা বা স্টেজ শূন্য হিসাবে বর্ণনা করা হয়)।
2. পরবর্তী পর্যায়ে বুটস্ট্র্যাপ প্রোগ্রামের উৎস নির্দিষ্ট করার জন্য "মোড পিন" আছে।
3. বুট রম একটি বুটস্ট্র্যাপ প্রোগ্রাম লোড করে (যা টেকনিক্যালি দ্বিতীয় পর্যায়, তবে প্রায়শই "প্রথম" পর্যায় হিসাবে বর্ণনা করা হয়), যা এম্বেডেড SRAM এ FSBL নামে পরিচিত। এই প্রোগ্রামটি DRAM আরম্ভ করে এবং পরবর্তী ধাপে U-Boot লোড করে।
4. ইউ-বুট ডিআরএএম থেকে কার্যকর হয় এবং লিনাক্স কার্নেল লোড করে।
ভিডিওটি দেখায় যে FSBL সোর্স কোডটি Xilinx সাইট থেকে ডাউনলোড করা যেতে পারে এবং কয়েক ধাপে ক্রস-সংকলিত করা যেতে পারে। এমন কিছু নেই "ছলনা করা" আপনি অভিযোগ হিসাবে। বিল্ড একটি সোজা-অগ্রসর কনফিগারেশন এবং ক্রস-কম্পাইল, যা আমি সাধারণ অ্যাপ্লিকেশন প্যাকেজের চেয়ে সহজ / সহজ পাই।
সম্ভবত আপনার বিভ্রান্তি বুট মিডিয়ামের অস্পষ্টতা উপর ভিত্তি করে, যেমন বুট ইমেজগুলির উৎস (আছে) নির্দিষ্ট করা হয়নি। ভিডিও সম্ভাব্য বুট ডিভাইস হিসাবে NAND ফ্ল্যাশ এবং SDcard উল্লেখ।
বুট রম মোড পিন দ্বারা কনফিগার করা একটি উৎস মাধ্যম থেকে FSBL চিত্রটি পড়ার নির্দেশ দেওয়া হয়।
FSBL (যদি এটি অন্য বুটস্ট্র্যাপগুলির মতো হয় তবে এটি একটি কনফিগার করা উৎস মাধ্যম থেকে U-Boot পড়তে নির্মিত)। কোন রানটাইম বিকল্প আছে।
ইউ-বুট তার নামের ("সর্বজনীন") জীবিত থাকার চেষ্টা করে এবং বিভিন্ন ডিভাইস থেকে চিত্রগুলি (এবং স্ক্রিপ্টগুলি) লোড করতে কনফিগার করা যেতে পারে (পরিবেশের পরিবর্তনগুলি ব্যবহার করে)। ইন্টারেক্টিভ বিকল্প আছে।
এছাড়াও Xilinx উইকি দেখুন জিনক লিনাক্স , যা ঘোষণা করে যে "জিনকের বুটিং সম্পর্কিত সম্পূর্ণ তথ্য পাওয়া যাবে প্রযুক্তিগত রেফারেন্স ম্যানুয়াল "।