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

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

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

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

سلام بر شما. جلسه قبل با تولچین (Toolchain) آشنا شدیم. توی این قسمت میخوایم تولچین گنو یا همون GNU Toolchain رو بررسی کنیم، با اجزاش، انواع مختلفش و نوع نام گذاریش هم آشنا بشیم.

 

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

 

اجزای تولچین گنو

کریس میگه یه تولچین استاندارد گنو از سه تا کامپوننت اصلی تشکیل شده:
اولیش Binutils هست که در واقع یه ست از ابزار‌های باینری مثل اسمبلر و لینکر هست که از این لینک می‌تونین بش دسترسی داشته باشین.
دومیش که احتمال زیاد اسمش رو شنیدید، GNU Compiler Collection (GCC) هست. GCC در حقیقت یه سری کامپایلر‌(ها) ست واسه زبان C و بقیه زبان‌ها که این بقیه زبان‌ها بستگی به نسخه GCC می‌تونه شامل این زبان‌ها باشه:
C++, Objective-C, Objective-C++, Java, Fortran, Ada, Go
همه این کامپایلر‌(ها) از یک بک‌اند (Backend) مشترک استفاده می‌کنن که یه کد واسه اسمبلر گنو تولید می‌کنن.
سومیش C library یا کتابخانه سی هست، که در واقع یه API یا همون Application Program Interface هست که بر اساس POSIX استاندارد شده یا بهتر بگم منطبق هست با ویژگی‌های ذکر شده در استاندارد POSIX که رابط اصلی برنامه‌ها با کرنل سیستم عامل هست.
بچه زرنگ‌ها که می‌دونن POSIX چی هست، چون RDA1 به طور کامل توضیح داده.

(گل همه رنگش خوبه
بچه زرنگش خوبه ?

توی کتابا نوشته تنبلی کار زشته
تنبل همیشه خوابه جاش توی رختخوابه ?
.
.
تا اینجا شاعر خوب اومده بود!!!
یهو بر میگرده به طرز وحشتناکی میگه:
.
.
پاشو پاشو بیدارش کن از رختخواب جداش کن!!!
آخه بگو مگه آزار داری ☹️ . . . !)

همین‌جا بگم که این کتابخانه C چند مدل هست و هر کدوم هم به کاری آید، که بعداً بش خواهیم رسید.
علاوه بر این سه مورد، فایل‌های سرآیند کرنل لینوکس یا Linux Kernel Headers رو هم لازم داریم. این هدرها شامل یه سری تعاریف (Definitions) و یه سری ثابت‌ها (Constants) هستن که در زمان دسترسی مستقیم به کرنل لازم می‌شن.
توی شروع کار که ما هستیم کاربرد این هدرها در کامپایل کردن کتابخانه C هست ولی بعداً هم اگه برنامه‌ای یا کتابخانه‌ای رو بخوایم کامپایل کنیم که به طور مستقیم با کرنل در ارتباط هست مثل همون LED چشمک زن خودمون، بشون نیاز داریم.
علاوه بر این موارد یه مورد دیگه هم هست که خیلی مهم و خیلی پیشرفته هست، و خیلی از افراد اون رو جزئی از تولچین می‌دونن ولی ما فقط اسمش رو بتون میگیم و حالا حالاها سراغ آموزشش نمیریم!
دیباگر گنو یا همون GNU Debugger (GDB) که واسه خیلی‌هاتون شاید آشنا باشه.

 

انواع تولچین گنو (Toolchain)

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

  • زمانی که هر سه یکی باشن یا build == host == target. به این حالت می‌گن native که اکثراً در سیستم‌های دسکتاپ و سرور این مدل تولچین گنو رو داریم. مثلاً کامپایلر ویژوال استادیو روی یه سیستم x86_64 با سیتسم عامل ویندوز کامپایل شده و ما هم داریم روی همچین سیستمی ازش استفاده می‌کنیم.

 

  • زمانی که بیلد و هاست یکی باشن ولی با تارگت فرق کنن یا build == host!= target. به این حالت می‌گن cross که ما برای امبدد لینوکس بیشتر از تولچین‌های این مدلی استفاده می‌کنیم. یعنی روی لینوکس x86_64 تولچین گنو رو می‌سازیم (یا ساختن برامون) و روی همون سیستم ازش استفاده می‌کنیم در نهایت برنامه رو روی یه برد لینوکسی آرم 32 بیتی یا 64 بیتی اجرا می‌کنیم.

 

  • زمانی که هاست و تارگت یکی باشن ولی بیلد فرق کنه یا build!= host == target. به این حالت می‌گن cross-native که اکثراً خوراک دوستان رسپبری باز هست! مثلاً توی سیستم رسپبین شما یک gcc دارید که روی بردتون اجرا میشه و از سورس کدهاتون برنامه اجرایی واسه بردتون می‌سازه. ولی خود این gcc روی یه سیستم لینوکسی x86_64 احتمالاً ساخته شده.

 

  • آخرین حالت زمانی هست که هیچ کدوم با هم برابر نباشن یا build != host != target که بش Canadian یا Canadian Cross میگن. این حالت کاربردهای خوب زیاد داره ولی یکی از کاربردهای بدش! زمانی هست که یکی بخواد با لینوکس یه تولچین گنو واسه ویندوز بسازه که باش بتونه توی ویندوز با استفاده از ویژوال استادیو برای برد امبدد لینوکسش برنامه‌ نویسی کنه و برنامه‌ها رو کامپایل کنه!!
    صد البته آنان که این کار را می‌کنند، همانا “أَصْحابُ النّارِ هُمْ فِيها خالِدُونَ” هستند!
    (حالا چرا کانادایی؟ چون زمانی که همچین مسئله‌ای پیدا شده بود و بحثش داغ بود و می‌خواستن روش اسم بذارن کانادا سه تا حزب ملی داشت.)

 

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

