برای برنامهنویسی میکروکنترلرها کامپایلرهای تجاری و رایگان متفاوتی موجود است. بعضیاز این کامپایلرها توسط شرکتهای قدرتمند و قدیمی مانند IAR SYSTEM طراحی و با قیمت بسیار زیادی روانهی بازار شده اند. در بین کامپایلرهای تجاری، تعدادی هستند که مهمترین کاربرد آنها در زمینه آموزش مبانی برنامهنویسی میکروکنترلرها و شروع اولیه بااین مدارات مجتمع است و قدرت لازم برای استفاده در کارهای تجاری و حرفهای را ندارند.
درمقابل کامپایلرهای تجاری، کامپایلرهایی باعنوان رایگان یا سورسباز (open source) قرار گرفتهاند. یکیاز مهمترین مترجمهایی که در این گروه موجود است GCC یا مجموعه کامپایلرهای گنو (GNU Compiler Collection) نام دارد.
مجموعه کامپایلرهای گنو ( GCC )
برای آندسته از دوستانی که ممکناست آشنایی زیادی با این کامپایلر نداشتهباشند توضیحاتی را ارائه میدهم:
مجموعه کامپایلرهای گنو یا GNU Compiler Collection که به اختصار GCC نیز خوانده میشود، مجموعهای از کامپایلرها برای زبانهای برنامهنویسی مختلف است که بهوسیلهی پروژه گنو ایجادشدهاست.
GCC در ابتدا فقط کامپایلری استاندارد برای سیستم گنو بود. ولی امروزه در بسیاریاز سیستمعاملهای مشابه یونیکس از آن استفاده میشود؛ مانند linux ++ ،BSD families ،OSX که در این بین لینوکس شناختهشدهترین سیستمعامل برای مبتدیانی مانند من است. GCC برای معماریهای سختافزاری مختلف مانند AVR و ARM نیز پورت شدهاست.
GCC در اوایل سرنام کلمات GNU C Compiler بود. زیرا فقط توانایی کامپایل برنامههای نوشتهشده به زبان C را داشت؛ که بهمرور زمان قادربه ترجمه زبانهای بیشتری مانند C++ ،Fortran ،Pascal ،Java و… شد. از آن پس GCC معادل سرنام کلمات GNU Compiler Collection میباشد. (نقل قول از ویکی پدیا)
لازمبه ذکر است برای کامپایل و تبدیل کد نوشتهشده به زبان قابلفهم ماشین، علاوهبر کامپایلر به ابزارهای دیگری مانند اسمبلر، لینکر و… نیازمندیم. به مجموعهی این ابزارها که برای برنامهنویسی به آنها نیاز است زنجیره ابزار گنو یا gnu toolchain میگوییم. بهعنوان مثال زنجیره ابزار گنو که برای میکروکنترلر AVR پورت شده، AVR toolchain نام دارد.
GCC یا بطور کلیتر GNU toolchain، ابتدا تنها در سیستمعاملهای بر پایهی یونیکس قابلاستفاده بود اما باتوجهبه قدرتمندبودن و فراگیرشدن این کامپایلر، نسخههایی از آن برای استفادهی کاربران دیگر سیستمعاملها منتشر شد. بهعنوان مثال یکیاز نسخههای پورتشده برای سیستمعامل ویندوز، mingw نام دارد.
پورت مربوطبه پلتفرمavr-gcc ،avr نام دارد. avr-gcc نیز مانند gcc در ابتدا تنها قابلاستفاده در سیستمعاملهایی مانند لینوکس بود.
در اغلب کشورها قانونی تحتعنوان قانون کپیرایت وجود دارد. بهبیانساده طبق این قانون برای استفادهاز نسخه اصلی و کامل یک نرمافزار و کسب درآمد بهوسیله آن باید آنرا از شرکت سازنده خرید. یعنی استفادهاز ابزاری بهنام کرک برای شکستن قفل نرمافزارها و فعالکردن آن، غیرقانونی و جرم محسوب میشود. البته این قانون در کشورما برقرار نیست و میبایست اکثر نرمافزارها هنگام نصب به اصطلاح کرک شوند. (کرککردن نرمافزارها و بهخصوص کامپایلرها باعث بروز مشکلاتی درطول برنامهنویسی میشوند، گاها مشکلاتی که متوجه آنها در کد کامپایلشده نمیشویم و بعضا در درازمدت باعث بروز نقصهایی میشوند.)
قانون کپی رایت باعثشد نرمافزارهای رایگان در اکثر کشورها فراگیر شود. در زمینهی مهندسی برق نیز نرمافزارهای رایگان زیادی برای برنامهنویسی، طراحی pcb و… ارائه شدهاند. بدون مقدمه و اشارهبه نکات ابتدایی عرض میکنم، برنامهنویسی برای تراشههای قابل برنامهریزی یکیاز زمینههایی است که توجه علاقهمندان زیادی را به خود جلب کردهاست.
از این گذشته تراشههای بسیاری ازطرف شرکتهای مختلف برای اینکار ارائه شدهاند. یکیاز این شرکتها اتمل(ATMEL) بود که میکروکنترلرهای AVR را روانه بازار کرد. میکروکنترلرهایی قدرتمند که یکیاز عناصر اصلی در آموزش میکروکنترلر به هنرجویان محسوب میشود.
طبیعتا با ارائه این میکروکنترلرها، کامپایلرهایی برای برنامهنویسی آنها ارائه شدند. کامپایلرهایی با پشتیبانیاز زبانهای C++ ،C و بیسیک. در این مقاله هدف ما تمرکز روی کامپایلر avr-gcc و ابزارهای مناسب برای بکارگیری این کامپایلراست. بنابراین بدونتوجهبه کامپایلرهای دیگر از کنار آنها رد میشویم!
نسخه ویندوزی این کامپایلر که برای برنامهنویسی به زبانهای C و ++C ارائه شد، Winavr نام داشت. Winavr پکیجی مشتملبر ابزارهای برنامهنویسی مانند linker ،assembler ،compiler ،editor ،debugger ،avr-size و… میباشد. (در حقیقت Winavr یک پوسته است که تمام ابزارهای گفتهشده را درخود جای داده).
در Winavr کدهای برنامه در ویرایشگر کد programmers Notepad نوشته میشوند. تصویرزیر نمونهای از کد نوشتهشده در این ویرایشگر متن است:
در ابتدا که شرکت اتمل برای برنامهنویسی میکروکنترلرهایش قفط اسمبلر (avr studio) را ارائه کرده بود، پروژهی آزاد Winavr به منظور ایجاد محیطی برای برنامهنویسی به زبانهای C و ++C در میکروکنترلرهای avr ایجاد شد. برنامهنویسی در محیط Winavr به دلیل سروکار داشتن با Makefile و … همچنین یکپارچه نبودن ابزارها، مشکلاتی را برای تازهکارها به وجود می آورد.
در نسخههای بعدی avr studio این قابلیت به آن افزودهشد تا درصورت نصببودن winavr، توسط avr studio شناسایی شده و امکان برنامهنویسی به زبانهای C و ++C تحت کامپایلر avr-gcc در محیط avr studio فراهمشود.
در نسخهی ۵ به بعد نرمافزار، avr studio شرکت اتمل کامپایلر avr-gcc را مستقیما به این IDE اضافه کرد. بعداز اینکار پروژه آزاد winavr خاتمه یافت. تصویرزیر محیط نرمافزار avr studio5 را نشان میدهد:
درصورتیکه تجربهی کار با پکیج برنامهنویسی شرکت مایکروسافت یعنی visual studio را داشتهباشید، متوجهخواهید شد این محیط شباهت زیادی به visual studio IDE دارد و خیلیاز امکانات برنامهنویسی این نرمافزار را درخود جای دادهاست. در محیط avr studio 5 علاوهبر کدنویسی برای این دسته از میکروکنترلرها، از قابلیت دیباگر نیز میتوان استفادهکرد. نسخه ۵ این نرمافزار تمام میکروکنترلرهای خانوادهی AVR را پشتیبانی میکند.
در جلسه دوم قصد داریم شما را با ویژوال استودیو بیشتر آشنا کنیم. در مجموعه مقالات “برنامه نویسی میکروکنترلر AVR در محیط ویژوآل استودیو” ما را همراهی نمایید.
منبع: سیسوگ