سیسوگ در جلسه اول برنامهنویسی میکروکنترلر AVR در محیط ویژوال استودیو شما را با مجموعه کامپایلرهای گنو (GCC) آشنا کرد. در این جلسه قصد دارد شما را با ویژوال استودیو بیشتر آشنا کند. با سیسوگ همراه باشید.
شرکت اتمل با تولید میکروکنترلرهای 32بیتی، ARM نسخه ی جدیدی از نرمافزار avr studio را تحت عنوان Atmel Studio طراحی کرد. افزوده شدن امکانات جدید و همچنین پشتیبانی از میکروکنترلرهای ARM از جمله تفاوتهایی است که در این نسخه اعمال شد.
تا این قسمت از آموزش گفتیم که از کامپایلر رایگان و سورس باز avr-gcc که شرکت اتمل نیز در پکیج برنامهنویسی خود (اتمل استودیو) بکار برده است، استفاده میکنیم.
اول اینکه شرکت اتمل توسط شرکت میکروچیپ خریداری شده و این امکان که در آینده نسخههای بالاتر این نرمافزار توسط شرکت میکروچیپ ارائه نشود وجود دارد. دوما استفاده از کامپایلر رایگان یعنی هیچ محدودیتی برای انتخاب ابزار، محیط برنامهنویسی، ورژن کامپایلر، دیباگر و در کل هرچیزی را که تصور کنید برای ما وجود ندارد.
گفتیم که برای برنامهنویسی میکروکنترلرهای avr، علاوه بر کامپایلر، وجود ابزارهای دیگری نیز ضروریست. زیرا avr-gcc به خودی خود تنها یک مترجم تحت خط فرمان است. در شرایط کاملا عادی برای کامپایل برنامه نوشته شده توسط avr-gcc باید برنامه را در ویرایشگر کدی مانند Notepad ویندوز به یکی از زبانهای C یا ++C نوشت. سپس با استفاده از محیط cmd و دستورالعملهای کامپایل که توسط avr-gcc ارائه شده، برنامه را به زبان ماشین ترجمه کرد.
انجام این کارها (پروسه کامپایل) هنگامی که برنامهی ما تنها از یک فایل اصلی، هدرفایل و سورس فایلهای خود کامپایلر تشکیل شده باشد، چندان دشوار نخواهد بود، اما فرض کنید هدف ما کامپایل برنامهای است که علاوه بر موارد فوق، شامل کتابخانههایی است که توسط شخص سومی نوشته شده! در این مواقع کامپایل برنامه به روشی که در بالا گفته شد بسیار زمانبر و دشوار است، زیرا میبایست ابتدا هرکدام از فایلها بصورت مجزا کامپایل و در نهایت به یکدیگر لینک شوند. همچنین لازم به ذکر است برای انجام هر بار عمل کامپایل، میبایست دستورات کامپایل در محیط cmd مجددا نوشته شوند که باعث اتلاف زمان زیادی است. برای حل این مشکلات از Makefile استفاده میکنیم. به بیان ساده makefile فایلی است که دستورات مربوط به کامپایل، تنظیمات کامپایلر، دیباگر، پروگرامر و بسیاری از موارد دیگر در آن اعمال میشود. هر پروژه دارای یک makefile است که میبایست این فایل در دایرکتوری پروژه با همین نام (makefile) کپی شود.
قسمتی از یک makefile:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | MCU name# MCU = atmega32 . Processor frequency# This will define a symbol, F_CPU, in all source code files equal to the# processor frequency. You can then use this symbol in your source code to# calculate timings. Do NOT tack on a 'UL' at the end, this will be done# .automatically to create a 32-bit value in your source code# :Typical values are# F_CPU = 1000000 F_CPU = 1843200 # F_CPU = 2000000 # F_CPU = 3686400 # F_CPU = 4000000 # F_CPU = 7372800 # F_CPU = 8000000 # F_CPU = 11059200 # F_CPU = 14745600 # F_CPU = 16000000 # F_CPU = 18432000 # F_CPU = 20000000 # F_CPU = 1000000 # ( Output format(can be srec, ihex, binary# FORMAT = ihex ( Target file name (without extension# TARGET = main Object files directory# To put object files in current directory, use a dot (.), do NOT make# this an empty or blank macro# .=OBJDIR (*List C source files here. (C dependencies are automatically generated# SRC = $(TARGET).c (List C++ source files here. (C dependencies are automatically generated# .=CPPSRC List Assembler source files here# Make them always end in a capital .S. Files ending in a lowercase .s# will not be considered source files but generated files (assembler# OPT = s |
استفاده از makefile و notepad نیز روش چندان مناسبی نیست زیرا در مواقعی که نیاز به طیف وسیعی از ابزارها داشته باشیم، به دلیل عدم وجود رابط کاربری گرافیکی (GUI)، کار برنامهنویس دوباره مشکل میشود. بهترین و سادهترین روش حل مشکلاتی که در این چند سطر بیان شد، استفاده از محیط توسعه یکپارچه (IDE) میباشد. IDE درواقع پکیجی است که تمام ابزارهای مورد نیاز برای برنامه نویسی را در یک محیط با رابط کاربری گرافیکی عالی مجتمع میکند. به عنوان مثال همین اتمل استودیو یک IDE است.
IDEهای رایگان زیادی برای اینکار وجود دارند، مانند:
1) CodeBlocks
2) EmBitz
3) eclipse
4) Visual Studio
و…
آموزشهای متعددی برای استفاده از محیطهای Codeblocks ،embitz و eclipse وجود دارد. اما آموزش فارسی در رابطه با استفاده از ویژوال استودیو برای برنامهنویسی میکروکنترلرها (AVR) وجود ندارد. به همین جهت ادامهی آموزش را به این محیط اختصاص میدهیم.
Visual Studio IDE:
ویژوال استودیو نرمافزاری توسعه یافته برای تولید برنامههای رایانهای است که توسط شرکت مایکروسافت تهیه شده است. از آن برای تولید وبگاه، برنامههای کاربردی وب و یا سرویسهای وب استفاده میشود. از Visual studio میتوان برای نوشتن برنامههای کنسولی، ویندوزی، سرویسهای ویندوز، برنامههای کاربردی موبایل , سیستمهای نهفته و … استفاده کرد. (نقل قول از گوگل)
درکنار این نرمافزار، ابزار visualGDB نیز باید دانلود و نصب شود. VisualGDB یک افزونه بسیار قدرتمند برای ویژوال استودیو میباشد که توسط آن قادر خواهیم بود تا سیستمهای امبد شده را دیباگ یا رفع اشکال کنیم. این نرمافزار از محیط کاربری بسیار جذابی بهره میبرد که دارای ویژگیهای فراوانی برای دیباگ یا رفع اشکال کدهای ما میباشد. VisualGDB دارای یک Wizard نیز هست که به ما در دیباگ کردن برنامه کمک میکند و نقش یک راهنمای قوی را بر عهده دارد. علاوه بر این ویژگیهای بسیار فراوان دیگری در این برنامه وجود دارد که به دستههای Common features ،Advanced features ،Usability features Linux features ،Android features تقسیم میشوند. تصویر زیر ایجاد پروژه با visualGDB را نشان میدهد:
در محیط ویژوال استودیو پروژهی جدیدی را ایجاد و سپس VisualGDB Embedded Project Wizard را باز کنید:
در صفحهی باز شده تنظیمات پیشفرض را تغییر نمیدهیم. در این بخش توجه به دو نکته ضروریست:
1) در بحش Language standard میتوان زبان برنامهنویسی مورد نظر را تعیین کرد.
2) چنانچه علاوه برفایلهای bin. و elf. به فایل هگز برای برنامهریزی میکروکنترلر نیاز داشتید، تیک hex را فعال کنید.
صفحهی بعد برای تعیین ابزار برنامهنویسی مورد نظر ما (avr toolchain) میباشد. اگر ابزار مورد نظر نصب نبود، visualGDB میتواند بااستفاده از اینترنت به صورت اتوماتیک آن را دانلود و نصب کند.
همچنین میتوانیم تولچین مورد نظر را به صورت دستی از سایت gnutoolchain دانلود کنیم. در نهایت دایرکتوری را که قصد دارید تولچین در آنجا نصب شود، مشخص کنید.
پس از نصب ابزار (هر تولچین فقط یک مرتبه نیاز به نصب دارد) میکروکنترلر مورد نظر را از لیست قطعات پشتیبانی شده توسط ابزار انتخاب کنید. به عنوان مثال ما میخواهیم نتیجهی برنامهی نوشته شده را با استفاده از برد Arduino Uno مشاهده کنیم در اینصورت میبایست میکروکنترلر atmega328p انتخاب شود.
صفحهی بعد (sample selection) باعث ایجاد کد سادهای (چشمکزن) در سورس فایل ما میشود. در برد آردوینو، led کوچکی به پایه شماره 13 (PD7) میکروکنترلر وصل شده است. بنابراین در قسمت port group، پورت D و در port number، عدد7 را وارد میکنیم.
با باز شدن صفحه ی debug method، مبدل عیبیابتان را به یکی از پورتهای usb متصل و روی گزینهی detect کلیک کنید تا بصورت اتوماتیک شناسایی شود. افزونهی visualGDB بااستفاده از ابزار AVaRICE که میتواند با دیوایسهای l JTAG ICE Mk JTAG ICE Mk II و AVR Dragon کار کند. دیباگ میکروکنترلرهای AVR را پشتیبانی میکند. visualGDB میتواند JTAG ICE Mk II و AVR Dragon بطور اتوماتیک شناسایی و درایورهای آنها را نصب کند.
در پایان صفحهی زیر ایجاد میشود:
تغییرات کانفیگ پروژه، اضافه کردن سورس فایل و هدر فایل به پروژه و … تا حدودی مشابه اتمل استودیو میباشد.
در جلسه سوم “برنامه نویسی میکروکنترلر AVR در محیط ویژوآل استودیو” ایجاد پروژه با استفاده از میک فایل آموزش داده میشود. در این مجموعه مقالات سیسوگ را همراهی نمایید.
سلام، توی این مقاله گفته اید «دوما استفاده از کامپایلر رایگان یعنی هیچ محدودیتی برای انتخاب ابزار, محیط برنامه نویسی, ورژن کامپایلر, دیباگر و در کل هرچیزی را که تصور کنید, برای ما وجود ندارد.» لطفاً توضیح دهید که چرا این امکان برای ما وجود ندارد؟ ولی امکان کرک کردن غیر قانونی وجود دارد. من مدتی است از Atmel Studio استفاده می کنم، هیچ محدودیتی ندارد، نیاز به کرک ندارد، توسط شرکت سازنده چیپ ارائه شده است و تا کنون در استفاده از آن به مشکلی بر نخورده ام. با این توضیحات متوجه نمی شوم که چرا در مقاله گفته اید، استفاده از کامپایلر رایگان … برای ما وجود ندارد و به توضیح VisualGDB که رایگان نیست پرداخته اید.
سلام دوست عزیز این مقاله توسط یکی از همراهان خوب سیسوگ ارسال شده که تنها جنبه آموزشی داره ؛ به هیچ وجه شما رو دعوت به کرک کردن این ابزار نمی کنیم ؛ اگر از این ابزار خوشتون اومده باشه توصیه میکنیم اونو بخرید 🙂
من خودم سالهاست از Eclipse و GCC استفاده میکنم و واقعا راضی هستم ؛ ابزار Atmel Studio هم ابزار خوبی است که توصیه میکنم ازش استفاده کنید تنها مشکلش اینه که خیلی کنده :/