امبدد لینوکس, توصیه شده, دوره آموزش امبدد لینوکس, مقاله های سیسوگ

امبدد لینوکس – قسمت شانزدهم – Bootloader (بخش سوم)

استفاده از یوبوت برای اجرای لینوکس

در قسمت قبل به بررسی بوت لودر (U-boot) پرداختیم و اون رو بر روی سخت افزار خودمون اجرا کردیم، حالا توی این قسمت میخوایم استفاده از یوبوت برای اجرای لینوکس رو آموزش دهیم و سیستم فایلمون رو به لینوکس متصل کنیم.

استفاده از یوبوت برای اجرای لینوکس

یوبوت (U-Boot) از یک رابط خط-فرمان (Command-line) استفاده می‌کنه.

این رابط نسبت به رابط خط-فرمان لینوکس خیلی ابتدایی هست و تقربیا به جز backspace از هیچ کنترل دیگه‌ای نمی‌تونین استفاده کنید. البته تنظیمات یوبوت (U-Boot) رو می‌شه عوض کرد جوری که خط-فرمان اون منطبق با Hush باشه که من تا حالا این کار رو نکردم و نمی‌خوام بکنم!!!

به صورت پیش‌فرض اعداد در این خط-فرمان یوبوت (U-Boot) در مبنای ۱۶ یا همون هگزادسیمال خودمون هستن.

در قسمت‌های قبلی آموزش، مسیر حرکت و فصل‌های پیش رو، بسیاری از مفاهیم موردنیاز و سؤال‌ها و ابهامات شما در این دوره پاسخ‌داده‌شده است.
پس اگر اولین بار است که این آموزش را شروع می‌کنید، با توجه به سلسله‌مراتب پیش‌بینی‌شده برای آموزش‌ها، بهتر است از جلسه اول شروع کنید!

برای آموزش امبدد لینوکس کلیک کنید.

متغیرهای محیطی یوبوت U-Boot

یوبوت (U-Boot) برای انتقال اطلاعات بین توابع و یا دستورات مختلف از متغیرهای محیطی استفاه میکنه.

مقادیر اولیه بسیاری از متغیرهای در سورس فایل‌های مربوط به هر برد/ پردازنده تعریف شدن.

بسته به نوع حافظه‌تون شما هم می‌توانید متغیرهای جدیدی رو تعریف و ذخیره کنید.

با دستور زیر می‌تونید تمام متغیرهای تعریف شده رو ببیند:

 

با این دستور هم می‌تونید متغیر جدید my_website رو با مقدار aniroot.com تعریف کنید:

با دستور saveenv هم می‌تونید متغیر خودتون رو واسه همیشه ذخیره کنید.

 

آماده سازی فایل‌ها برای لود شدن توسط یوبوت (U-Boot)

یوبوت (U-Boot) فایل سیستم نداره و از یک سرایند بیتی برای شناسایی فایل‌ها استفاده میکنه، برای ساختن این سرایند ابزاری هست به نام mkimage که هم می‌تونید از طریق مدیربسته‌های ابونتو نصبش کنید و هم اینکه از توی فولدر tools استفاده‌ش کنید:

با تایپ کردن خط بالا در خط-فرمان لینوکس یک سری توضیحات در مورد این ابزار بهتون می‌ده و با سرچ کردن هم می‌تونید اطلاعات بیشتری به دست بیارید.

مثلاً این یک مدل از استفاده از این دستور هست.

داریم برای معماری ARM اون هم از نوع ۶۴ بیتی برای سیستم عامل لینوکس یه فایل از نوع اسکریبپ رو آماده می‌کنیم.

 

بارگزاری ایمیج توسط یوبوت (U-Boot)

با توجه به حافظه‌ای که می‌خوایم از اون ایمیج یا هر اطلاعاتی رو بارگزاری کنیم و فایل سیستم اون حافظه دستورات مختلفی داره یوبوت (U-Boot).

مثلاً برای بارگزاری از حافظه SD که با فایل سیستم FAT32 فرمت شده میتوینم از دستور زیر استفاده کنیم:

در این مثال از حافظه شماره SD شماره صفر میخوایم فایل Image رو در آدرس kernel_addr_r (که خود kernel_addr_r  از متغیرهای محیطی  یوبوت U-Boot هست) بارگزاری کنیم.

 

بوت کردن لیونکس

خب حالا می‌خوایم از یوبوت (U-Boot) استفاده کنیم و لینوکس رو روی بردمون اجرا کنیم.

