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

blog
۱۳۹۹-۰۶-۰۲
3 دقیقه

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

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

سلام، توی قسمت قبل رابطه بین تولچین و نوع پردازنده رو بررسی کردیم. توی این جلسه می‌خواهیم کتابخانه‌های C و ارتباط برنامه‌های لینوکسی با کرنل رو بررسی کنیم.

 

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

 

کتاب‌خانه C و کرنل

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

کتابخانه C و کرنل

چندین کتاب‌خانه C برای ارتباط با کرنل داریم الآن، که در زمان کتاب کریم اکثراً نبودن و یه سری چیزهای دیگه بوده که ما کاری به کارشون نداریم چون منسوخ شدن. الآن کریس میگه اینا رو داریم:
glibc: کتاب‌خانه استاندارد گنو هست و از سایتش قابل دسترس هست. از نظر سایز خیلی بزرگه ولی منطبق‌ترین کتابخانه با POSIX API هست.
musl libc: این جدید هست و از اینجا قابل دسترسه. با وجود این‌که جدیده توجه بسیاری رو به خودش جلب کرده نه چون جذابه چون هم سایزش کمه و هم خیلی منطبق با استاندارد هست و جایگزین خوبی هست واسه glibc مخصوصاً اگه مشکلات حافظه داشته باشین.
uClibc-ng: در ابتدا برای میکروکنترلرها یا بهتر بگیم پردازنده‌هایی که Memory Management Unit (MMU) ندارن و از uCLinux استفاده می‌کنن بود ولی امروزه برای لینوکس کامل هم استفاده می‌شه. کریس زیاد باش حال نمی‌کنه ولی پر کاربرد هست هنوزم! از اینجا می‌تونین بهش دسترسی داشته باشین.

 

حالا کی از کدوم استفاده کنیم؟

همه این کتاب‌خانه‌های C برای ارتباط با کرنل هستند، اما اینکه از کدوم کتاب‌خونه کی و کجا استفاده کنیم، کریس یه حساب کتاب سر انگشتی داده که تو عکس زیر می‌بینید و توی توضیحات گفته که جاهایی که محدودیت حافظه دارین musl libc بهتر از uClibc-ng هست.

رابطه بین لایبری های مختلف C و کرنل لینوکس

 

نحوه نام‌گذاری تولچین گنو (GNU Toolchain)

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

CPU-Vendor-Kernel-OperatingSystem

CPU: معماری پردازنده، اگه پردازنده فقط Little Endian باشه ممکنه یه el داشته باشه و اگه فقط Big Endian ممکنه eb داشته باشه. مثلا armeb.

Vendor: کسی یا جایی که تولچین رو ساخته مثلا ‌Buildroot یا Poky.

Kernel: کرنل واسه ما همیشه لینوکس هست که یه جاهایی هم واسه اختصار حذف می‌شه. اگه هم تولچین واسه برمتال یا همون Bare Metal باشه معمولاً none هست. برمتال هم یعنی همون کاری که با میکروکنترلر می‌کنیم و بدون سیستم عامل و مستقیم واسه پردازنده کد می‌نویسم.

OperatingSystem: اسم کتابخانه C که معمولاً ABI هم بهش میچسبه مثلاً gnueabi یا musleabihf.
مثلاً armv8l-linux-gnueabihf توی سایت لینارو یعنی تولچینی که واسه معماری armv8 هست از نوع Little Endian برای لینوکس و با کتابخانه C گنو و EABIHF.

تولچین آماده استفاده کنیم یا خودمون بسازیم؟

اگه واسه پردازنده‌ای که دارید استفاده می‌کنید شرکت سازنده پردزانده و یا شرکت طراح معماری پردازنده یا شرکت سازنده برد، تولچینی ارائه داده باشه بهتره از اون استفاده کنید. در کل به جز شرایط خاص هیچ وقت نرید سراغ ساختن تولچین چون کار تخصصی هست.
خب این سایت‌ها چیا هستن؟ بهترینش واسه پردازنده‌های Cortex-A سایت Linaro هست. واسه بقیه پردازنده‌ها هم جوینده یابنده ست!

 

تمرین

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

 

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

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

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

اطلاعات
9
0
لینک و اشتراک
profile

Rich_Dad (آنی روت)

متخصص الکترونیک

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

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

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

دیدگاه ها

profile
حسن گفت :
۱۴۰۳-۰۱-۲۵ ۱۹:۵۴

سلام برای bare metal چرا باید toolchain نوشت ؟
برای bootloader هست مثلا
چون توی arm stm32 مثلا لایبراری های hal و ll هست یا حتی خود arduino که گویا به کد بوتلودر اشون ربط داره

profile
Zeus ‌ گفت :
۱۴۰۳-۰۱-۲۶ ۰۹:۳۶

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

profile
منصور گفت :
۱۴۰۲-۰۶-۱۰ ۱۹:۰۰

برای Raspberry PI 3 چهار ویژگی به صورت زیر هست :

armv7l-broadcom-linux-gnueabihf

و اینم لینک گیت هاب برای دانلود تولچین:
https://github.com/raspberrypi/tools

profile
صاحبی گفت :
۱۴۰۰-۰۳-۱۹ ۱۲:۴۸

بر اساس اطلاعات مستند

F1C100 معماری ARM هست با طراحی Little Endian، ممیز شناور رو نتونستم تشخیص بدم داره یا نه (اما فکر کنم جایی خوندم که نداره، شایدم داشته باشه، زیاد سر ننداختم، فعلا در حال مطالعه سریع و چند باره این فصل هستم تا مقداری موضوعاتش رو بیشتر درک کنم)

profile
Rich_Dad گفت :
۱۴۰۰-۰۳-۲۱ ۱۷:۰۱

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

profile
احسان گفت :
۱۳۹۹-۰۶-۱۸ ۰۱:۰۳

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

profile
Rich_Dad گفت :
۱۳۹۹-۰۶-۲۵ ۱۷:۳۳

سلام بر احسان عزیز و پیگیری که دارید

profile
یحیی نتاج گفت :
۱۳۹۹-۰۶-۱۳ ۰۸:۱۹

خیلی عالی ممنونم.

profile
Rich_Dad گفت :
۱۳۹۹-۰۶-۲۵ ۱۷:۳۲

سلام و تشکر

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله