قسمت پنجم از دوره ورود به دنیای امبدد لینوکس که دوره مقدماتی آموزش امبدد لینوکس می باشد با ما همراه باشید.
(فصل دوم – بخش اول)
سلام بر عزیزان، با فصل دوم در خدمت شما هستیم. در قسمت قبل، با اصطلاحاتی مثل SoC، SBC، SoM و CoM و راهنماییهای لازم برای انتخاب برد مناسب، برای کامپایل لینوکس امبدد آشنا شدید. در این قسمت با مجموعه ابزارهایی که همه چیز رو با اونها خواهیم ساخت آشنا میشیم که بشون میگیم Toolchain.
در قسمتهای قبلی آموزش، مسیر حرکت و فصلهای پیش رو، بسیاری از مفاهیم مورد نیاز و سؤالها و ابهامات شما در این دوره پاسخ داده شده است.
پس اگر اولین بار است که این آموزش را شروع میکنید، با توجه به سلسله مراتب پیش بینی شده برای آموزشها، بهتر است از جلسه اول شروع کنید!
جلسه اول آموزش، ورود به دنیای امبدد لینوکس
همه آموزشهای امبدد لینوکس
از اولش منظم باشیم که آخرش گم نشیم!
هممون این تجربه رو داریم که وقتی یه پروژه رو شروع میکنیم خیلی فایلها بعد ازیه مدت واسه اون پروژه روی هاردمون داریم.
داکیومنتهای مختلف مثل دیتاشیتها، اپلیکیشننوتها، نرمافزارها، نمونه کدهایی که دانلود شده، کدهایی که نوشته شده، فایلهای PCB و ….
خوب اینجا در بحث Embedded Linux حجم این فایلها خیلی بیشتر هست نسبت به یه پروژه میکروکنترلری، خیلی خیلی بیشتر! حجمی در حد چند گیگ خیلی طبیعی هست واسه یه پروژه و ممکنه تا چند ده یا چند صد گیگ هم بشه حجم فایلهاتون. پس بهتره یه ساختار داشته باشید که سردردگم نشید بعداً.
شاید یه ساختار از قبل داشته باشید و با همون راحت باشین، اینجا هم از همون استفاده کنید ولی حتماً واسه ذخیره سازی اطلاعاتتون، ساختار داشته باشید!
میتونید واسه هر پروژه یه فولدر جدا داشته باشید که توش همه چیز مربوط به اون پروژه هست میتونید هم واسه هر بخش Embedded Linux یه فولدر داشته باشید و توی اون فولدر واسه هر پروژه یه فولدر بسازید.
همه این فولدرها هرجای سیستمتون میتونه باشه.
من واسه خودم ترجیح دادم یه فولدر توی Home داشته باشم که کل پروژههای Embedded Linux توش هست و بعد واسه هر پروژه یه فولدر میسازم و توش فولدرهای زیر که توصیه کِریم هست رو میسازم:
1 2 3 4 5 | 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 بلند ساده بسیار نقش زین معما هیچ دانا در جهان آگاه نیست
GCC – GNU Toolchain
اولین قسمت امبدد لینوکس یا نقطه شروع یه پروژه امبدد لینوکس میشه تولچین.
از تولچین برای کامپایل کردن همه چیز استفاده خواهیم کرد واسه همین این انتخاب اولیه خیلی مهمه.
بهتره تولچینی انتخاب بشه (یا ساخته بشه) که با سختافزار ما منطبقتر باشه و زبان ماشین ما رو بهتر بفهمه و استفاده کنه. طبیعتاً باید بتونه زبانی که ما میخوایم باش برنامه بنویسیم رو بفهمه و بتونه کامپایل کنه و خوب این تولچین باید تا آخر پروژه ثابت باشه، واجب نیست صد درصدا ولی خوب واجبه!
من خیلی فکر کردم که بتونم بگم شبیه چی هست، بهترین مثالی که به ذهنم رسید اینه، امیدوارم خوب بفهمید:
فرض کنید میخوایم یه برج بسازیم، اون زمینی که انتخاب میکنیم روش برجمون رو بسازیم میشه پردازنده و اون پیمانکاری که برجمون رو میدیم بهش بسازه میشه تولچین!
مجموعهای از ابزارهای نرمافزاری که برای ساختن (بیلد کردن) یه نرمافزار کامپیوتری لازم هست. به زبون خودمونی، اون نرمافزارهایی که باهاشون کدهامون رو تبدیل به فایل قابل اجرا روی پردازنده میکنیم.
اولین سؤال اینکه که چرا مجموعهای از ابزارها، چرا نمیشه با یه نرمافزار مثل کیل همه این کارها رو کرد؟
خوب کیل هم خودش مجموعهای از ابزارهاست!
خوب حالا این مجموعه شامل چیا میشه؟ به درد چی میخوره؟
به طور سنتی، شامل لینکر، اسمبلر، آرشیور، کامپایلر (C و شاید سایر زبانها) و کتابخانه و هدرهای (سرآیندهای) زبان C میشه. البته که ممکنه یه سری ابزارهای دیگه هم باشن یا نباشن.
به طور معمول تولچین واسه لینوکس بر پایه یه سری کامپوننتها از پروژه گنو هست، البته جدیداً کامپایلری به اسم Clang و پروژه LLVM هم به دنیا اومدن که ما کاری به کارشون نداریم. طبیعتاً مثل هرچیز دیگهای مزایا و معایب خودش رو داره، فقط بدونید علاوه بر تفاوتهای فنی از نظر لایسنس گنو، GPL هست و LLVM، BSD هست.
http://clang.llvm.org/docs/CrossCompilation.html
ما از اینجا به بعد به بررسی تولچین گنو یا همون GNU Toolchain میپردازیم که اگه اسم GCC به گوشتون خورده باشه و ازش استفاده کرده باشین یعنی مشتریش بودین.
پایان بخش اول از فصل دوم.
ممنونم از لطف و زحمات بی دریغتون.
واقعا با توجه به گستردگی مباحث لینوکس به یک راهنمای مناسب از جانب اشخاصی که الکترونیک کار هستن نه کامپیوتری نیاز بوده.خواهش می کنم آموزش رو متوقف نکنید و همواره تجارب شخصی و عملی کار با لینوکس رو به همراه لینک های آموزشی قرار بدید.
انشالله این بخش به یک مرجع آموزشی خوب امبدد لینوکس برای همه تبدیل بشود.
سلام بر یحیی عزیز
از حسن توجه شما به مقاله های امبدد لینوکس کمال تشکر را دارم
امیدوارم بتوانیم ارائه ای درخور داشته باشیم که باعث پیشرفت و ارتباط پایدار مابین افراد با مهارت و توانمند و صنعت کشور عزیزمان ” ایران ” گردد.
موفق باشید
سلام. خدا قوت. از سری آموزش هاتون خیلی لذت برده و استفاده می کنم. مفاهیم بسیار پیچیده را خیلی روان و قابل فهم بیان می کنید.
سلام علی آقا
خیلی ممنون از اینکه مطالب را با دقت پیگیری می کنید
موفق باشید
سلام خسته نباشید مهندس بنظر من برای سخت افزار همون برد لایچی نانو ازهمه بهتره چون همه میتونن تهیه کنن و ارزان هم هست
سلام بر مهدی
ممنون از شما، یک نظر سنجی جدید پیرامون موضوع انتخاب سخت افزار در تلگرام گذاشتیم
https://t.me/sisoog/993
به نظر میاد Raspberry Pi 3 Model B را عده ای داشته باشند و البته بقیه دوستان هم باهاش آشنا تر هستند
و از طرفی LicheePi Nano قیمت بسیار پایین تری داره (حدود یک هشتم!) و همراهان جدید با هزینه بسیار کمتری میتوانند آنرا تهیه و به ما بپیوندند.
یکی از موارد مهم در این بخش کار اینست که آموزش ها اساساً بر بستر معماری SoC انخاب شده می باشد و امکانات جانبی روی برد تاثیر عمیقی بر اصل آموزش ندارد، یعنی استفاده از LicheePi Nano از لحاظ قیمت به صرفه تر است و استفاده از Raspberry Pi 3 Model B به نظر عزیزان شاید سهل تر می آید، که البته هیچ اختلافی در زمینه سهل تر بودن یا نبودن با هم ندارند و روال کسب مهارت یکسان است.
با تشکر
موفق باشید
سلام مهندس.
رزبری پای که هیچ ولی اگه لیچی پای انتخاب بشه، تقریبا فروشگاهی برای خرید پیدا نکردم.
برای اینکه از کجا تهیه بشه فکری دارید؟مثلا اگه مدیران سیسوگ بتونن وارد کنن خیلی عالی میشه.
باتشکر
با سلام.
برای خرید LicheePi-Nano F1C100s میتونید از این فروشگاه تهییه کنید.
https://skytech.ir/product_details.aspx?ID_Parts=633&LicheePi-Nano
صرفا جهت اطلاع رسانی نه تبلیغ!
ببینید مهندس رزبری پای را قبلا خیلی ها اموزش دادن ما الان گیر این ای سی هستیم که با قیمت ارزانش میشه خیلی بردهای جالب مثل همون ایفون تصویری که شما دنبالش بودید را ساخت در ضمن رزبری الان خیلی گران هم شده
مثل همیشه عالی.?
من همراه این آموزش بینظیر هستم
سلام، ممنون از همراهی تان
سپاس .
استفاده بردم.
سلام
موفق باشید
سلام وقت بخیر.
توی نظرات بخش قبل گفته بودین که “در حال بررسی و آماده سازی مطلب پیرامون انتخاب سخت افزار هستیم”. میخواستم بدونم اون بخش همچنان در دست اقدامه یا دیگه نخواهیم داشت؟ چون منتظر بودم نظرات شما رو بشنوم و بعد اقدام به خریداری کنم.
با تشکر.
سلام بر آرمین عزیز
بله با توجه به نظر دوستان در حال جمع بندی هستیم و به زودی اطلاع رسانی هایی انجام خواهد شد
با ما باشید