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

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

امبدد لینوکس – قسمت شانزدهم – Bootloader (بخش سوم)
امبدد لینوکس – قسمت شانزدهم – 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 اجرا کنید.

 

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

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

 

پایان این فصل

حمایت از Rich_Dad IRANEMBEDDED

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

Rich_Dad IRANEMBEDDED
Rich_Dad IRANEMBEDDED

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

دیدگاه ها

2 دیدگاه

  • امیر
    ۷ تیر ۱۴۰۱

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

    • Rich_Dad IRANEMBEDDED
      Rich_Dad IRANEMBEDDED
      ۲۱ تیر ۱۴۰۱

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

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 10 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک