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

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

کدام کامپایلر برای میکروکنترلر 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 همگی پشتیبانی می کنند. برای بررسی دقیق تر به جدول زیر توجه نمایید

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

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

 

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

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

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

 

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

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

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

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

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

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

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

 

جمع بندی :

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

 

منبع 

حمایت از Zeus ‌

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

Zeus ‌
Zeus ‌

زئوس هستم ساکن المپ

دیدگاه ها

14 دیدگاه

  • محمد آصف
    ۲۶ خرداد ۱۳۹۸

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

    ممنونم

    • Nasim Hematian
      electronic girl
      ۲۷ خرداد ۱۳۹۸

      سلام دوست عزیز
      کامپایلر Cosmic به طور کلی کامپایلر مناسبیه و یه چیز خوبی که داره راحت میشه باهاش کار کرد.
      ولی این موضوع ارور ها که میفرمایید متاسفانه توش دیده میشه که منحصراً خطا مربوط به خط مشخص شده نیس یعنی اینجا اگه شما خط 100 را کامنت میکنین و میبینین خطا ندارین بدین معنیه که یه جایی حالا یا توی کتابخونه ها یا خود کد خط 100 خطا داره ولی کامپایلر اششتباه رفرنس داده. یکمی باید خودتون محل دقیق خطا رو پیدا کنین.
      مجموعه آموزش های STM8 با همین کامپایلر آموزش داده شده که میتونین برای آشنایی کامل با Cosmic از سری مجموعه ها استفاده کنین.
      https://sisoog.com/tag/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%85%DB%8C%DA%A9%D8%B1%D9%88%DA%A9%D9%86%D8%AA%D8%B1%D9%84%D8%B1-stm8/

  • a
    ۲۵ دی ۱۳۹۷

    درود برشما

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

  • reza
    ۲۱ دی ۱۳۹۷

    گویا شرکتی به نام iSYSTEM هم نرم افزاری با عنوان winIDEA داره که برای کامپایل و دیباگ میکرو ها به کار میره.

    https://www.segger.com/fileadmin/images/products/J-Link/Supported_IDEs/winIDEA_Debugging.png

    https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm8-software-development-tools/stm8-ides/winidea-stm8.html#getsoftware-scroll

    • Zeus ‌
      زئوس Zeus
      ۲۳ دی ۱۳۹۷

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

  • reza
    ۲۰ دی ۱۳۹۷

    http://www.colecovision.eu/stm8/compilers.shtml
    مقاله جالبی بود.
    تشکر

    • Zeus ‌
      زئوس Zeus
      ۲۰ دی ۱۳۹۷

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

      • reza
        ۲۰ دی ۱۳۹۷

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

        • Zeus ‌
          زئوس Zeus
          ۲۳ دی ۱۳۹۷

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

  • مرتضی
    ۱۹ دی ۱۳۹۷

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

    • Zeus ‌
      زئوس Zeus
      ۱۹ دی ۱۳۹۷

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

  • Saeid AryaNejad
    Saeid AryaNejad
    ۱۹ دی ۱۳۹۷

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

    ممنونم

    • Zeus ‌
      زئوس Zeus
      ۱۹ دی ۱۳۹۷

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

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 11 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

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

Zeus ‌ Zeus ‌
  • 3 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک