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

به طور کلی دو دسته کامپایلر وجود داره تو طراحی امبدد.اولین نوع کامپایلر که بچه های کامپیوتری خیلی ازش استفاده میکنن 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-  باعث میشه صرفا فایل اسمبلی تولید شه و بقیه مراحل کامپایل انجام نشه. تو تصویر پایین میتونید یه سری از فلگ های کلی کامپایلر رو ببینید :

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

خب فکر میکنم تا همین جا کافی باشه برا این قسمت.امیدوارم مفید بوده باشه!

ادامه دارد.

کامنت لطفا یادتون نره :)


مشخصات

آخرین جستجو ها