امبدد لینوکس – قسمت هفتم – Toolchain یا زنجیره‌ای از ابزارهای لازم برای ساختن همه چیز (بخش سوم) را از اینجا میتونید مطالعه کنید، اما بهتره قبلش یه سری هم به نظرات این پایین بندازید، نظرات رو بخونید و اگر شما هم نظری دارید، مشارکت کنید!

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

author-avatar

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

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

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

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

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

  1. Avatar for Sarah Sarah گفت:

    جر خوردیم از خنده ::))

    1. Avatar photo Rich_Dad IRANEMBEDDED گفت:

      سلام بر شما
      خوشحالیم که این مقاله فنی، باعث شادی دوستان هم شده است ?

      گر چه راهیست پر از بیم ز ما تا بر دوست *** رفتن آسان بود ار واقف منزل باشی ?

  2. Avatar for Arash Arash گفت:

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

    1. Avatar photo Rich_Dad گفت:

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

  3. Avatar for صاحبی صاحبی گفت:

    سلام و سپاس از شما

    تولچین:
    — برد رزبری پای 3 بی:
    توی انجمن‌ رزبری پای تولچین‌های زیر رو پیشنهاد داده بودن:

    arm-bcm2708hardfp-linux-gnueabi
    arm-bcm2708-linux-gnueabi
    arm-linux-gnueabihf
    arm-rpi-4.9.3-linux-gnueabihf
    gcc-linaro-arm-linux-gnueabihf-raspbian
    gcc-linaro-arm-linux-gnueabihf-raspbian-x64

    نکته: توی نام گذاری تولچین زیاد استاندارد کار نکردن و نتونستم از روی اسم تولچین بیگ یا لیتل ایندین بودن رو تشخیص بدم :d

    توی این لینک روش ایجاد تولچین برای رزپری پای رو آموزش داده (هنوز برد نخریدم، فعلا در حال مطالعه پراکنده هستم)
    https://www.nayab.xyz/rpi3b-elinux/embedded-linux-rpi3-010-toolchain.html

    تولچین ویندوز:
    https://gnutoolchains.com/raspberry

    1. Avatar photo Rich_Dad گفت:

      سلام جناب صاحبی
      تشکر از توجه و همراهی شما

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

    درود
    ممنون از مطالب خوبتون

    1. Avatar photo Rich_Dad گفت:

      سلام امین جان
      تشکر می کنم

  5. Avatar for Mojtaba Mojtaba گفت:

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

    1. Avatar photo Rich_Dad گفت:

      سلام مجتبی جان
      تصحیح شد

  6. Avatar for Mahdi.h Mahdi.h گفت:

    مهندس این RDA1 چی هست که گفتید؟

    1. Avatar photo Rich_Dad گفت:

      سلام بر شما
      منظور از RDA1 اولین تمرینی هست که می بایست انجام شود و همان مطالعه فصل اول کتاب THE linux programming interface می باشد. و البته هدف تفهیم UNIX GNU Linux BSD GPL و مابقی مطالب می باشد.
      موفق باشید

  7. Avatar for عباس عباس گفت:

    عالی هست مهندس، خسته نباشید
    منتظر ادامه آموزش ها هستیم، پر قدرت ادامه بدید ??

    1. Avatar photo Rich_Dad گفت:

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

  8. Avatar for احسان احسان گفت:

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

    1. Avatar photo Rich_Dad گفت:

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

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

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

    1. Avatar photo Rich_Dad گفت:

      سلام و تشکر

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

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