# برنامه نویسی میکروکنترلر (MicroController) ها و MicroProcessor ها > برنامه نویسی سیستم های Embeded > ARM >  کامپایل برنامه برای محیط های ARM

## oxygenws

سلام،

چطوری میشه برنامه ای رو که مثلا با C نوشته شده، برای یک محیط ARM (با پردازنده ای با ساختار ARM) کامپایل کرد؟؟

یعنی قراره برنامه در محیط x86 نوشته و کامپایل بشه ولی در محیط ARM اجرا بشه؟!

نکات:
۱- کامپایلر ترجیحا GCC باشه!!!
۲- ارزون ترین روش، اولویت بیشتری داره :دی

پیشاپیش سپاسگزارم.
موفق باشید.

----------


## Inprise

> یعنی قراره برنامه در محیط x86 نوشته و کامپایل بشه ولی در محیط ARM اجرا بشه؟!


به کامپایل کردن برای یک معماری روی یک معماری دیگه میگن Cross-Compile .
بقیه اش هم از اینجا

----------


## shaniaki

با عرض ادب:
خوب این کار بسیار معمول و متداولی هست یعنی تقریبا همیشه وقتی برای یک چنین سیستم هایی قرار است برنامه نویسی شود، از ابزارهایی که در یک محیط user friendly تر مثل pc اجرا می شوند استفاده می شود و شاید بتوان گفت که اغلب اوقات این تنها راه هست چرا که اساسا سیستم مقصد قابلیت اجرای کامپایلر را ندارد. توصیه این هست که بسته به بستری که برای آن کد می نویسید (ARM در سیستم های بسیاری به کار برده می شود از OMAP گرفته که بستر بسیار پرطرفدار سیستم های موبایل هست تا میکروکنترلرهای ساده) ابزارهایی که شرکت طراح پیشنهاد می کند را استفاده کنید. چرا که فقط کامپایل اینجا منظور نظر نیست بلکه مجموعه عملیاتی شامل کامپایل، لینک، دانلود کد در سخت افزار، امکان دیباگ و تریس کردن کد در سخت افزار و ... نیز مورد نیاز هست که باید با هم نیز سازگار باشند.
جالب است که بدانید که ترکیب eclipse به اضافه gcc toolchain چند وقتی هست که بسیار مورد توجه قرار گرفته و از قضا در سایت خود ARM هم ذکر شده که محیط توسعه ای با همکاری شرکت code sourcary با همین ترکیب عرضه می شود:
http://www.codesourcery.com/gnu_toolchains/arm

یه ... ...

----------


## anubis_ir

@shaniaki
با تشکر،
آیا چنین کامپایلری و محصولی به این شکل برای Power PC هم هست؟

----------


## shaniaki

با عرض ادب:
هر چند که سوال خارج از موضوع است اما همانطور که عرض کردم معمولا برای بستر ابزار توسعه ارائه می شود. برای IBM powerPC هم به  همین نحو. به عنوان نمونه شرکت ENEA که سیستم عامل realtime معروفی دارد که در base station های مخابراتی ericsson هم ازآن استفاده می شود، ابزار توسعه ای دارد که با همین ترکیب eclipse+gcc بنا شده و پردازنده های مختلفی از جمله powerpc را نیز پشتیبانی می کند. و یا xilinx در برخی از FPGA های خود 2 یا 4 عدد powerpc را قرار داده که برای آن نیز علاوه بر محیط IDE خود+gcc، ترکیب eclipse+gcc را نیز توصیه می کند و ارائه می دهد. البته ابزارهایی با کاربرد عمومی تر نیز موجودند مانند MULTI از green hills (نمی دانم این یکی powerpc را ساپورت می کند یا خیر) ولی چون در این صورت شرکت سازنده آن را به صورت محصول اصلی ارائه می کند نه ابزارهای جنبی یک محصول اصلی تر، معمولا غیر رایگان و گران هستند.

یه ... ...

----------


## oxygenws

ممنونم.
هنوز در حال بررسی و کامپایل و ... می باشم و فعلا به نتیجه مطلوبی نرسیدم و البته هنوز راهم ادامه دارد!!

در مورد معماری سخت افزار من، تنها برنامه ای که تونستم از طریق اون معماری رو بیابم، چنین کامپایل شده بود:
armv5tel

و پردازندهء سخت افزار مربوطه نیز Intel XScale-PXA27x rev 7 (v51) با معماری 5TE می باشد.

راستش من نصف اینایی که می گم رو نمی دونم چه مفهومی داره :دی

همین الان دارم سعی می کنم یه crosstool واسه armv5 روی لینوکس ام کامپایل کنم... به دلیل سرعت بالای اینترنت این عمل اندکی طول می کشه!

----------


## Inprise

خیلی از پاکت پی سی ها از همین خانواده سی پی یو استفاده میکنن که مبتنی بر ARM 5 هم هست . اگر کدی که میخواهی کامپایل کنی برای لینوکس است و پول نمیخای بدی از همون راهنما به تول چین آرم میرسی و کار ساده ای هم هست . اگر برای سیمبیان کامپایل میکنی بسته های خود اینتل و نوکیا رو ببین که رایگان هم نیستن . اگر برای ویندوز سی ای یا موبایل کامپایل میکنی VC Embedded رو ببین .

----------


## shockley

تا جایی که من اطلاع دارم کامپایلر IAR از لحاظ Code Efficiency فوق العاده است، ANCI C و ++C رو هم ساپورت میکنه، اما متاسفانه گرونه!

----------


## BAHAL_KEYHAN

سلام
من تجربه ی کار با کامپایلر gcc و استفاده از ide eclipse رو دارم. به نظرم مزیت‌های زیادی نسبت به ide های دیگه داره، که به طور نمونه میشه به open source بودن و حجم زیاد افزونه های قابل نصب بر روی اوون اشاره کرد. در ضمن بیشتر افراد برنامه نویس اپلیکیشن ویندوز و موبایل با امکانات ide آشنایی دارند و نیاز به یاد گیری آن ندارند. در ضمن تو ide eclipse این امکان وجود دارد که از هر قسمتی از toolchain که خوشتون نمیاد عوضش کنید و ورژن های مختلف اون رو نصب کنید
فکر میکنم این سوال خیلی قبل مطرح شده و فکر می کنم شاید کسی برایش جالب نباشه که این ide چه جوری setup میشه برای gcc for arm ولی اگه علاقه مند بودید، فیدبک بدید که من کامل توضیح بدم

----------

