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

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

امبدد لینوکس – قسمت سوم - کی از کامپیوتر تک بردی 5 دلاری استفاده کنیم؟
امبدد لینوکس – قسمت سوم - کی از کامپیوتر تک بردی 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 IRANEMBEDDED

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

0 نفر

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

توجه

Rich_Dad IRANEMBEDDED
Rich_Dad IRANEMBEDDED

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

دیدگاه ها

16 دیدگاه

  • بهزاد
    ۷ دی ۱۴۰۰

    انگار یه دریا پیدا کردم…. آقا خیلی مرسی….. زییییاد..

    • Rich_Dad IRANEMBEDDED
      Rich_Dad
      ۸ دی ۱۴۰۰

      سلام بهزاد جان
      با لذت شنا کنید

  • علیرضا ابریشمی
    ۲۴ شهریور ۱۳۹۹

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

    • Rich_Dad IRANEMBEDDED
      Rich_Dad
      ۲۹ شهریور ۱۳۹۹

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

      موفق باشید

  • آرمین
    ۱۸ مرداد ۱۳۹۹

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

    • Rich_Dad IRANEMBEDDED
      Rich_Dad
      ۲۹ شهریور ۱۳۹۹

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

      • آرمین
        ۲۹ شهریور ۱۳۹۹

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

        • Rich_Dad IRANEMBEDDED
          Rich_Dad
          ۱ مهر ۱۳۹۹

          سلام بر آرمین

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

          • آرمین
            ۱ مهر ۱۳۹۹

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

            0
  • ehsan
    ۲۱ تیر ۱۳۹۹

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

    • Rich_Dad IRANEMBEDDED
      Rich_Dad
      ۳۱ تیر ۱۳۹۹

      سلام و تشکر

      • آرمین
        ۲۰ شهریور ۱۳۹۹

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

  • عباس
    ۱۸ تیر ۱۳۹۹

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

    • Rich_Dad IRANEMBEDDED
      Rich_Dad
      ۲۱ تیر ۱۳۹۹

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

  • noorsun0035
    ۱۸ تیر ۱۳۹۹

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

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

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

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

    • Rich_Dad IRANEMBEDDED
      Rich_Dad
      ۳۱ تیر ۱۳۹۹

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

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

      موفق باشید

پر بحث ترین ها

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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