مقاله های سیسوگ, توصیه شده, معرفی

کدام کامپایلر برای میکروکنترلر STM8 بهتر است ؟

کدام کامپایلر برای میکروکنترلر STM8 بهتر است ؟

چند وقتیه که میکروکنترلر STM8 وارد بازار شده و با توجه به قیمت مناسبی که داشت، مورد توجه خیلی از تولید کننده ها و حتی افراد علاقمند به الکترونیک قرار گرفت ؛ ما هم توی سیسوگ سعی کردیم که خلاء موجود در خصوص آموزش میکروکنترلر stm8 را پر کنیم و تا کنون بیست و اندی قسمت از آموزش این میکروکنترلر را منتشر کرده ایم (برای مشاهده آموزش ها stm8 بر روی این لینک کلیک کنید). اما همیشه یکی از اساسی ترین ابزارها و شاید مهم ترین ابزار برای استفاده صحیح از یک میکروکنترلر کامپایلر است ؛ متاسفانه میکروکنترلر stm8 کامپایلر مطرحی ندارد که کاملا هم رایگان باشد ؛ کامپایلری که تمام استانداردهای برنامه نویسی رو یک جا داشته باشه چیزی مثل GCC ؛ که خوب متاسفانه ابزاری براش وجود نداره ، برای همین تصمیم گرفتم توی یک پست به معرفی کامپایلر های موجود برای stm8 بپردازیم و قابلیت های اونوها رو با هم بررسی کنیم ( یک بررسی منصافانه مثل همیشه ). پس با سیسوگ همراه باشید.

 

اما مگر چند کامپایلر برای stm8 وجود دارد ؟

واقعا این سوال مطرح است که مگر چند کامپایلر برای stm8 وجود دارد که بخوایم در مورد انتخاب یکی صحبت کنیم ؛ در حال حاظر که دارم این مقاله رو مینویسم چهار کامپایلر برای میکروکنترلر stm8 می‌شناسم که در مورد این چهار گزینه صحبت خواهیم کرد. بگذارید به معرفی گزینه های موجود بپردازیم.

کامپایلر Cosmic : ما از این کامپایلر که رایگان هم هست برای آموزش میکروکنترلر stm8 استفاده کرده ایم ؛ آخرین ورژن این کامپایلر تا ژانویه 2018 فکر میکنم نسخه 4.4.7 هست که میتونید لایسنس رایگانش رو از شرکت دریافت کنید.

کامپایلر SDCC : در واقع SDCC یک کامپایلر متن باز هست که میکروکنترلر های مختلفی از جمله 8051 و PIC و stm8 و… را پشتیبانی می کنه و تا فوریه 2018 اخرین ورژن این کامپایلر نسخه 3.7.0 است. از اونجایی که ما سیسوگی ها عاشق متن باز هستیم ، قائدتا این کامپایلر رو ترجیح میدیم.

کامپایلر Raisonance : در واقع RCSTM8 یک کامپایلر برای stm8 هست که آخرین ورژنش 2.62.17.263 هست و از 2016 ظاهرا دیگه آپدیتی براش ارائه نشده.

کاپایلر IAR : خوب IAR نامی است که تقریبا هر کسی با میکروکنترلر سرو کار داشته باشه اسمش رو شنیده ؛ یک شرکت سوئدی معروف است که کامپایلر با کیفیت تولید کرده. البته باید اضافه کنم که رایگان نیست و پولی است ولی ما در تست ها از ورژن 3.10.1.201 با لایسنس محدودیت زمانی استفاده خواهیم کرد.

 

معرفی استاندارد های کامپایلر برای زبان C

