Elinux, توصیه شده, مقاله

امبدد لینوکس – قسمت سوم – کی از کامپیوتر تک بردی 5 دلاری استفاده کنیم؟

(فصل اول – بخش اول ) 

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


خیلی‌هاتون احتمالا GNU/Linux رو شنیده باشین یا دیده باشین. حالا چی هستن اینا؟
لینوکس که یه هسته هست و گنو GNU هم اینه: GNU’s Not UNIX! از این مدل مخفف‌ها توی دنیای اپن‌سورس زیاد می‌بنید پس تعجب نکنید! 🙂
همه چیز از UNIX و C شروع می‌شه و از اونجایی که ما با تکنولوژی بزرگ نشدیم، یعنی چی این حرفم؟ شخصی رو در نظر بگیرید که از قبل از پیدایش C برنامه نویسی می‌کرده و تو حوزه کامپیوتر فرد فعالی بوده این آدم خیلی چیزها رو می‌دونه!
خیلی از نام‌گذاری‌ها، استانداردها و بقیه موارد واسش خاطره ست!
متأسفانه من خودم اون آدم نیستم! و استادی هم نداشتم که از اون زمان باشه و باسواد باشه! منظورم از با سواد تعریف دکتر مصطفی جعفری از باسواد هست:

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

واسه همین خوندن فصل اول کتاب زیر خیلی به من کمک کرد و اولین تمرین برای این بخش:
این‌که بخونیدش، تا بفهمید UNIX GNU Linux BSD GPL و … چی هستن.

معرفی منبع مطالعه عمیق:

KERRISK, MICHAEL. THE LINUX PROGRAMMING INTERFACE: A LINUX AND UNIX SYSTEM PROGRAMMING HANDBOOK. NO STARCH PRESS, 2010.

معرفی کتاب THE LINUX PROGRAMMING INTERFACE

 

به صورت خیلی خلاصه ولی علمی (این مطلب مستقیماً از سایت gnu.org ترجمه شده است)

گنو یک سیستم عامل هست و بر مبنای نرم‌افزار آزاد. این سیستم عامل از یک سری پکیج‌های گنو تشکیل شده و یک سری نرم‌افزارهای رایگان که شرکای ثالث منتشر کردن.
گنو در کنار لینوکس، به عنوان هسته سیستم عامل، میشه GNU/Linux که یک سیستم عامل کامل و رایگان هست.

برای Embedded Linux چه دانش‌هایی لازم است؟

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

 

سیستم‌های امبدد

بردهای امبدد

شما باید با توسعه، برنامه نویسی و عیب یابی یک سیستم امبدد چه در جنبه سخت‌افزار چه در جنبه نرم‌افزار آشنا باشید. (خوشبختانه این دانش رو داریم عموماً ولی اگه کسی نداره و دوست داشت کتاب «میکروکنترلرهای AVR برنامه نویسی اسمبلی و C» از استاد مزیدی توصیه میشه.)

 

مدیریت سیستم‌های یونیکسی

خط فرمان یونیکس

خودمونیش میشه کار کردن با لینوکس رو بلد باشین، حالا نه در حد خیلی پیشرفته، در حد کاربر معمولی هم کافیه.
با Shell و کدهایی که باش نوشته می‌شه آشنا باشین یعنی هم بتونین بخونین هم بنویسین.
تنظیمات سخت افزاری و نصب‌های نرم‌افزاری رو بتونین انجام بدین و …
توی این زمینه کتاب‌های زیادی هست که من نخوندم و نمی‌دونم کدوم خوبه! فقط یک کتاب رو چند سال پیش ناقص خوندم و راضی بودم! منابع فارسی هم زیاد هست تو این زمینه که بگردین پیدا میشه و اگه خواستین دنبال منابع بهتر باشین این رو جستجو کنید Linux System Administration.

 

معرفی منبع مطالعه عمیق:
SHOTTS JR, WILLIAM E. THE LINUX COMMAND LINE: A COMPLETE INTRODUCTION. NO STARCH PRESS, 2012.

کتاب خط فرمان لینوکس THE LINUX COMMAND LINE

غیر خودمونیش هم میشه در حد LPIC1 یکم کمتر و بیشتر بلد باشین که عمو جادی تو این زمینه ویدیو و کتاب خیلی خوبی داره.

 

درایور نویسی در لینوکس

درایور لینوکس

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

یعنی چی؟

ما معمولاً از سخت‌افزارهای جانبی‌ای استفاده می‌کنیم که روی خود SBC مون هست یا سازنده SOM درایور اون سخت افزار رو در اختیار ما گذاشته، ولی اگه یه روز خواستین مثلاً آی‌سی Wi-Fi یی رو استفاده کنید که هیچ کس اون را با SOC مورد نظر شما راه اندازی نکرده، به این موضوع دقت داشته باشید، می بایست خودتون بتونید این کار را انجام بدید و کار را پیش ببرید.

این مبحث در حد آشنایی توی خیلی از کتاب‌های Embedded Linux هست ولی خوب کِریم میگه باید خودتون بلد بوده باشین!

 

معرفی منبع مطالعه عمیق:

RODOLFO GIOMETTI. LINUX DEVICE DRIVER DEVELOPMENT COOKBOOK. PACKT PUBLISHING, 2019

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

ALBERTO LIBERAL DE LOS RÍOS. LINUX DRIVER DEVELOPMENT FOR EMBEDDED PROCESSORS. ALBERTO LIBERAL DE LOS RÍOS, 2018.

کتاب LINUX DRIVER DEVELOPMENT FOR EMBEDDED PROCESSORS

نحوه عملکرد داخلی کرنل

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

 

ابزارهای توسعه نرم‌افزار گنو

باید ابزارهای گنو رو بشناسید، کاربردهاشون رو بدونید، آپشن‌ها و فلگ‌هاشون رو بلد باشین و بتونین ازشون به بهترین شکل استفاده کنین.
این‌ها چیزهایی بود که کِریم گفت واسه بهترین استفاده از Embedded Linux باید بلد باشین ولی برای استفاده معمولی همون آشنا بودن با این موارد کافی هست.
یه مورد دیگه هم که کِریم نگفته چون کتابش کلاً تا بالا اومدن سیستم هست و بعدش رو کاری نداره! چون بعدش عملاً دیگه یه لینوکس داریم ما، ولی ما لازمش داریم چون اکثر پروژه‌هامون فقط همین قسمت هست، یعنی یه برد آماده گرفتیم با همه امکانات و فقط میخوایم پروژه رو انجام بدیم، Linux System Programming هست.
اکثر پروژه‌های دنیای Embedded Linux ارتباطات مستقیم با سیستم عامل و سخت‌افزارها دارن، مثلاً این که یه LED چشمک زن داشته باشیم که نمایشگر قلب سیستم هست توی پروژه‌های ما معموله، این میشه همون Linux System Programming.
دو تا کتاب تو این زمینه هست یکی خلاصه‌تر، یکی مفصل‌تر که پیشنهاد من اینه اول کتاب خلاصه‌تر رو بخونید تا کلیت بحث دستتون به یاد بعد از کتاب مفصل‌تر به عنوان رفرنس استفاده کنید.
البته Linux System Programming رو به زبون‌های دیگه مثل Go هم میشه انجام داد و کتاب هست تو این زمینه.

LOVE, ROBERT. LINUX SYSTEM PROGRAMMING: TALKING DIRECTLY TO THE KERNEL AND C LIBRARY. ” O’REILLY MEDIA, INC.”, 2013.

کتاب برنامه نویسی سیستم لینوکس

خوب این از پیش‌نیازها!!! چهار تا کتاب هم هست که موضوعشون Embedded Linux هست و نسبت به بقیه کتاب‌ها جامعیت بیشتری دارن.
کتاب کِریم رو اول به خونین بعدش کتاب کریس رو و بعد اگه حالش رو داشتین دو تا کتاب دیگه رو. البته با خوندن کتاب کِریم خود به خود کتاب‌های بعدی رو سریع و راحت می‌خونید. ولی اگه کتاب‌های بعدی رو اول شروع کنید به خوندن همه چی برعکس می‌شه!
یه سایت خوب هم هست که می‌تونه خیلی بتون کمک کنه elinux.org.

 

معرفی منبع مطالعه عمیق:

KARIM YAGHMOUR, JON MASTERS, GILAD BEN-YOSSEF, PHILIPPE GERUM. BUILDING EMBEDDED LINUX SYSTEMS. O’REILLY MEDIA, INC., 2008.

کتاب طراحی و ساخت امبدد لینوکس

 

HALLINAN, CHRISTOPHER. EMBEDDED LINUX PRIMER: A PRACTICAL REAL-WORLD APPROACH. PEARSON EDUCATION INDIA, 2011.

کتاب آموزش امبدد لینوکس EMBEDDED LINUX PRIMER

SIMMONDS, CHRIS. MASTERING EMBEDDED LINUX PROGRAMMING. PACKT PUBLISHING LTD, 2017.

کتاب استاد شدن در برنامه نویسی لینوکس

ABBOTT, DOUG. LINUX FOR EMBEDDED AND REAL-TIME APPLICATIONS. ELSEVIER, 2018.

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

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

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

Rich_Dad

درباره Rich_Dad

طراحی،بومی سازی، بهینه سازی و تولید سیستم هاومحصولات الکترونیکی وکنترلی،با توجه به تکنولوژی روز و نیاز تولیدکنندگان میهن عزیزمان ایران درحوزه های تجاری،صنعتی و تجهیزات پزشکی

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

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

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

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

14 دیدگاه در “امبدد لینوکس – قسمت سوم – کی از کامپیوتر تک بردی 5 دلاری استفاده کنیم؟

  1. علیرضا ابریشمی گفت:

    سلام. کتاب Linux Device Driver Development Cookbook رو از کجا می شه تهیه کرد؟ من سرچ کردم pdf پیدا نکردم.

    1. Rich_Dad Rich_Dad گفت:

      سلام جناب ابریشمی عزیز
      وقت بخیر
      البته ما جستجو کردیم و در این سایت بود😉 LibGen
      http://libgen.rs

      موفق باشید

  2. آرمین زارع آرمین گفت:

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

    1. Rich_Dad Rich_Dad گفت:

      سلام بر آرمین عزیز
      جواب شما <> است، یعنی نیازی نیست همه منابع را مطالعه کرده و سپس به قسمت بعدی بروید.
      شما طبق روال با آموزش ها حرکت کنید و پس از اتمام مقاله ها، نیاز هست که حداقل یک بار دیگر کلیه آموزش ها را از ابتدا انجام داده و منابع معرفی شده را با دقت بیشتری مطالعه نمایید.
      موفق باشید

      1. آرمین زارع آرمین گفت:

        سلام. ممنون از پاسختون. ممنون. متوجه شدم. فقط قسمت اول پاسخ منظورتون از “جواب شما است” رو نفهمیدم.

        1. Rich_Dad Rich_Dad گفت:

          سلام بر آرمین

          عبارت این بوده :
          جواب شما خیر است

          1. آرمین زارع آرمین گفت:

            سلان و ارادت. سپاسگزارم.
            همراهتونیم تا آخرش.

  3. ehsan گفت:

    ممنون از شما.
    بی صبرانه منتظر ادامه مطالبتون هستیم

      1. آرمین زارع آرمین گفت:

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

  4. عباس گفت:

    عالی و زیبا
    همچنان منتظر ادامه آموزش هستیم.
    و یک حرکت عملی عالی

    1. Rich_Dad Rich_Dad گفت:

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

  5. Mohammad Noori noorsun0035 گفت:

    سلام جناب مهندس.
    وقت بخیر. خدا قوت.

    باز هم بسیار عالی و جالب بود. ولی اینبار با منابع سنگین تر. برای منابع کتابهای ترجمه شده فکر کنم نباشد. چون من مدتی دنبال این مبحث بودم. حتی استادی که درایور نویسی لینوکس یاد بدهد چند سال پیش در لایتک شریف بود که به خارج مهاجرت کردند. و در سال یک بار دوره درایور نویسی داشتند به مدت 6 ماه. البته یک جلسه بنده افتخار دیدار ایشان را داشتم. ولی در آن روزها من متوجه اهمیت دوره نشدم. چون نیازی هم به آن نداشتم. ولی بعدها که مورد نیاز شد دیگر استاد نبودند.

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

    منتظر خبر خوب شما هستم.

    1. Rich_Dad Rich_Dad گفت:

      سلام بر شما
      وقت بخیر

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

      موفق باشید