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

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

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

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

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

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

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

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

mkdir ~/EmbededLinux
cd ~/EmbededLinux
mkdir f1c100s
cd f1c100s
mkdir bootldr build-tools debug doc images kernel project rootfs sysapps tmp tools

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

toolchain
toolchain

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

 

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

 

GCC – GNU Toolchain
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 به گوشتون خورده باشه و ازش استفاده کرده باشین یعنی مشتریش بودین.

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

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

منبع:سیسوگ

 

مطلب قبلیآموزش STM32 با توابع LL قسمت اول: پردازنده‌های ARM
مطلب بعدیدانلود نرم‌افزار STM32CubeProgrammer

پاسخ دهید

لطفا نظر خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید