کامپایلر IAR برای میکروکنترلر ها
معرفی کامپایلر IAR:
به خاطر چند دلیل این پست رو می نویسم:
- معرفی کامپایلر قدرتمند IAR
- کم بودن منابع یادگیری برای IAR در پست های بعدی ولاگ در مورد نحوه استفاده از این کامپایلر قدرتمند رو آموزش میدم.
- بعد ار امتحان کردن کامپایلر های مختلف برای میکروکنترلرها بهترین توصیه من اینه که از اول انرژی تون رو صرف یه محیط توسعه عالی مثل IAR کنید.
- با یادگیری مثلا میکرو های AVR در IAR به راحتی می تونید بعدا به میکروهای دیگه سوییچ کنید به دلیل یکسان بودن محیط توسعه برای میکروکنترلر های مختلف
- وجود نسخه آموزشی به صورت رایگان که بدون نقض کپی رایت و به صورت قانونی میشه ازش استفاده کرد که میتونید از این لینک نسخه ی size-limited license رو دانلود کنید
- و خیلی چیزهای دیگه که هنگام استفاده از IAR خودتون احساسش میکنید
معرفی شرکت IAR Systems:
یکی از شرکت های موفق در زمینه ی تولید کامپایلر های میکروکنترلری شرکت IAR است که سال ۱۹۸۰ تا کنون در امر تولید کامپایلر برای میکروکنترلر های AVR ، Freescale، ARM ، Maxim MAXQ ، National-CR16C ، Renesas ، Samsung ، STMicroelectronics ، TI MSP430 و خانواده ی ۸۰۵۱ فعالیت دارد . این شرکت دارای ۲۲ محصول نرم افزاری برای میکروکنترلر های فوق است و الگوریتم های تفسیر کد و داده ی خروجی آن از طرف شرکت های سازنده ی میکروکنترلر تایید شده است .
برای میکروکنترلر های AVR و ۸۰۵۱ و ARM کامپایلر های مختلفی ارائه شده است که کاربران میتوانند با استفاده از آنها به زبان های اسمبلی ، C ، بیسیک ، C++ و … برای میکروکنترلر مورد نظر خود برنامه نویسی کنند . در این بین کامپایلر های شرکت IAR از طرف سازندگان میکروکنترلر بیشتر مورد استقبال گرفته و اگر نگاهی گذرا به Application note ارائه شده از طرف شرکت های سازنده ی میکروکنترلر ها ( مثلا شرکت اتمل ) بیاندازید متوجه خواهید شد که اغلب سورس ها و مثال های ارائه شده با کامپایلر IAR است .
مشخصات یک کامپایلر خوب:
۱- حجم کد خروجی و میزان درستی آن :
به طور کلی کامپایلر ها نرم افزار هستند که کد های نوشته شده توسط کاربر (به زبان های اسمبلی یا C یا بیسیک یا C++ یا …) را به زبان ماشین ( کد هگز یا باینری ) ترجمه میکنند . در این حالت هر چقدر دقت کامپایلر بالا تر و الگوریتم های ترجمه ی استفاده شده در آن پیشرفته تر باشد ، کد خروجی دقیق تر خواهد بود و حجم کمتری خواهد داشت ،
۲- سطح دستورات :
قطعات در یک کامپایلر هر چقدر دستورات به سمت گفتار حرکت میکنند ، ترجمه ی دستورات مشکل تر و کد خروجی دارای خطای بیشتری خواهد بود ، به عنوان مثال در کامپایلر بسکام کلیه دستورات به زبان گفتار هستند و این کامپایلر است که به دلخواه خود دستورات را در قالب های مختلف ترجمه میکند . اما در کامپایلر IAR کلیه دستورات ، دستورات استاندارد زبان C هستند و کاربر خودش باید کتابخانه های مورد نیازش را مطابق استاندارد ایجاد کند ، در این حالت کد خروجی به دلیل عدم وجود کد های اضافه بهینه تر و قابل اطمینان تر خواهد بود . البته این مورد در ابتدای کار یادگیری نحوی کار با این کامپایلر را دشوار کرده و باعث سردرگمی کاربران می شود ( مخصوصا برای کاربران مبتدی ) ، اما بعد از مدتی کاربر نحوه ی برنامه نویسی استاندارد را به خوبی یاد گرفته و به راحتی میتواند با هر کامپایلر و میکروکنترلر دیگری ، با هر زبانی کار کند ( چون به خوبی با الگوریتم برنامه نویسی آشنا شده است ).
۳- قیمت کامپایلر :
برای کاربرانی که قانون کپی رایت را رعایت نمیکنند ، شاید این مسائله زیاد مهم نباشد ، اما قیمت لیسانس کامپایلر های IAR معمولا ۱۰ تا ۱۵ برابر قیمت کامپایلر های دیگر است ، به عنوان مثال IAR Embedded Workbench For AVR با قیمتی بین ۹۰۰ تا ۳۰۰۰ هزار دلار به فروش میرسد ( بسته به کشور متقاضی و خدمات پشتیبانی مورد نیاز ) در حالی که کامپایلر بسکام تنها بین ۹۵ تا ۱۲۰ دلار قیمت دارد .
۴- استاندارد ها و مجوز های کسب شده :
شرکت های سازنده ی کامپایلر بسته به نوع استفاده ی محصولاتشان میتوانند برای آنها مجوز های را اخذ کنند ، به عنوان مثال شرکت IAR موفق به کسب استاندارد TÜV SÜD according to the requirements of IEC 61508, the international umbrella standard for functional safety, as well as ISO 26262 شده است ، مطابق این استاندارد ها کد های خروجی این کامپایلر میتواند بدون هیچ مشکل در لوزامی که برای ایمنی به کار میروند ( مانند تجهیزات آتش نشانی ، سیستم های گاز یاب ، سیستم های مخابراتی اضطراری و… ) استفاده شوند .
وجود استاندارد های مختلف باعث میشود تا اطمینان به کد های خروجی کامپایلر بیشتر شده و کاربر بتواند بدون هیچ ترسی کد های خود را در پروژه های مختلف استفاده کند .
۵- یک برنامه نویس یا یک ….
و در نهایت همه چیز به خود شما بر میگردد ، در صورتی که شما یک برنامه نویس حرفه ای هستید و میخواهید کار خود را به عنوان یک برنامه نویس ادامه دهید ، پیشنهاد می کنم از این کامپایلر ها استفاده کنید و اگر صرفا قصد یادگیری برنامه نویسی جهت پر کردن اوقات فراقت ، انجام پروژه های دانشجویی و در کل انجام کار های برنامه نویسی پاره وقت را دارید ، میتوانید از کامپایلر های بسکام یا کدویژن استفاده کنید ، کار با این کامپایلر ها بسیار آسان تر از IAR بوده و امکانات جانبی و کتابخانه های زیادی در آنها وجود دارد .
ویژگی های کامپایلر های IAR :
کامپایلر های شرکت های IAR معمولا همیشه در جایگاه اول یا دوم از نظر قابلیت اطمینان ، بهینه سازی مقدار کد خروجی و قدرت مانور در برنامه نویسی ، در میان کامپایلر های میکروکنترلری بوده اند . شرکت IAR برای پشتیبانی از کاربران و آسان کردن روند یادگیری این کامپایلر ها ، اقدام به تولید برد های آموزشی متنوع و دیباگر و پروگرامر برای هر خانواده نموده و سورس ها پروژه های مختلفی را برای تمامی بخش های میکروکنترلر تهیه کرده است . در زیر برخی از ویژگی های دیگر این کامپایلر ها آورده شده است :
۱- ادیتور پیشرفته با قابلیت شناسایی دستورات ( های لایت دستورات استاندارد)
۲- قابلیت مدیریت پروژه ( نوشتن یک برنامه توسط چند برنامه نویس به صورت هم زمان)
۳- پشییبانی از معماری داخلی میکروکنترلر و بهینه سازی کد فقط میکروکنترلر انتخاب شده (در کامپایلر های مثل بسکام و کد ویژن از یک الگوریتم برای ترجمه ی کد استفاده میشود ف در حالی که IAR ادعا میکند ترجمه ی دستورات برای هر میکروکنترلر دارای الگوریتم مخصوص است )
۴-پشیتانبی از دستورات استاندارد زبان C و C++ با قابلیت بهینه سازی دستورات
۵- محیط های کاربری همسان ( کاربرانی که با یکی از محصولات IAR کار کرده اند به سادگی میتوانند با سایر محصولات کار کنند)
۶-قابلیت دیباگ کردن برنامه با استفاده از دیباگر C-SPY® debugge
7- دارای سیستم عامل مخصوص برای میکروکنترلر های پشتیبانی شده( RTOS-aware)
8- و سایر ویژگی ها …
در پست های بعدی آموزش برنامه نویسی در IAR رو برای میکروکنترلر های AVR قرار میدم.
سلام دوست من. بین IAR، KEIL و CUBEIDE کدومش خوبه بنظرتون؟
من فعلا با KEIL دارم کدهاشو مینویسم و با CUBEMX. نیاز هست برم روی IAR؟ اصلا مزیت داره این کار؟