توصیه شده, امبدد لینوکس, دوره آموزش امبدد لینوکس, مقاله های سیسوگ

امبدد لینوکس – قسمت پنجم – Toolchain یا زنجیره‌ای از ابزارهای لازم برای ساختن همه چیز (بخش اول)

امبدد لینوکس – قسمت پنجم

قسمت پنجم از دوره ورود به دنیای امبدد لینوکس که دوره مقدماتی آموزش امبدد لینوکس  می باشد با ما همراه باشید.

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

سلام بر عزیزان، با فصل دوم در خدمت شما هستیم. در قسمت قبل، با اصطلاحاتی مثل SoC، SBC، SoM و CoM و راهنمایی‌های لازم برای انتخاب برد مناسب، برای کامپایل لینوکس امبدد آشنا شدید. در این قسمت با مجموعه ابزارهایی که همه چیز رو با اونها خواهیم ساخت آشنا میشیم که بشون میگیم Toolchain.

 

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

 

از اولش منظم باشیم که آخرش گم نشیم! 

هممون این تجربه رو داریم که وقتی یه پروژه رو شروع می‌کنیم خیلی فایل‌ها بعد ازیه مدت واسه اون پروژه روی هاردمون داریم.
داکیومنت‌های مختلف مثل دیتاشیت‌ها، اپلیکیشن‌نوت‌ها، نرم‌افزارها، نمونه کدهایی که دانلود شده، کدهایی که نوشته شده، فایل‌های PCB و ….
خوب اینجا در بحث Embedded Linux حجم این فایل‌ها خیلی بیشتر هست نسبت به یه پروژه میکروکنترلری، خیلی خیلی بیشتر! حجمی در حد چند گیگ خیلی طبیعی هست واسه یه پروژه و ممکنه تا چند ده یا چند صد گیگ هم بشه حجم فایل‌هاتون. پس بهتره یه ساختار داشته باشید که سردردگم نشید بعداً.
شاید یه ساختار از قبل داشته باشید و با همون راحت باشین، اینجا هم از همون استفاده کنید ولی حتماً واسه ذخیره سازی اطلاعاتتون، ساختار داشته باشید!

می‌تونید واسه هر پروژه یه فولدر جدا داشته باشید که توش همه چیز مربوط به اون پروژه هست می‌تونید هم واسه هر بخش Embedded Linux یه فولدر داشته باشید و توی اون فولدر واسه هر پروژه یه فولدر بسازید.
همه این فولدرها هرجای سیستم‌تون می‌تونه باشه.
من واسه خودم ترجیح دادم یه فولدر توی Home داشته باشم که کل پروژه‌های Embedded Linux توش هست و بعد واسه هر پروژه یه فولدر می‌سازم و توش فولدرهای زیر که توصیه کِریم هست رو می‌سازم:

هر فولدر از اسمش معلوم هست چی هست یا نه؟
نه، مشخص نیست دیگه !!
خوب توضیحات زیر رو از کتاب کِریم داشته باشید:

فولدر بندی toolchain

شاید بگید این همه فولدر بندی لازم نیست، شاید هم بگید wow! چقدر همه چی منظم و دسته بندی شده خواهد بود. آدم‌ها متفاوتن دیگه. به هر حال توی این کار از Untitled و Untitled1 یا new folder استفاده نکنید چون این اندیس گذاری تون ممکنه برسه به 100 یا 1000 یا بیشتر!

 

چیست این Toolchain بلند ساده بسیار نقش     زین معما هیچ دانا در جهان آگاه نیست

 

GCC Compiler از ابزار های تولچین

GCC – GNU Toolchain

اولین قسمت امبدد لینوکس یا نقطه شروع یه پروژه امبدد لینوکس می‌شه تولچین.
از تولچین برای کامپایل کردن همه چیز استفاده خواهیم کرد واسه همین این انتخاب اولیه خیلی مهمه.
بهتره تولچینی انتخاب بشه (یا ساخته بشه) که با سخت‌افزار ما منطبق‌تر باشه و زبان ماشین ما رو بهتر بفهمه و استفاده کنه. طبیعتاً باید بتونه زبانی که ما میخوایم باش برنامه بنویسیم رو بفهمه و بتونه کامپایل کنه و خوب این تولچین باید تا آخر پروژه ثابت باشه، واجب نیست صد درصدا ولی خوب واجبه!
من خیلی فکر کردم که بتونم بگم شبیه چی هست، بهترین مثالی که به ذهنم رسید اینه، امیدوارم خوب بفهمید:
فرض کنید میخوایم یه برج بسازیم، اون زمینی که انتخاب می‌کنیم روش برجمون رو بسازیم میشه پردازنده و اون پیمانکاری که برجمون رو میدیم بهش بسازه میشه تولچین!

حالا این تولچین (Toolchain) چی هست؟ اگه یکم سرچ کنیم به چنین جوابی می‌رسیم:

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