برای این کار به یک سری فایل‌ نیاز هست که توی فصول بعدی باشون آشنا می‌شیم و یاد میگیریم چه‌جوری بسازیمشون. چون اینجا لازمشون داریم  من این فایل‌ها رو ساختم و آماده‌ش رو واسه دانلود توی این مقاله قرار دادم تا بتونیم با هم پیش بریم و با یوبوت U-Boot بیشتر آشنا بشیم.

این فایل‌ها چیاهستن؟

کرنل لینوکس، دیوایس‌تریز و فایل سیستم روت اولیه.

اول تک تک این فایل‌ها رو در آدرس مربوطه بارگزاری میکنیم.

سوال: این آدرس رو از کجا باید بدونیم؟

جواب این آدرسها بعضی وقتا یونیک هستن ولی اغلب یونیک نیستن و با داشتن اطلاعاتی از حافظه رم و نحوه آدرس دهیشون توسط پردازنده و حجم فایل میشه بشون رسید ولی اغلب در راهنماهای شرکت سازنده مقادیر مناسب پیشنهاد شده.

تذکر از کپی پیست کردن دستورات زیر خودداری کنید و دستور را کامل تایپ کنید!

 

خب بعدش متغیر محیطی  bootargs رو مقدار دهی می‌کنیم که درحقیقت همون ارگومان‌هایی هست که به کرنل میدیم:

 

در نهایت با این دستور کرنل رو بارگزاری میکنیم:

خب کرنل شروع شد…

البته به لطف رسپبری پای تا اینجا رو بیشتر نداریم و نمیتونید وارد محیط لینوکس بشید.

قصه‌اش هم مفصل هست رسپبری پای از سریال اصلی برای بلوتوث استفاده میکنه و اصلا رسپبری پای بوت لودر خودش رو داره و میونه خوبی با یوبوت (U-Boot) نداره و بهتره از همون بوت لودر خودش که سورسش در دسترس نیست استفاده کنید…

البته که منطقی نبود در دو خط نحوه استفاده از بوت لودر رسپبری پای رو بگیم و این فصل رو با دو خط آموزش منتشر کنیم 🙂

ولی خب برای یادگیری  یوبوت (U-Boot) و استفاده از اون برای بقیه‌ی پروژه‌ها الان آماده هستین تقریبا.

چرا تقریبا؟

چون کدوم برد رو دیدن هر دفعه برای اجرای لینوکس یکی بیاد با سریال بش وصل بشه و یه سری دستورات رو تایپ کنه و …

بله روند بوت باید به صورت خودکار انجام بشه.

برای این کار یه فایل باید کنار بقیه فایل‌ها توی SD کارت بذارین

محتویاتش دقیقاً همون‌هایی هست که در خط-فرمان  یوبوت (U-Boot) تایپ کردیم و بعدش باید با mkimage برای یوبوت (U-Boot) آماده‌ش کنید:

و حالا با این دستور آماده‌ش کنیم برای ریختن روی SD کارت:

از این به بعد با روشن شدن برد خود به خود لینوکس اجرا میشه.

اگه یه روزی خواستیم بریم توی محیط یوبوت (U-Boot) کافیه اولش تند تند تایپ کنیم 🙂 در اینجا این فصل هم تمام میشه، اما آنچه ما بدان نپرداختیم و شاید روزی به کارتان اید پورت کردن  یوبوت (U-Boot) برای برد جدید هست. میتونه هم کار خیلی راحتی باشه هم کار بیش از حد سختی. پیشنهاد میکنم برید دنبالش و به عنوان تمرین یوبوت (U-Boot) رو روی لیچی‌پای و برای پردازنده F1C100s اجرا کنید.

 

یه سری هم به نظرات این پایین بندازید، نظرات رو بخونید و اگر شما هم نظری دارید، لطفا با ما به اشتراک بگذارید!

همه آموزش های امبدد لینوکس

پایان این فصل

author-avatar

درباره Rich_Dad (آنی روت)

طراحی، بهینه سازی و تولید محصولات الکترونیکی، درحوزه های تجاری،صنعتی و تجهیزات پزشکی، مجری سیستم های امبدد لینوکس *( مهندسی-بازرگانی آنی روت https://aniroot.com )

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

2 دیدگاه در “امبدد لینوکس – قسمت شانزدهم – Bootloader (بخش سوم)

  1. Avatar for امیر امیر گفت:

    سلام
    آقا خدا خیرت بده
    جواب سوالایی که مدت ها تو سرم بود رو دارم یکی یکی طی این آموزش ها پیدا میکنم
    خدا به شما اجر دنیوی و اخروی بده
    ??????

    1. Avatar photo Rich_Dad IRANEMBEDDED گفت:

      سلام امیر جان
      حال و احوال! خوشحال شدیم از این حس خوب شما ❤️
      امیدوارم در کار هم لذتش را ببرید ?

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *