امبدد لینوکس قسمت هفدهم – Linux Kernel (بخش اول)

امبدد لینوکس قسمت هفدهم – Linux Kernel (بخش اول)

امبدد لینوکس قسمت هفدهم – Linux Kernel (بخش اول)
امبدد لینوکس قسمت هفدهم – Linux Kernel (بخش اول)

در فصل قبلی در مورد بوت لودر و وظیفه اون که راه‌اندازی اولیه سخت‌افزار و لود کردن کرنل هست صحبت کردیم، حالا توی این فصل می‌خواهیم در مورد اینکه کرنل لینوکس (Linux Kernel) چه‌کارهایی می‌کند، چه جوری کرنل لینوکس رو انتخاب کنیم، چه جوری بیلدش کنیم و درنهایت دیوایس تری (Device Tree) چی هست صحبت کنیم.

 

کرنل لینوکس Linux Kernel

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

کرنل لینوکس Linux Kernel چه کارهایی میکنه

تولد سیستم‌عامل لینوکس به سال ۱۹۹۱ و زمانی که لینوس توروالدز نوشتن یک سیستم‌عامل رو برای برخی از کامپیوترهای شخصی اینتل شروع کرد برمیگرده.
لینوس توروالدز در حقیقت تنها کرنل لینوکس یا هسته لینوکس رونوشت و برای بقیه‌ی قسمت‌های این سیستم‌عامل از پروژه گنو استفاده کرد.
کرنل لینوکس سه تا کار مهم رو انجام می‌ده: مدیریت منابع، برقراری ارتباط با سخت‌افزار و فراهم کردن API برای برنامه‌های فضای کاربر. (در قسمت هفتم گفته بودیم API چی هست)
به این عکس دقت کنید تا بیشتر توضیح بدم:

kernel linux

به صورت خیلی ساده و غیر علمی: ما  یک سخت‌افزار داریم که کرنل لینوکس  با اون در ارتباط هست.

کرنل لینوکسی داریم که به همه منابع سخت‌افزار دسترسی داره و اون‌ها رو مدیریت می‌کنه و یه سری کارهای دیگه هم توی فضای خودش انجام می‌ده.
یه سری برنامه‌ها هم هستن که ما می‌نویسیم و قرار هست اجرا بشن و یه سری کارها رو انجام بدن.
برنامه‌های ما منابع خیلی کمی در اختیار دارن و برای استفاده از منابع بیشتر و یا دسترسی به سخت‌افزار باید با استفاده از کتابخانه‌های C از کرنل لینوکس بخوان واسشون اون کار رو انجام بده. واسه همین کرنل لینوکس خیلی خیلی خیلی مهمه و توی انتخابش خیلی باید دقت کنیم. پس با من بیاید تا باهم یاد بگیریم چه جوری کرنل لینوکس رو باید انتخاب کرد.

 

انتخاب کرنل لینوکس Linux Kernel

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

 

چرخه توسعه لینوکس

کرنل لینوکس با سرعت نسبتاً زیادی توسعه پیدا می‌کنه و هر ۸ تا ۱۲ هفته یک بار یه نخسه جدید منتشر میشه.
تا قبل ازنسخه ۲.۶ نام‌گذاری کرنل لینوکس سه عددی بود مثل ۲.۶.۱۱. عدد وسط آگه زوج بود یعنی نسخه کاربر هست و آگه فرد بود یعنی نسخه توسعه‌دهندگان هست.
به خاطر اینکه این روش باعث می‌شد تغییرات و ویژگی‌های جدید خیلی دیر به نسخه کاربر منتقل بشن دیگه از نسخه ۲.۶ به بعد کلاً کنار گذاشته شد.
در جولای ۲۰۱۱ نسخه بعد از ۲.۶.۳۹ نسخه ۳ نامگذاری شد، چرا؟ صرفاً چون لینوس حس می‌کرد دیگه خیلی عددا دارن طولانی میشن!
همین‌طور توی اپریل ۲۰۱۵ عدد اصلی از ۳ به ۴ و توی مارچ ۲۰۱۹ به ۵ تغییر کرد.

 

نسخه‌های پایدار Stable و پشتیبانی بلند مدت long-term support

گفتیم که هر نسخه جدید ۸ تا ۱۲ هفته یک بار منتشر میشه. این از جهت رفع باگ و به‌روز شدن خوبه ولی خب در مقایسه با عمر پروژه‌های امبدد خیلی کم هست.
اگه یه سر به سایت کرنل لینوکس بزنیم این عکس رو می‌بینیم:

کرنل لینوکس

یه نسخه mainline داریم یه نسخه stable و چندین تا longterm
حالا اینا چی هستن؟
Mainline آخرین نسخه کرنل لینوکس هست.
Stable نسخه قبلی هست که الان پایدار شده و هنوز هم پشتیبانی و آپدیت میشه منتهی نه واسه مدت طولانی.
Longterm نسخه‌هایی هستن که طولانی‌مدت پشتیبانی و آپدیت میشن مثلاً نسخه ۴.۹ از سال ۲۰۱۷ تا الان داره پشتیبانی و آپدیت میشه و به ۴.۹.۳۱۶ رسیده!
به این نسخه‌ها به‌اختصار LTS میگن.
معمولاً برای شروع یه پروژه امبدد لینوکس بهترین گزینه آخرین longterm هست.

 

حمایت‌های فروشنده

قاعدتاً باید این‌جوری باشه که ما آخرین کرنل لینوکس (Linux Kernel LTS) رو از خود سایت kernel.org دانلود کنیم یا گیت کنیم و برای برد یا SoC مون بیلدش کنیم و بدون مشکل استفاده کنیم.
در عمل برای اکثر پردازنده‌ها و بردها این امکان وجود نداره و توسط mainline ساپورت نمیشن.
مثلاً عموم پردازنده‌های راک چیپ یا الوینر که توی پروژه‌های ما خیلی پرکاربرد هستن درایور GPU شون توسط mainline ساپورت نمیش.
توی این شرایط معمولاً باید از نسخه‌ای از لینوکس استفاده کنیم که خود اون فروشنده برد یا سازنده SoC در اختیار ما میذاره.
در پرانتز بگویم که حتی این امر برای رسپبری‌پای هم صادق هست و بهتره کرنل لینوکس رو از سایت خود رسپبری‌پای بگیریم.

 

ساختن کرنل لینوکس Linux Kernel

خب من تصمیم داشتم آخرین نسخه LTS رو واسه رسپبری‌پای بیلد کنم ولی این کار اشتباه هست!
چرا؟ چون خودشون گفتن!
پس من هر دو روش رو میگم یکی از جایی که خودشون گفتن یکی هم آخرین LTS ولی درنهایت کرنل لینوکس خودشون رو بیلد می‌کنیم.

 

گرفتن سورس

در حال حاضر آخرین LTS نسخه ۵ هست. ممکنه زمانی که شما بخواین این کار رو انجام بدین نسخه جدید اومده باشه که باکمی تغییرات در دستورات زیر می‌توانید اون رو استفاده کنید. با این دستور من میتونم اون رو دانلود کنم.

خب حالا که کرنل لینوکس رو گرفتیم بریم اکسترکتش کنیم.

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

حالا بریم یه سرک بکشیم توی فولدرهای کرنل لینوکس ببینیم چی داریم. بله سرک، اصلاً به فکر نگاه عمیق کردن بش نباشید بیشتر از ۵۷ هزارتا فایل هست و میلیون‌ها خط کد! الان دو تا فولدر داریم که محتویات جفتشون یه ساختار داره:

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

kernel folder desc

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

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

 

6 نفر

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

توجه

Rich_Dad IRANEMBEDDED
Rich_Dad IRANEMBEDDED

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

دیدگاه ها

2 دیدگاه

  • جعفر
    ۲ شهریور ۱۴۰۱

    دستتون درد نکنه. مهندس به شدت منتظر بقیش هستیم

    • Rich_Dad IRANEMBEDDED
      Rich_Dad IRANEMBEDDED
      ۱۹ شهریور ۱۴۰۱

      سلام بر شما
      تشکر از توجه تان، بچه ها به شدت مشغول تکمیل مطالب هستند

پر بحث ترین ها

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

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

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

Zeus ‌ Zeus ‌
  • 3 سال پیش
راه اندازی LCD گرافیکی Nokia 1661

راه اندازی LCD گرافیکی Nokia 1661

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

Zeus ‌ Zeus ‌
  • 4 سال پیش
ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

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

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

Zeus ‌ Zeus ‌
  • 5 سال پیش
همه چیز درباره ریموت کنترل‌های هاپینگ

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

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

Zeus ‌ Zeus ‌
  • 5 سال پیش
مسابقه سوم: استخراج داده از رشته ها در زبان C

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

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

Zeus ‌ Zeus ‌
  • 2 سال پیش
مسابقه ششم: بزن میکروکنترلر را بسوزون!

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

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

Zeus ‌ Zeus ‌
  • 12 ماه پیش
آموزش قدم به قدم راه اندازی NRF24L01

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

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

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش
کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

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

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

Mahdi.h   Mahdi.h  
  • 3 سال پیش
ساخت ماینر با FPGA و ARM

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

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

Zeus ‌ Zeus ‌
  • 3 سال پیش
مسابقه چهارم: کدام حلقه سریع‌تر است؟

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

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

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

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