اولین سؤال اینکه که چرا مجموعه‌ای از ابزارها، چرا نمیشه با یه نرم‌افزار مثل کیل همه این کارها رو کرد؟
خوب کیل هم خودش مجموعه‌ای از ابزارهاست!
خوب حالا این مجموعه شامل چیا میشه؟ به درد چی میخوره؟
به طور سنتی، شامل لینکر، اسمبلر، آرشیور، کامپایلر (C و شاید سایر زبان‌ها) و کتابخانه و هدرهای (سرآیندهای) زبان C میشه. البته که ممکنه یه سری ابزارهای دیگه هم باشن یا نباشن.
به طور معمول تولچین واسه لینوکس بر پایه یه سری کامپوننت‌ها از پروژه گنو هست، البته جدیداً کامپایلری به اسم Clang و پروژه LLVM هم به دنیا اومدن که ما کاری به کارشون نداریم. طبیعتاً مثل هرچیز دیگه‌ای مزایا و معایب خودش رو داره، فقط بدونید علاوه بر تفاوت‌های فنی از نظر لایسنس گنو، GPL هست و LLVM، BSD هست.

http://clang.llvm.org/docs/CrossCompilation.html

https://www.embtoolkit.org/

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

پایان بخش اول از فصل دوم.

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

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

author-avatar

درباره Rich_Dad (آنی روت)

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

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

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

15 دیدگاه در “امبدد لینوکس – قسمت پنجم – Toolchain یا زنجیره‌ای از ابزارهای لازم برای ساختن همه چیز (بخش اول)

  1. Avatar for یحیی نتاج یحیی نتاج گفت:

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

    1. Avatar photo Rich_Dad گفت:

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

  2. Avatar for علی علی گفت:

    سلام. خدا قوت. از سری آموزش هاتون خیلی لذت برده و استفاده می کنم. مفاهیم بسیار پیچیده را خیلی روان و قابل فهم بیان می کنید.

    1. Avatar photo Rich_Dad گفت:

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

  3. Avatar for مهدی مهدی گفت:

    سلام خسته نباشید مهندس بنظر من برای سخت افزار همون برد لایچی نانو ازهمه بهتره چون همه میتونن تهیه کنن و ارزان هم هست

    1. Avatar photo Rich_Dad گفت:

      سلام بر مهدی
      ممنون از شما، یک نظر سنجی جدید پیرامون موضوع انتخاب سخت افزار در تلگرام گذاشتیم
      https://t.me/sisoog/993

      به نظر میاد Raspberry Pi 3 Model B را عده ای داشته باشند و البته بقیه دوستان هم باهاش آشنا تر هستند
      و از طرفی LicheePi Nano قیمت بسیار پایین تری داره (حدود یک هشتم!) و همراهان جدید با هزینه بسیار کمتری میتوانند آنرا تهیه و به ما بپیوندند.

      یکی از موارد مهم در این بخش کار اینست که آموزش ها اساساً بر بستر معماری SoC انخاب شده می باشد و امکانات جانبی روی برد تاثیر عمیقی بر اصل آموزش ندارد، یعنی استفاده از LicheePi Nano از لحاظ قیمت به صرفه تر است و استفاده از Raspberry Pi 3 Model B به نظر عزیزان شاید سهل تر می آید، که البته هیچ اختلافی در زمینه سهل تر بودن یا نبودن با هم ندارند و روال کسب مهارت یکسان است.

      با تشکر
      موفق باشید

      1. Avatar for علی علی گفت:

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

        1. Avatar for علی نادری علی نادری گفت:

          با سلام.
          برای خرید LicheePi-Nano F1C100s میتونید از این فروشگاه تهییه کنید.
          https://skytech.ir/product_details.aspx?ID_Parts=633&LicheePi-Nano
          صرفا جهت اطلاع رسانی نه تبلیغ!

      2. Avatar for مهدی مهدی گفت:

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

  4. Avatar for رامین رامین گفت:

    مثل همیشه عالی.?
    من همراه این آموزش بینظیر هستم

    1. Avatar photo Rich_Dad گفت:

      سلام، ممنون از همراهی تان

  5. Avatar for حسین حسین گفت:

    سپاس .
    استفاده بردم.

    1. Avatar photo Rich_Dad گفت:

      سلام
      موفق باشید

  6. Avatar for آرمین آرمین گفت:

    سلام وقت بخیر.
    توی نظرات بخش قبل گفته بودین که “در حال بررسی و آماده سازی مطلب پیرامون انتخاب سخت افزار هستیم”. میخواستم بدونم اون بخش همچنان در دست اقدامه یا دیگه نخواهیم داشت؟ چون منتظر بودم نظرات شما رو بشنوم و بعد اقدام به خریداری کنم.
    با تشکر.

    1. Avatar photo Rich_Dad گفت:

      سلام بر آرمین عزیز
      بله با توجه به نظر دوستان در حال جمع بندی هستیم و به زودی اطلاع رسانی هایی انجام خواهد شد
      با ما باشید

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

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