با قسمت هفتم از دوره ورود به دنیای امبدد لینوکس که دوره مقدماتی آموزش امبدد لینوکس می باشد همراه ما باشید.
(فصل دوم – بخش سوم)
سلام بر همراهان. توی قسمت قبلی تولچین گنو یا همون GNU Toolchain رو بررسی کردیم، با اجزاش، انواع مختلفش و نوع نام گذاریش هم آشنا شدیم. توی این قسمت می خوایم رابطه بین تولچین و نوع پردازنده رو بررسی کنیم.
در قسمتهای قبلی آموزش، مسیر حرکت و فصلهای پیش رو، بسیاری از مفاهیم مورد نیاز و سؤالها و ابهامات شما در این دوره پاسخ داده شده است.
پس اگر اولین بار است که این آموزش را شروع میکنید، با توجه به سلسله مراتب پیش بینی شده برای آموزشها، بهتر است از جلسه اول شروع کنید!
همه آموزشهای امبدد لینوکس
رابطه بین تولچین (Toolchain) و پردازنده
فکر کنم اینکه تولچین باید با توجه به ویژگیها و تواناییهای پردازنده تارگت ساخته بشه، بدیهی باشه.
حالا این ویژگیها چی هست؟
- معماری پردازنده: اینکه معماری پردازنده ARM هست یا MIPS یا x86_64 یا هرچیز دیگهای
- جهت بریدن تخم مرغ آب پز پردازنده: اگه عمرتون به کارتون ماجراهای گالیور قد بده و یا رمان سفرهای گالیور رو خونده باشین، میدونین توی سرزمین لیلیپوت دو تا قوم بر سر اینکه تخم مرغ آب پز رو از کدوم طرف ببرن درگیر بودن همیشه! یه قوم میگفت باید از سر بزرگتر بریده شه که اسمشون Big Endian بود، یکی دیگه میگفت باید از سر کوچیکتر بریده شه که اسمشون Little Endian بود! حالا اینکه پردازنده ما Little Endian باشه یا Big Endian توی ساختن تولچین مهمه، حتی پردازندههایی که هر دو مود رو ساپورت میکنن باز هم اینکه واسه کدوم مورد بخوایم تولچین بسازیم مهمه.
- ممیز شناور: بعضی از پردازندهها به صورت سختافزاری ممیز شناور یا Floating point رو پشتیبانی میکنن، بعضی نه. این مورد هم مهمه تو ساختن تولچین.
- رابط باینری نرمافزار: اگه از اون دسته باشین که چند باری نزدیک اقیانوس شدین حتماً ABI یا EABI یا EABIH رو موقع دانلود کردن تولچین دیدین. خوب چی هستن؟
اول که Application Binary Interface که بش ABI میگن رو با Application Programming Interface که بش API میگن اشتباه نگیرید.
ABI یه رابط یا Interface هست بین دو تا ماژول برنامه باینری، که معمولاً یکی از این ماژولها سیستم عامل یا یک کتابخونه هست و دیگری برنامهای هست که توسط کاربر داره اجرا میشه، و ABI این تضمین رو به شما میده که یه فایل باینری روی سیستمهایی با ABI سازگار با هم قابل اجرا باشه.
API اصلاً کاری به کار باینریها یا همون فایلهای اجرایی نداره و تو حیطه سورس کد فعالیت داره.
در حال حاضر و حتی خیلی قبلتر یعنی از سال 2000 ما یه EABI داریم که مخفف Extended Application Binary Interface هست که اگه ممیز شناور رو به صورت سخت افزاری ساپورت کنه (طبیعتاً پردازنده هم باید این قابلیت رو داشته باشه) بش میگن EABIHF که مخفف Extended Application Binary Interface Hard-Float هست.
-
شرکت سازنده پردازنده: نه، این مهم نیست!
البته بعضی شرکتها با تغییراتی در تولچین گنو، این ابزار رو برای پردازندههای خودشون بهینهتر میکنن و طبیعتاً شاید نشه از تولچین اونها واسه پردازندههای بقیه شرکتها هرچند با معماری یکسان استفاده کرد. تو حالت کلی از پردازنده فقط همون چهارتا مهمه. (معماری پردازنده، جهت بریدن تخم مرغ آب پز پردازنده، ممیز شناور و رابط باینری نرمافزار)
مثلاً از تولچین برد Raspberry Pi 3 Model B+ برای برد Orange Pi Zero Plus میتونید استفاده کنید. با وجود اینکه SoC برد اول ساخت بردکام و SoC برد دوم ساخت آلوینر هست. چهار ویژگی ذکر شده برای پردازنده هر دو برد یکی هست. واسه همین اگه به سایت ARM یا Linaro برید واسه دانلود تولچین متوجه میشید تولچینها بر اساس معماری پردازنده هستن.
تا اینجا فهمیدیم تولچین چی هست و گنو تولچین چی هست و کراس تولچین یعنی چی، همین طور رابطه بین پردازنده و تولچین رو هم متوجه شدیم. ولی هنوز دو مورد دیگه مونده تا نامگذاری تولچین گنو رو بتونیم درک کنیم!
در ضمن طبق نظر سنجی انجام گرفته در کانال تلگرامی سیسوگ، نظر اکثریت برای انتخاب برد با 55 درصد Raspberry Pi 3 Model B+ هست و از طرف دیگه در غالب کامنتها و تمام پیامهای تلگرام! دوستان مایل به کار با برد Lichee Pi Nano هستند.
با توجه به اینکه هر دو برد طرفداران خاص خودشون را هم داشتند انشاله ما سعی میکنیم هر دو برد را در آموزشها مدنظر داشته باشیم.
پایان بخش سوم از فصل دوم
قسمت بعدی: امبدد لینوکس – قسمت هشتم – Toolchain یا زنجیرهای از ابزارهای لازم برای ساختن همه چیز (بخش چهارم
بهتره قبل از رفتن به سراغ قسمت بعدی، یه سری هم به نظرات این پایین بندازید، نظرات رو بخونید و اگر شما هم نظری دارید، مشارکت کنید!
سلام
عزیز بخش ششم گویا حذف شده!!!!
سلام
این لینک قسمت ششم
https://sisoog.com/2020/08/04/%d8%a7%d9%85%d8%a8%d8%af%d8%af-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3-%d9%82%d8%b3%d9%85%d8%aa-%d8%b4%d8%b4%d9%85-toolchain-%db%8c%d8%a7-%d8%b2%d9%86%d8%ac%db%8c%d8%b1%d9%87%e2%80%8c/
از کجا حذف شده ؟!
با سلام
بسیار عالی آموزش میدهید، سپاس از شما.
سلام و عرض ادب جناب صاحبی
تشکر می کنم که با دقت مقاله ها را دنبال می کنید
آقا (یا شایدم خانم) دمت گرم.نکته جالبی که واس من وجود داره اینه که معلومه خودمتم رشتت کامپیوتر نبوده و اون چیزایی رو داری می گی و خیلی صاف و پوسکنده توضیح می دی که واس منی که رشته الکترونیک خوندم هم جای سواله ( و واس خودتم اینا جای سوال بوده و الان که فهمیدی یک جوری توضیح می دی که منم بفهمم). این موضوع رو خیلی دوس دارم تو مقاله هات. امیدوارم با قدرت بری جلو
سلام داود جان
خوشحالم که مطالب را با دقت مطالعه و بررسی می کنید
ما همه تلاشمان را انجام می دهیم تا در کنار دیگر عزیزان به یک نتیجه خوب برسیم
سربلند باشید
سلام،
لطفا زمان آموزش فصول بعدی را هم اطلاع رسانی کنید. امیدوارم هرچه سریعتر اتفاق بیفته.
با تشکر
سلام بر نوید عزیز
تلاش ما بر این هست حداقل هفته ای یک بخش یا بیشتر منتشر نماییم
و معمولاً بعضی فصل ها از پیش نوشته شده است
منتهی مراتب ما در ابتدا قرار بود با یک سخت افزار کار کنیم
ولی در حال حاضر تصمیم بر آن شد تا هر دو سخت افزار را تا حد امکان در برنامه خود قراردهیم
از طرفی تحویل و مدیریت پروژه های در دست کار و جاری گاهی باعث تاخیر در ارسال و تدوین مطالب میگردد
شما از این فرصت ها استفاده نموده و منابع آموزشی معرفی شده را مطالعه و تمرین های بیشتری انجام دهید
تا مهارت لازم را کسب نمایید
موفق باشید
مرسی. بازهم مثل مقالات قبلی خیلی خوب و منسجم بود. امیدوارم با قدرت ادامه بدید.
سلام و سپاس
فقط میتونم بگم خسته نباشید 🙂
سلام بر مدیر مدبر
از حمایت های مجدانه شما کمال تشکر را داریم. ?
سلام برادر خسته نباشید خیلی زحمت کشیدید ان شالله بزودی وارد کار با قسمت سخت افزار بشید بالاخص Lichee Pi Nano
سلام بر مهدی
خیلی ممنون، به زودی