(فصل دوم – بخش اول)
سلام بر عزیزان، با فصل دوم در خدمت شما هستیم. در قسمت قبل، با اصطلاحاتی مثل 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
هر فولدر از اسمش معلوم هست چی هست یا نه؟
نه، مشخص نیست دیگه !!
خوب توضیحات زیر رو از کتاب کِریم داشته باشید:
شاید بگید این همه فولدر بندی لازم نیست، شاید هم بگید wow! چقدر همه چی منظم و دسته بندی شده خواهد بود. آدمها متفاوتن دیگه. به هر حال توی این کار از Untitled و Untitled1 یا new folder استفاده نکنید چون این اندیس گذاری تون ممکنه برسه به 100 یا 1000 یا بیشتر!
چیست این Toolchain بلند ساده بسیار نقش زین معما هیچ دانا در جهان آگاه نیست
اولین قسمت امبدد لینوکس یا نقطه شروع یه پروژه امبدد لینوکس میشه تولچین.
از تولچین برای کامپایل کردن همه چیز استفاده خواهیم کرد واسه همین این انتخاب اولیه خیلی مهمه.
بهتره تولچینی انتخاب بشه (یا ساخته بشه) که با سختافزار ما منطبقتر باشه و زبان ماشین ما رو بهتر بفهمه و استفاده کنه. طبیعتاً باید بتونه زبانی که ما میخوایم باش برنامه بنویسیم رو بفهمه و بتونه کامپایل کنه و خوب این تولچین باید تا آخر پروژه ثابت باشه، واجب نیست صد درصدا ولی خوب واجبه!
من خیلی فکر کردم که بتونم بگم شبیه چی هست، بهترین مثالی که به ذهنم رسید اینه، امیدوارم خوب بفهمید:
فرض کنید میخوایم یه برج بسازیم، اون زمینی که انتخاب میکنیم روش برجمون رو بسازیم میشه پردازنده و اون پیمانکاری که برجمون رو میدیم بهش بسازه میشه تولچین!
حالا این تولچین (Toolchain) چی هست؟ اگه یکم سرچ کنیم به چنین جوابی میرسیم:
مجموعهای از ابزارهای نرمافزاری که برای ساختن (بیلد کردن) یه نرمافزار کامپیوتری لازم هست. به زبون خودمونی، اون نرمافزارهایی که باهاشون کدهامون رو تبدیل به فایل قابل اجرا روی پردازنده میکنیم.
خوب کیل هم خودش مجموعهای از ابزارهاست!
خوب حالا این مجموعه شامل چیا میشه؟ به درد چی میخوره؟
به طور سنتی، شامل لینکر، اسمبلر، آرشیور، کامپایلر (C و شاید سایر زبانها) و کتابخانه و هدرهای (سرآیندهای) زبان C میشه. البته که ممکنه یه سری ابزارهای دیگه هم باشن یا نباشن.
به طور معمول تولچین واسه لینوکس بر پایه یه سری کامپوننتها از پروژه گنو هست، البته جدیداً کامپایلری به اسم Clang و پروژه LLVM هم به دنیا اومدن که ما کاری به کارشون نداریم. طبیعتاً مثل هرچیز دیگهای مزایا و معایب خودش رو داره، فقط بدونید علاوه بر تفاوتهای فنی از نظر لایسنس گنو، GPL هست و LLVM، BSD هست.
http://clang.llvm.org/docs/CrossCompilation.html
ما از اینجا به بعد به بررسی تولچین گنو یا همون GNU Toolchain میپردازیم که اگه اسم GCC به گوشتون خورده باشه و ازش استفاده کرده باشین یعنی مشتریش بودین.
پایان بخش اول از فصل دوم.
بخش بعدی رو از اینجا میتونید مطالعه کنید، اما بهتره قبلش یه سری هم به نظرات این پایین بندازید، نظرات رو بخونید و اگر شما هم نظری دارید، مشارکت کنید!
همه آموزش های امبدد لینوکس
منبع:سیسوگ