بوت در Embedded Linux

مقدمه
در AM335x، کد ROM به عنوان بارگذار بوتاسترپ عمل میکند که گاهی اوقات به عنوان بارگذار برنامه اولیه (IPL) یا بارگذار برنامه اولیه (PPL) یا بارگذار برنامه ROM (RPL) شناخته میشود. تصویر زیر نمای کلی در توالی بوت Embedded Linux را نشان میدهد.

بوت شدن در Embedded Linux در دو مرحله متوالی توسط فایلهای باینری U-Boot تکمیل میشود.
فایل باینری مرحله اول U-Boot به عنوان بارگذار برنامه ثانویه (SPL) یا MLO شناخته میشود.
فایل باینری مرحله دوم U-Boot به سادگی U-Boot نامیده میشود. SPL یک بارگذار غیر تعاملی است و نسخهای ویژه از U-Boot است. این فایل همزمان با ساخت U-Boot ساخته میشود.
بوت حافظه: بوت شدن دستگاه با شروع کد ذخیره شده روی حافظههای دائمی مانند فلش مموری یا کارتهای حافظه. این فرآیند معمولاً پس از تنظیم مجدد سرد یا گرم دستگاه انجام میشود.
بوت شدن لوازم جانبی: بوت شدن دستگاه با دانلود کد اجرایی از طریق رابط ارتباطی مانند UART، USB یا اترنت. این فرآیند برای فلش کردن دستگاه در نظر گرفته شده است.
بوت کردن SPL در Embedded Linux
کد ROM میتواند تصویر SPL را از هر یک از دستگاههای زیر بارگذاری کند:
– بوت کردن حافظه با MMC
– بوت کردن لوازم جانبی با UART
۱) بوت حافظه با MMC
تصویر باید دارای هدر تصویر باشد. هدر تصویر به طول ۸ بایت است که شامل آدرس بارگذاری (نقطه ورود) و اندازه تصویر برای کپی شدن است. RBL تصویر را که اندازه آن توسط فیلد طول در هدر تصویر داده میشود، از دستگاه کپی کرده و در آدرس حافظه داخلی مشخص شده در فیلد آدرس بارگذاری هدر تصویر بارگذاری میکند.
هنگام استفاده از بوت حافظه، یک هدر باید به فایل باینری SPL متصل شود که آدرس بارگذاری و اندازه تصویر را نشان میدهد. بوت SPI علاوه بر این، قبل از فلش کردن تصویر، نیاز به تبدیل endian دارد.

کد ROM از بوت شدن از کارتهای MMC/SD در شرایط زیر پشتیبانی میکند:
– کارتهای MMC/SD مطابق با مشخصات سیستم کارت چندرسانهای و مشخصات کارت ورودی/خروجی دیجیتال امن با ظرفیتهای کم و زیاد.
– کارتهای MMC/SD متصل به MMC0 یا MMC1.
– پشتیبانی از ۳.۳/۱.۸ ولت در MMC0 و MMC1.
– حالت MMC اولیه ۱ بیتی، حالت ۴ بیتی اختیاری، در صورت پشتیبانی دستگاه.
– فرکانس ساعت: حالت شناسایی: ۴۰۰ کیلوهرتز؛ حالت انتقال داده تا ۱۰ مگاهرتز.
– در حالت سیستم فایل (FAT12/16/32 با یا بدون رکورد بوت اصلی پشتیبانی میشود)، دادههای تصویر از یک فایل بوت خوانده میشوند.
– در حالت خام، دادههای تصویر مستقیماً از سکتورهای ناحیه کاربر خوانده میشوند.
۲) بوت شدن دستگاه جانبی با UART
RBL تصویر را در آدرس حافظه داخلی x402f0400 بارگذاری و اجرا میکند. هیچ هدر تصویری وجود ندارد.
هنگام استفاده از بوت شدن دستگاه جانبی (UART)، هیچ هدری نمیتواند وجود داشته باشد زیرا آدرس بارگذاری ثابت است.
کد ROM از بوت شدن از UART در شرایط زیر پشتیبانی میکند:

– بوت UART از UART0 استفاده میکند.
– UART0 طوری پیکربندی شده است که با سرعت ۱۱۵۲۰۰ بیت بر ثانیه، ۸ بیت، بدون parity، ۱ بیت توقف و بدون کنترل جریان اجرا شود.
– بوت UART از پروتکل کلاینت x-modem برای دریافت تصویر بوت استفاده میکند.
– ابزارهایی مانند hyperterm، teraterm، minicom را میتوان در سمت کامپیوتر برای دانلود تصویر بوت به برد استفاده کرد.
– کد ROM میزبان را ۱۰ بار در ۳ ثانیه پینگ میکند تا انتقال x-modem شروع شود. اگر میزبان پاسخ ندهد، بوت UART دچار وقفه زمانی میشود.
– پس از شروع انتقال، اگر میزبان به مدت ۳ ثانیه هیچ بستهای ارسال نکند، بوت UART با وقفه مواجه میشود.
– اگر تأخیر بین دو بایت متوالی از یک بسته بیش از ۲ میلیثانیه باشد، از میزبان درخواست میشود که کل بسته را دوباره ارسال کند.
برای آشنایی بیشتر با سیستمهای نهفته و Embedded Linux میتوانید به نیرابلاگ مراجعه نمایید.
امیدوارم این راهنما جامع و مفید باشد!