میکروکنترلر STM8
چندوقتیه که میکروکنترلر STM8 وارد بازار شده و باتوجهبه قیمت مناسبی که داشت، موردتوجه خیلیاز تولیدکنندهها و حتی افراد علاقمند به الکترونیک قرار گرفت؛ ما هم سعیکردیم که خلاء موجود درخصوص آموزش میکروکنترلر stm8 را پر کنیم و تاکنون بیست و اندی قسمت از آموزش این میکروکنترلر را منتشر کردهایم(برای مشاهده آموزشها stm8 برروی این لینک کلیککنید). اما همیشه یکیاز اساسیترین ابزارها و شاید مهمترین ابزار برای استفاده صحیح از یک میکروکنترلر کامپایلر است؛ متاسفانه میکروکنترلر stm8 کامپایلر مطرحی ندارد که کاملا هم رایگان باشد؛ کامپایلری که تمام استانداردهای برنامهنویسی رو یکجا داشتهباشه چیزی مثل GCC؛ که خوب متاسفانه ابزاری براش وجود نداره، برایهمین تصمیمگرفتم توی یک پست به معرفی کامپایلرهای موجود برای stm8 بپردازیم و قابلیتهای اونها رو باهم بررسیکنیم(یک بررسی منصافانه مثل همیشه). پس با ما همراه باشید.
اما مگر چند کامپایلر برای stm8 وجود دارد؟
واقعا این سوال مطرح است که مگر چند کامپایلر برای stm8 وجود دارد که بخوایم درمورد انتخاب یکی صحبت کنیم؛ درحالحاضر که دارم این مقاله رو مینویسم چهار کامپایلر برای میکروکنترلر stm8 میشناسم که درمورد این چهارگزینه صحبتخواهیمکرد. بگذارید به معرفی گزینههای موجود بپردازیم:
- کامپایلر Cosmic: ما از این کامپایلر که رایگان هم هست برای آموزش میکروکنترلر stm8 استفاده کردهایم؛ آخرین ورژن این کامپایلر تا ژانویه ۲۰۱۸ فکرمیکنم نسخه ۴.۴.۷ هست که میتونید لایسنس رایگانش رو از شرکت دریافتکنید.
- کامپایلر SDCC: درواقع SDCC یک کامپایلر متنباز هست که میکروکنترلهای مختلفی ازجمله 8051 و PIC و stm8 و… را پشتیبانی میکنه و تا فوریه ۲۰۱۸ اخرین ورژن این کامپایلر نسخه۳.۷.۰ است. از اونجاییکه ما عاشق متنباز هستیم ، قائدتا این کامپایلر رو ترجیح میدیم.
- کامپایلر Raisonance: درواقع RCSTM8 یک کامپایلر برای stm8 هست که آخرین ورژنش ۲.۶۲.۱۷.۲۶۳ هست و از ۲۰۱۶ ظاهرا دیگه آپدیتی براش ارائهنشده.
- کامپایلر IAR: خوب IAR نامی است که تقریبا هرکسی با میکروکنترلر سروکار داشتهباشه اسمش رو شنیده؛ یک شرکت سوئدی معروف است که کامپایلر باکیفیت تولیدکرده. البته باید اضافهکنم که رایگان نیست و پولی است ولی ما در تستها از ورژن ۳.۱۰.۱.۲۰۱ با لایسنس محدودیتزمانی استفادهخواهیمکرد.
معرفی استانداردهای کامپایلر برای زبان C
برنامهنویسی به زبان C دارای استانداردهایی است که هر کامپایلر باتوجهبه گستردگی خودش یک یا چند استاندارد رو پوشش میده؛ این استانداردسازیها برای ارتقاء سطح برنامهنویسی باگذشتزمان توسط سازمانهای استانداردسازی بینالمللی بهینه و تهیهشدهاست؛ از معروفترین این استانداردها میشه به ANSI C89 یا ISO 99 یا ISO 11 اشارهکرد. اگر شما هم مقداری حرفهای به مقوله برنامهنویسی برای سیستمها نگاه کردهباشید با این استانداردها آشناییدارید.
- C89: اولین استانداردسازی زبان سی که توسط ANSI و در سال۱۹۸۹ انجامشد؛ که با اصلاحات جزئی به ISO90 تبدیلشد. این استاندارد معمولا باعنوان ANSI C هم شناختهمیشه.
- C95: در سال۱۹۹۵ یکسری ویژگیها به زبان C اضافهشد؛ درواقع ISO 95 مورداستقبال چندانی قرار نگرفت و بیشتر کاربر ها ترجیح میدهند از C99 یا C89 استفاده کنند.
- C99: در سال ۱۹۹۹ یکسری ویژگیهای جدید به زبانC اضافهشد که مورداستقبال گسترده کاربرها قرارگرفت و بهجرات میتوان گفت یکیاز محبوبترین استانداردسازیهای زبانC است.
- C11: درواقع آخرین استانداردسازی زبان C به سال ۲۰۱۱ برمیگردد؛ که بهسرعت مورداستقبال کامپایلرها قرارگرفت و محبوبشد.
- ++EC: امروزه استفادهاز زبان ++C در سیستمهای Embedded خیلی موردتوجه قرارگرفتهاست؛ این استانداردسازی مناسب استفادهاز زبان ++C در این ادوات است البته هیچوقت محبوب نشد و فکرمیکنم بیشتر یک پروژه شکستخورده است مثل C95 درحالحاضر هیچیک از کامپایلرهای موجود برای میکروکنترلر stm8 بهصورتکامل تمام این استانداردها را پشتیبانی نمیکنند؛ اما هرکدام از کامپایلرها یک یا چند استاندارد را پوشش میدهد؛ واضح است که هر چه تعداد استاندارد های مورد پوشش کامپایلر بیشتر باشد قائدتا استفاده از آن مورد قبولتر خواهد بود.
برای روشنترشدن موضوع فرضکنید کتابخانهای با استاندارد C99 نوشتهشدهباشد و کامپایلر مورداستفاده شما تنها C89 را پشتیبانیکند، در این صورت به مشکل برخواهید خورد و احتمالا مجبورشود کتابخانه موردنظر را یا بازنویسی کنید یا اصلاحکنید! قطعا در حوزهی رعایت استانداردها SDCC و IAR گوی سبقت را از رقبای خود ربودهاند و پیشتاز این رقابت هستند . کامپایلرهای Raisonance تنها از C89 پشتیبانی میکند که واقعا بد است و Cosmic هم علاوهبر C89 استاندارد C99 را هم پشتیبانی میکند با اینتقاوت که از کلید -PC99 برای اینکار استفاده میکند؛ که در IDEهای مختلف ممکناست باعث ایجادچالش شود. در جدولزیر میتوانید استانداردهای پشتیبانیشده توسط هر کامپایلر را ببینید.
همانطورکه در جدول بهخوبی پیداست 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 جمعبندی داشتهباشیم؛ باید بگم که باتوجهبه موارد بررسیشده منطقیترین گزینه موجود SDCC است که هم رایگان است و هم متنباز و صدالبته بهلحاظ قابلیتی چیزی از کامپایلرهای پولی کم ندارد.
منبع: سیسوگ