برنامه نویسی به زبان سی دارای استاندارد هایی است که هر کامپایلر با توجه به گستردگی خودش یک یا چند استاندارد رو پوشش میده ؛ این استاندارد سازی ها برای ارتقاء سطح برنامه نویسی با گذشت زمان توسط سازمان های استاندارد سازی بین المللی بهینه و تهیه شده است ؛ از معروف ترین این استاندارد ها میشه به ANSI C89 یا ISO 99 یا ISO 11 اشاره کرد. اگر شما هم مقداری حرفه ای به مقوله برنامه نویسی برای سیستم ها نگاه کرده باشید با این استاندارد ها آشنایی دارید.

C89 : اولین استاندارد سازی زبان سی که توسط ANSI و در سال 1989 انجام شد ؛ که با اصلاحات جزیی به ISO90 تبدیل شد. این استاندارد معمولا با عنوان ANSI C هم شناخته میشه.

C95 : در سال 1995 یک سری ویژگی ها به زبان C  اضافه شد ؛ در واقع ISO 95 مورد استقبال چندانی قرار نگرفت و بیشتر کاربر ها ترجیح میدهند از C99 یا C89 استفاده کنند.

C99 : در سال 1999 یک سری ویژگی های جدید به زبان C اضافه شد که مورد استقبال گسترده کاربر ها قرار گرفت و به جرات می توان گفت یکی از محبوب ترین استاندارد سازی های زبان C است.

C11 : در واقع آخرین استاندارد سازی زبان سی به سال 2011 بر می‌گردد ؛ که به سرعت مورد استقبال کامپایلر ها قرار گرفت و محبوب شد.

++EC : امروزه استفاده از زبان سی پلاس پلاس در سیستم های Embedded خیلی مورد توجه قرار گرفت است ؛ این استاندارد سازی مناسب استفاده از زبان ++c در این ادوات است البته هیچ وقت محبوب نشد و فکر میکنم بیشتر یک پروژه شکست خورده است مثل C95 😐

 

در حال حاظر هیچ یک از کامپایلر های موجود برای میکروکنترلر stm8 به صورت کامل تمام این استاندارد ها را پشتیبانی نمی کنند؛ اما هر کدام از کامپایلر ها یک یا چند استاندارد را پوشش میدهد ؛ واضح است که هر چه تعداد استاندارد های مورد پوشش کامپایلر بیشتر باشد قائدتا استفاده از آن مورد قبولتر خواهد بود. برای روشن تر شدن موضوع فرض کنید کتابخانه ای با استاندارد C99 نوشته شده باشد و کامپایلر مورد استفاده شما تنها C89 را پشتیبانی کند ، در این صورت به مشکل بر خواهید خورد و احتمالا مجبور بشود کتابخانه مورد نظر را یا باز نویسی کنید یا اصلاح کنید !

قطعا در حوزه رعایت استاندارد ها SDCC و IAR گوی سبقت را از رقبای خود ربوده‌اند و پیش تاز این رقابت هستند . کامپایلر های Raisonance تنها از C89 پشتیبانی می کند که واقعا بد است و Cosmic هم علاوه بر C89 استاندارد C99 را هم پشتیبانی می‌کند با این تقاوت که از کلید -PC99 برای این کار استفاده می کند ؛ که در IDE های مختلف ممکن است باعث ایجاد چالش شود. در جدول زیر می توانید استاندارد های پشتیبانی شده توسط هر کامپایلر را ببینید

 

استاندارد های مورد پشتیبانی کامپایلر های STM8

 

همانطور که در جدول به خوبی پیداست SDCC تقریبا از تمام استانداردهای رایج پشتیبانی می کند ؛ در این زمینه میتوان نتیجه گرفت که SDCC حتی از IAR که یک کامپایلر تجاری است بهتر عمل کرده است.

 

کامپایلر های STM8 انواع داده ای را چطور پشتیبانی می کنند ؟

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

متاسفانه هیچ کدام از کامپایلر های STM8 از متغییر های double و long double پشتیبانی نمی کنند اما در عوض از متغیر float همگی پشتیبانی می کنند. برای بررسی دقیق تر به جدول زیر توجه نمایید

