(فصل دوم – بخش سوم)
سلام بر همراهان. توی قسمت قبلی تولچین گنو یا همون 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 برید واسه دانلود تولچین متوجه میشید تولچینها بر اساس معماری پردازنده هستن.
تا اینجا فهمیدیم تولچین چی هست و گنو تولچین چی هست و کراس تولچین یعنی چی، همین طور رابطه بین پردازنده و تولچین رو هم متوجه شدیم. ولی هنوز دو مورد دیگه مونده تا نامگذاری تولچین گنو رو بتونیم درک کنیم!
پایان بخش سوم از فصل دوم
قسمت بعدی: امبدد لینوکس – قسمت هشتم – Toolchain یا زنجیرهای از ابزارهای لازم برای ساختن همه چیز (بخش چهارم)
بهتره قبل از رفتن به سراغ قسمت بعدی، یه سری هم به نظرات این پایین بندازید، نظرات رو بخونید و اگر شما هم نظری دارید، مشارکت کنید!
همه آموزش های امبدد لینوکس
منبع:سیسوگ