امبدد لینوکس – قسمت چهاردهم – Bootloader

امبدد لینوکس – قسمت چهاردهم – Bootloader

امبدد لینوکس – قسمت چهاردهم – Bootloader
امبدد لینوکس – قسمت چهاردهم – Bootloader

از قسمت قبل که در آن با انواع روش‌های بیلد کردن، کراس کامپایل و چالش‌های آن آشنا شدیم و حال قرار است با Bootloader آشنا شویم، زمان زیادی می‌گذرد امیدواریم عذرخواهی ما رو بابت این تأخیر و فاصله پیش‌آمده پذیرا باشید. در این مدت دوستان زیادی لطف کردند و با پیام‌های خودشان و پیگیری باعث دلگرمی شدند. امیدواریم در کنار هم باز این مقالات را ادامه بدهیم و باهم به آخرین مقاله فصل آخر برسیم.

فصل سوم: Bootloader، یار قدیمی

همه ما میدانیم (یا بدونید) خیلی از میکروکنترلرها مثل خانواده‌های STM32، بوت لودر Bootloader در ROM خودشان دارند. خیلی از ما هم ممکنه در پروژه‌های میکروکنترلری از بوت لودر (Bootloader) استفاده کرده باشیم. اما داستان در اینجا یکم متفاوت‌تر هست. اگر در پروژه‌های میکروکنترلری یه وقتایی خوب بود باشه واسه یه سری کارها مثل آپدیت کردن فریمور اینجا واجبه که باشه! چرا؟                                     

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

برای مطالعه‌ی بیشتر  امبدد لینوکس لطفا بر روی لینک کلیک کنید.

 

چه میکنه این Bootloader

بوت لودر Bootloader دومین بخش از امبدد لینوکس ما میشه و کرنل سیستم‌عامل رو واسه ما لود میکنه. در حقیقت Bootloader دو تا وظیفه داره: راه‌اندازی اولیه سخت‌افزارها در حدی که بشه سیستم‌عامل رو اجرا کرد و بعدش اجرای سیستم‌عامل. بعد از روشن شدن پردازنده و یا ریست شدن آن سیستم ما خیلی منابع کمی داره هنوز نه رم خارجی راه‌اندازی شده، نه حافظه‌های خارجی مثل NAND فلش یا کارت حافظه و نه سایر سخت‌افزارها! درواقع فقط یک هسته از پردازنده هست و یک حافظه داخلی و ثابت همون پردازنده! به خاطر همین فرآیند بوت شدن شامل چند مرحله میشه که در هر مرحله منابع سخت‌افزاری جدیدی راه‌اندازی میشه و به سیستم اضافه میشه.

آخرین کار آماده سازی محیط لازم و اجرای کرنل هست.

 

توالی بوت

قدیما که همه‌چیز گل‌وبلبل بود (نبودا ولی همه میگن ما هم گفتیم فقط!) معمولاً از حافظه‌های NOR Flash استفاده می‌شد و این حافظه‌ها رو مستقیم مپ می‌کرد، فرآیند بوت خیلی ساده بود ولی با پردازنده‌ها و حافظه‌های الان فرآیند بوت چندمرحله‌ای شده و خیلی وابسته به SoC هست ولی معمولاً مراحلی می‌شه که در ادامه می‌گوییم.

 

مرحله یک: اجرای کد ROM

به نظرتون وقتی‌که پردازنده تازه روشن میشه یا بلافاصله بعد از ریست شدنش، چه کدی باید لود بشه و از کجا؟ دقت کنید هنوز نه رم خارجی داریم نه حافظه‌های خارجی راه‌اندازی شدن. اولین کد از حافظه فقط خواندنی خود SoC اجرا می‌شه که در زمان تولید در این حافظه ذخیره‌شده. از اونجایی که راه‌اندازی DRAM ها خیلی به مدل DRAM وابسته هست، راه‌اندازی این حافظه‌ها در کد ROM نیست و این کد فقط می‌تونه از SRAM استفاده کنه که نیازی به کنترلر نداره.

اگه مشخصات SoC ها رو دیده باشید همشون یه حافظه SRAM دارن با ظرفیت چند کیلو تا چند ده کیلوبایت. وجود این حافظه دقیقاً واسه همین هست. معمولاً کد ROM این توانایی رو داره که یک مقدار مشخص کد رو از یک محل مشخص در یک حافظه خارجی مشخص توی SRAM لود کنه و اگه این کد پیدا نشه معمولاً میتونه یک استریم رو از USB یا USART یا Ethernet بخونه. حالت آخر معمولاً برای نوشتن کد در حافظه‌های خارجی به هنگام تولید کاربرد داره.

به این مشخص‌ها دقت کنید، اطلاعات کشف کردنی نیستن! اطلاعات دیتاشیتی هستن و بسته به هر پردازنده یا شرکت تولیدکننده متفاوت هستن. مثلاً پردازنده‌های راک چیپ Rock Chip اول سکتور 0x40 کارت حافظه SD رو چک می‌کنند بعدش eMMC بعدش SPI Flash و آگه هیچ کدوم فایل idbloader.img رو نداشت میرن تو مؤدی که از طریق USB میشه حافظه‌های خارجی متصل به پردازنده رو پروگرام کرد.

یا پردازنده‌های سیتارا تگزاس TI Sitara اول سراغ NAND Flash میرن بعدش SPI Flash بعدش SD و درنهایت eMMC. معمولاً چون حجم SRAM خیلی کم هست کد ROM نمی‌تونه یک بوت لودر Bootloader کامل رو توش کپی کنه و یک لودر مقدماتی که بش Secondary Program Loader یا به‌اختصار SPL میگن رو لود میکنه توی SRAM و بقیه کارها رو میسپاره به اون.

 

Bootloader

SPL into SROM

مرحله دوم: SPL

SPL کنترلر حافظه رو راه‌اندازی میکنه و Tertiary Program Loader (TPL) رو توی حافظه SDRAM کپی می‌کنه و کار رو به اون می‌سپاره. SPL ممکنه اپشن سورس باشه و یا به‌صورت یه فایل باینری از طرف شرکت سازنده SoC بهتون داده بشه.

 

مرحله سوم: TPL

آری رسد سیستم به‌جایی که بتواند یک Bootloader کامل را اجرا کند! این Bootloader کامل میتونه گزینه‌های بسیاری باشه ولی چیزی که مرسوم‌تر و پرکاربردتر هست U-Boot هست. این بوت لودرها Bootloader معمولاً یک خط فرمان Command Line ساده دارن که با آن‌ها یک سری کارها رو میشه انجام داد. عکس زیر نشون می‌ده که در مرحله سه چه اتفاق‌هایی می‌افته. معمولاً در پایان مرحله سه اثری از Bootloader نیست.

از Bootloader تا کرنل

وقتی‌که Bootloader سیستم رو داره میسپاره دست کرنل یک سری اطلاعات رو به کرنل می‌ده، این اطلاعات میتونه چیزهای مختلفی مانند machine number یا kernel command line و … باشه. پردزانده‌های ARM که بیشتر موردبحث و استفاده ما هستند امروزه تمام اطلاعات رو در غالب Device Tree به کرنل تحویل می‌دن. با Device Tree در فصل بعد که به کرنل می‌پردازیم آشنا خواهید شد. به‌پایان این بخش رسیدیم در بخش بعدی با یوبوت U-Boot آشنا می‌شیم و اون رو برای بردهامون Compile می‌کنیم.

 

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

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

 

حمایت از Rich_Dad IRANEMBEDDED

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

1 نفر

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

توجه

Rich_Dad IRANEMBEDDED
Rich_Dad IRANEMBEDDED

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

دیدگاه ها

8 دیدگاه

  • صاحبی
    ۳ خرداد ۱۴۰۱

    سلام، من الکترونیکی نیستم، اما با آموزش‌های شما بسیار به eLinxux علاقه‌مند شدم.
    دوباره اموزش ها رو از اول مرور کردم 😉 سپاس از شما 🙂

    • Rich_Dad IRANEMBEDDED
      Rich_Dad IRANEMBEDDED
      ۳ خرداد ۱۴۰۱

      سلام و ارادت
      خوشحال هستم که در جمع ما هستید و مطالب براتون مفید بوده
      در این دوره زمانی داشتن مهارت بین رشته ای در تیم های کاری و شرکت ها، یکی از اصول موفقیت به حساب می آید

      لطفاً میفرمایید در چه حوزه و گرایشی فعالیت دارید؟

  • radikal
    ۱ خرداد ۱۴۰۱

    هییییییییییییییییییچی نمیفهمم

    • Rich_Dad IRANEMBEDDED
      Rich_Dad IRANEMBEDDED
      ۲ خرداد ۱۴۰۱

      سلام بر شما دوست عزیز
      مبحث امبدد لینوکس را از ابتدا دنبال کنید و تمامی مراحل اجرایی و مطالعاتی آن را انجام دهید
      از اینکه کنار ما، در خانواده سیسوگ و بخش امبدد لینوکس هستید، بسیار خوشحالیم 🌹

  • امیر
    ۲۶ اردیبهشت ۱۴۰۱

    خیلی ممنون
    خیلی وقت بود منتظر بودم
    ان شاا… قسمت های بعدی رو زودتر ببینیم
    🙏🙏

    • Zeus ‌
      Zeus ‌
      ۲۷ اردیبهشت ۱۴۰۱

      ما هم خیلی چشم به راه بودیم 🙂

      • Rich_Dad IRANEMBEDDED
        Rich_Dad IRANEMBEDDED
        ۲ خرداد ۱۴۰۱

        سلام، همه ما ارادت ویژه به شما داریم 😉

    • Rich_Dad IRANEMBEDDED
      Rich_Dad IRANEMBEDDED
      ۲ خرداد ۱۴۰۱

      سلام امیر جان، ما هم خوشحال هستیم که توانستیم مطالب را مجدد ادامه بدیم
      در این مدت اتفاق های زیادی افتاده و گذشته!
      و تشکر می کنم از پیگیری مطالب از طف شما دوست عزیز❤️

      به نوبه خودم تشکر می کنم از تیم محترم سیسوگ که این بستر قدرتمند را برای ارتباط بین همکاران و الکترونیکی های عزیز فراهم کردند و به نحوی یک خانواده تشکیل داده اند، که در فضای الکترونیک کشور زبان زد است.

      پایداری و ارتقاء این اکو سیستم حتماً با حمایت های همه جانبه، جامعه الکترونیک کشور، پیشرفت بیشتری خواهد داشت.🌹

پر بحث ترین ها

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Mahdi.h   Mahdi.h  
  • 2 سال پیش
سیـــســـوگ

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