کدام کامپایلر برای میکروکنترلر STM8 بهتر است ؟

متغیر bool در کامپایلر های SDCC و IAR به شکل استاندارد پشتیبانی می شود اما در کامپایلر های Cosmic  و Raisonance به شکل غیر استاندارد قابل استفاده است (به شکل تعریف define) شاید چندان مساله ساز نشود اما قطعا عدم وجود نوع long long در پروژه های خاص شما را دچار چالش خواهد کرد.

همچنان کامپایلر های IAR و SDCC پیش تاز هستند.

 

از چه سیستم عامل هایی می‌توانم استفاده کنم ؟

یکی از محدودیت های مهم در انتخاب و استفاده از کامپایلر stm8 سیستم عامل است. در واقع سیستم عامل مورد استفاده تعیین کننده ترین موضوع در انتخاب یک کامپاپلر است. فرض کنید شما از Mac یا FreeBSD برای برنامه نویسی و ارتقاء برنامه STM8 استفاده می کنید ؛ در این صورت تنها انتخاب شما SDCC است ! که البته انتخاب خیلی خوبی هم هست اگر هم از لینوکس استفاده می کنید تنها دو انتخاب دارید یکی SDCC و دیگری Cosmic.

کدام کامپایلر برای میکروکنترلر STM8 بهتر است ؟

همانطور که در جدول فوق به خوبی مشخص است کامپایلر IAR و Raisonance تنها قابلیت نصب در ویندوز را دارند که چندان جالب نیست !! و بیشترین قابلیت نصب را کامپایلر SDCC دارا می باشد. SDCC در واقع شما را قادر می سازد از تمام سیستم عامل ها استفاده کنید.

 

مجوز استفاده از کامپایلر ها

در انتها مهم ترین بخش مجوز استفاده از کامپایلر است که با هم به بررسی آن می پردازیم ؛

کامپایلر SDCC یک کامپایلر متن باز و رایگان است که تحت مجوز GPL اجازه استفاده از آن را به کاربر می دهد 🙂

کامپایلر Cosmic یک کامپایلر رایگان است اما متن باز نیست و البته این رایگان بودن تنها برای سیستم عامل ویندوز است ظاهرا.

کامپایلر Raisonance یک کامپایلر غیر رایگان و پولی است که تنها مجوز تست یک ماهه ارائه می دهد.

کامپایلر IAR نیز یک کامپایلر پولی و غیر رایگان است که تنها مجوز تست یک ماهه را ارائه می کند و پس از یک ما باید لایسنس آن را خریداری کنید.

مجوز استفاده از کامپایلر های STM8

 

جمع بندی :

و اما در آخر اگر بخوام در خصوص انتخاب یک کامپایلر مناسب برای STM8 جمع بندی داشته باشیم ؛ باید بگم که با توجه به موارد بررسی شده منطقی ترین گزینه موجود SDCC است که هم رایگان است و هم متن باز و صد البته به لحاظ قابلیتی چیزی از کامپایلر های پولی کم ندارد.

 

منبع 

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

16 دیدگاه در “کدام کامپایلر برای میکروکنترلر STM8 بهتر است ؟

  1. Avatar for a a گفت:

    سلام من از sdcc توی platform io استفاده کردم
    بخاطر کتابخونه stdio کلی جا گرفت
    توی کامپایلر های gcc میشد از بهینه ساز های -Ox جای x عدد یا حروف خاصی میگذاشتیم تا کامپایلر بهینه سازی انجام بده
    حس میکنم کامپایلر برمیداره کل توابع کتابخونه رو بدون اینکه ازشون استفاده کنم کامپایل میکنه توی SDCC
    دوستان تجربیات مشابهی داشتند؟؟
    کاش برای stm8 هم کامپایلر GCC بود :((((

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

      متاسفانه ساختار پردازنده به گونه ای نیست که بشه براش از GCC استفاده کرد
      توی GCC پارامتری داریم که لینکر می آد و فانکشن هایی که کال و استفاده نشدن رو حذف میکنه نمی دونم این رو برای SDCC داریم یا نه
      یه بررسی کنید این مساله رو

  2. Avatar for محمد آصف محمد آصف گفت:

    سلام
    من دارم اولین پروژمو با میکروی STM8S در محیط STVD و با کامپایلر Cosmic انجام میدم. در همین مراحل تست می بینم که کدها به درستی کار نمی کنند. مثلا کدی که در خط 100ام می نویسم روی کدی که در خط 50 است اثر میذاره (قاعدتا نباید این اتفاق بیفته چون هیچ ربطی بهم ندارند و نرم افزار در خط 100 هیچ پرشی به عقب نداره) و به نظر میاد که این ضعف بخاطر کامپایلر باشه.
    آیا کسی دیگه هم با چنین مشکلی مواجه شده؟
    کسی تجربه ای با کامپایلر Cosmic و ادیتور STVD داره که راهنمایی کنه این دو چقدر به درد کار می خورند؟

    ممنونم

    1. Avatar photo electronic girl گفت:

      سلام دوست عزیز
      کامپایلر Cosmic به طور کلی کامپایلر مناسبیه و یه چیز خوبی که داره راحت میشه باهاش کار کرد.
      ولی این موضوع ارور ها که میفرمایید متاسفانه توش دیده میشه که منحصراً خطا مربوط به خط مشخص شده نیس یعنی اینجا اگه شما خط 100 را کامنت میکنین و میبینین خطا ندارین بدین معنیه که یه جایی حالا یا توی کتابخونه ها یا خود کد خط 100 خطا داره ولی کامپایلر اششتباه رفرنس داده. یکمی باید خودتون محل دقیق خطا رو پیدا کنین.
      مجموعه آموزش های STM8 با همین کامپایلر آموزش داده شده که میتونین برای آشنایی کامل با Cosmic از سری مجموعه ها استفاده کنین.
      https://sisoog.com/category/microcontroller/stm8/

  3. Avatar for a a گفت:

    درود برشما

    این کامپایلر SDCC چگونه نصب میشه؟
    اگر راهنمایی کنید ممنون خواهم شد.

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام جالبه ؛ ندیده بودم اینا رو ولی از segger نمیشه انتظار نرم افزار رایگان داشت ولی جالبه
      اون یکی رو هم ندیده بودم !!

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      خواهش میکنم دوست عزیز
      متشکر برای تذکر و یاد آوری
      منبع اضافه شد

      1. Avatar for reza reza گفت:

        برنامه Atollic_TrueSTUDIO هم برنامه خوبی هست فقط حیف که برای stm8 نیست.

        1. Avatar for زئوس Zeus زئوس Zeus گفت:

          بله متاسفانه برای stm8 نیست ولی وقعا ادیتور خوبی داره آیا ؟
          من که همیشه از GCC استفاده میکنم 🙂

  4. Avatar for مرتضی مرتضی گفت:

    ممنون از نشر مطالب خوبتون.
    IAR یک شرکت سوئدی هست البته.

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      خواهش میکنم دوست عزیز
      متشکر برای تذکرتون ؛ مطلب اصلاح شد

  5. Avatar for Saeid AryaNejad Saeid AryaNejad گفت:

    خیلی خیلی از بابت اطلاعات عالی که به رایگان در اختیار ما میذارید ممنونم، به نظرم هیچ طوری نمی‌شه در قالب کلمات از این لطف شما تشکر کرد. دوست داشتم سرعت اجرای کد به وسیله انواع این کامپایلر رو هم توی این مطلب ببینم.

    ممنونم

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام دوست و همراه گرامی ؛ خواهش میکنم نظر لطف شماست
      احتمالا در مقاله دیگری به مقایسه سرعت و کیفیت کد ایجاد شده خواهیم پرداخت

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *