از نرم‌افزار تا سخت‌افزار - قسمت دوم - انواع کامپایلر

blog
۱۳۹۹-۰۲-۲۳
3 دقیقه

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

کامپایلرهای نیتیو

شماتیک نحوه کارکرد کامپایلر نیتیو

به طور کلی، انواع کامپایلر تو طراحی امبدد به دو دسته تقسیم میشه. اولین نوع کامپایلر که بچه‌های کامپیوتری خیلی ازش استفاده میکنن، Native compiler ها هستند. این نوع کامپایلر‌ها برای کدهایی استفاده میشن که قراره روی همون ماشین (host machine) اجرا بشه. یعنی این کامپایلر روی هر ماشینی که بتونه اجرا بشه، فقط برای همون ماشین کامپایل می کنه. خب طبیعتاً این کامپایلرها نمیتونن کدهایی رو برای پردازنده ARM یا AVR روی ماشینی با پردازنده X86 کامپایل کنن.

برای کامپایل کدهای این معماری‌ها با Native compiler ها لازمه ابتدا این کامپایلر روی پردازنده موردنظر (فرضاً ARM) نصب بشه و اون موقع کدها رو برای اون معماری خاص کامپایل کنیم. خب بنا به دلایل مختلف (مثلاً کم بودن منابع در دسترس برای سیستم‌های امبدد) اصولاً این کار انجام شدنی نیست و یا اگه هم انجام بشه تو پردازنده‌های با قابلیت‌های بالاتر به کار می‌ره. پس این نوع کامپایلرها به درد ما سخت افزاریا نمیخورن زیاد! کامپایلر معروف این خانواده GCC هستش که با نام GCC 4.8 (که 4.8 ورژنشه) شناخته میشن.

کراس کامپایلر ها

نحوه کامپایل کامپایلر نوع کراس

نوع دوم کامپایلر که تقریباً تمامی محیط‌های توسعه از این نوع استفاده میکنن Cross compiler ها هستند که بهمون این امکان رو میدن که بتونیم کدهای مربوط به یک پردازنده با یک معماری خاص رو روی یک پردازنده دیگه با معماری متفاوت کامپایل کنیم. این دقیقاً کاریه که محیط‌های توسعه مثه Keil یا Ateml studio انجام میدن. دو کامپایلر معروف این خانواده از کامپایلرها که برای پردازنده‌های ARM به کار میرن رو در اینجا معرفی می‌کنیم. ما در ادامه این سری از نوشتارها هم تمرکز رو روی همین نوع کامپایلرها میذارم و به خانواده قبلی کامپایلرها زیاد کاری نداریم. اگرچه خیلی از چیزایی که گفته میشه بین این دو خانواده از انواع کامپایلر مشترکه.

نام‌گذاری این نوع کامپایلر هم معمولاً از فرمت زیر تبعیت میکنه:

<ARCH> – <VENDOR> – <OS> – <ABI>

کامپایلر اول به صورت زیر هستش :

Arm – none – eabi – gcc

Arch : ARM

Vendor : N/A

OS : None (Bare – metal)

ABI : EABI

راجع به موارد بالا فقط این نکته رو بگم که Bare-metal یعنی کد نوشته شده قراره مستقیماً روی سخت افزار پیاده شه و سیستم عاملی این وسط وجود نداره. در واقع همون کاری که ما خیلی از اوقات میخوایم انجام بدیم.

دومین کامپایلر هم:

Arm – linux – gnueabi – gcc
Arch : ARM
Vendor : N/A
OS : Linux OS
ABI : GNUEABI

برای کامپایل کردن یه برنامه با ابزار GCC کافیه از دستور زیر استفاده کنیم :

$ gcc [options] [file]

 

فلگ یا پرچم

استفاده کردن از یه سری flag‌ها باعث میشه بتونیم تو روند کامپایل تغییراتی رو ایجاد کنیم. مثلاً استفاده ازفلگ S- باعث میشه صرفاً فایل اسمبلی تولید شه و بقیه مراحل کامپایل انجام نشه. تو تصویر پایین میتونید یه سری از فلگ های کلی کامپایلر رو ببینید:

دستورات کامپایلر GCC

 

تو تصویر زیر هم برخی از Flag های کامپایلر که برای نوع معماری خاص استفاده میشن رو میتونید ببینید:

فلگ تشخیص معماری GCC

 

خب فکر می‌کنم تا همین جا کافی باشه برای این قسمت. در قسمت سوم با هدر فایل و تاثیر آن در روند کامپایل آشنا خواهیم شد.

اطلاعات
4
0
لینک و اشتراک
profile

سعید حقیقی پور

متخصص الکترونیک

تا حالا به این فکر کردین که تو یه سیستم کامپیوتری GPU چقدر کارآمد و مهمه ولی به اندازه CPU شناخته شده نیست.یه جورایی همون "مجهولون فی الارض معروفون فی السماء" که میگن! یه حسی بهم میگه کاش بتونم مثه GPU باشم :)

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

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

دیدگاه ها

profile
سجاد گفت :
۱۳۹۹-۰۳-۱۰ ۰۰:۵۸

ممنون از وقتی که گذاشتی 🙂

profile
علی گفت :
۱۳۹۹-۰۲-۳۱ ۱۱:۴۴

سلام
عالیه این بحث. با انرژی ادامه بدهید. باتشکر

profile
محمدرضا عابدینی گفت :
۱۳۹۹-۰۲-۲۴ ۰۱:۰۶

سلام بسیار عالی ممنونم .. انشالا مابقی کار رو همراه با اجرا و تست ها منتظریم
اما قسمت” فلگ یا پرچم “عکسی جا نیفتاده؟ چون نوشتید ” یه سری از فلگ های کلی کامپایلر رو ببینید:” بعدش عکسی نیومده و توضیحات نوشتید

profile
Digi Boy گفت :
۱۳۹۹-۰۲-۲۵ ۰۹:۲۴

درود بر شما.
خیلی ممنون که دقت کردید.
تصویر اصلاح شد.

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله