برنامهنویسی AVR مفرح است اما گاهی اوقات محیطهای توسعه تولیدکنندگان نـگهداشتن کدها را به یک کار طاقتفرسا تبدیل می کند. اگر شما دنبال نرمافزاری آزاد، کراس پلتفرم و با کیفیت برای برنامه نویسی AVR هستید Eclipse یک انتخاب خوب است.
استفاده از یک محیـط توسـعـه منسجم (IDE) مانند Eclipse یک گام منطقی از یادگیری کار های ساده برنامهنویسی است. با استفاده از یک IDE شما قادر خواهید بود تا راحتتر و همراه یک طیف از ابزارها درون یک برنامه کار کنید. شما قادر خواهید بود کد خود را به آسانی بستهبندی و استفاده مجدد کنید و به کارهای پیشرفـتـه ای مـثـل آنالیز کد دسترسی خواهید داشت.
در این دستورالعمل بـه شمـا نشـان خـواهم داد چگونه Eclipse را بـرای بـرنــــامـه نویسی میکروکنترلرهای AVR نصب و پیکربندی کنید.
گام اول. چرا؟Eclipse معرکه است، واقعاً معرکه. در مقایـسه بـا چیـزی مـثـل نـرمافزار Eclipse ,Arduino مانند چاقو سوییسی است.
به عنوان مثال Arduino اجازه میدهد در آن واحد تنها روی یک فایـل کـار کنید. اگر بخواهید نـام یـک مـتـغیر را عوض کـنـید باید find/replace کنید. اگر بخواهید مقداری کد را در یک متد بسته بندی کنید، این کار را باید دستی انجام دهید. Eclipse میتواند اینها و به غیر از این، کار های کسالتآور دیگری را انجام دهد. به طور کـلی، انتقال به یک IDE تمام چهره مانند Eclipse گامی بزرگ از محیطهایی با امکانات کم است.
نکته: بله، Eclipse میتواند برای برنامـه نـویـسی Arduino اسـتفـاده شـود به هر حال تنظیم کـردن بـرای این کار کـمـی پـیـچیدهتر اسـت و جـزییـات استـفـاده Arduino در Eclipse اینجا مطرح نمیشوند.
گام دوم. مقدماتاگر شما روی یک کامپیوتر اداری کار میکنید نیاز به دریافت دسترسی برای نصب نرمافزار روی سیستم خود دارید. همچنین باید چک کنید فایروال
http://www.eclipse.org و http:/sourceforge.net را بلاک نکرده باشد.( این آدرسها را در در نوار آدرس تایپ کنید یا روی لینک ها کلیک کنید و اگر از فایروالتان هشدار دریافت کردید شما به این سایتها دسترسی ندارید)
اگر شما روی یک سیستم خانگی به همراه دسترسی به اینترنت و پورت USB کار میکنید که چه خوب.
برای برنامه نویسی دستگاههای AVR شما به یکی از این دو نیاز دارید: یک پروگرامر و میکروکنترلرتان (به صورت مجزا) یا یک میکروکنترلر و پروگرامر روی یک برد، مثل Arduino. اگر شما هنوز این دو را ندارید، من به شما توصیه میکنم برای شروع کار به Arduino یا موارد مشابه نگاهی بیندازید. وقتی که مطمئن ترید برای گسترش دادن AVR هزینه ای پرداخت کنید حرکت به سوی Eclipse خیلی بهتر است.
گام سوم. دانلود و نصب Eclipseدر مرحله اول ما به دانلود خودEclipse نیاز داریم. من داشتن یک فضای کار (Workspace) و Eclipse جداگانه را توصیه می کنم. زیرا به نظر میرسد با گذشت زمان پلاگین AVR هم Eclipse و هم فضایکار را خراب میکند.
بنابراین اگر شما هماکنون Eclipse را دارید من توصیه میکنم یک کپی دوم از Eclipse و یک فضای کار مخصوص AVR برای توسعه AVR داشته باشید.
به سایت Eclipse بروید و صفحه Downloads را بیابید. (در زمان نوشتن :
http://www.eclipse.org/downloads) لیست نسخه ها شامل یک مدخل با عنوان”Eclipse IDE for C++/C Developers” است، در کنار آن باید یک یا چند لینک وجود داشته باشد.
بر روی گزینه Bit32 برای پلتفرمی که دارید استفاده میکنید کلیک کنید (به عنوان مثال بر روی لینک Bit32 رو به روی لینوکس کلیک کنید اگر از لینوکس استفاده می کنید.) این شما را به صفحه دانلود می برد.
در بالای صفحه دانلود باید شبیه این نوشته شده باشد: "Download eclipse-cpp-helios-linux-gtk.tar.gz from:" به دنبال آن لینکی با عنوان Mirror Service...(http)g... یا شبیه آن هست. روی لینک کلیک کنید و دانلود آغاز می شود.
من شما را از پست کردن یک لینک منع می کنم زیرا Eclipse به خوبی و قاعده مند به روز می شود، پس برای گرفتن آخرین نسخه نیاز به چک کردن این صفحه دارید.
پس از دانلود شما به extract برنامه Eclipse از روی فایل فشرده نیاز دارید.
این مرحله بسته به سیستم عامل فرق میکند اما به طور کلی اگر شما رو فایل دانلودی کلیک کنید نرمافزار extractor باز می شود.
برنامه را در یک محل اختصاص داده Extract کنید. برای کاربران ویندوز program files قابل قبول است. پوشه eclipse را که extract کردهاید باز کنید و بر روی فایل اجرایی Eclipse کلیک کنید.Eclipse آغاز میشود.
نکته: یک ایده خوب برای ذخیره زمان درست کردن یک shortcut روی دسکتاپ است.
صفحه آغاز محل فضای کار (workspace) را می پرسد، اگر نمیدانید چیست آن را با کلیک روی OK به حال خود بگذارید، به برنامهنویسان کارآزموده پیشنهاد می کنم از فضای خود Backup بگیرید، یا از طریق Version Control یا تنها یک کپی. از به کار بردن فضای کار مشترک اجتناب کنید.
گام چهارم: نصب کردن AVR-GCC و AVR-DubeAVR-GCC یک کامپایلر است که برای کامپایلکردن اطلاعات مناسب AVR استفاده می شود. AVR-Dube یک وسیله برای قرار دادن آن اطلاعات روی AVR شماست. (به بیان ساده از طریق پروگرامر فیزیکی با AVR رابطه برقرار می کند)
لینوکس:
بر روی لینوکس لازم است بسته های مورد نیاز را دستی نصب کنید. به مدیر بستهتان بروید و موارد زیر را نصب کنید:
avr-gcc
avr-binutils
avr-gdb
avr-libc
avrdube
ویندوز:
روی یک دستگاه ویندوزی به سایت winAVR بروید و مطابق دستورات نصب پیش بروید. WinAVR (صفحه راهنما اینجا و صفحه دانلود اینجا) هر دو مورد بالا و اندکی بیت های اضافه را دارد تا بعضی چیز ها مانند Debug کردن را آسانتر کند.
گام پنجم: نکتهای درباره پلاگین CDTبعضی از دستورالعمل های آنلاین بیان می کنند که شما باید پلاگین ابزار های گسترش دهنده ++C/C یا (CDT) را نصب کنید. در این مورد این کار لازم نیست زیرا که ما نسخه ”Eclipse IDE for C++/C Developers” را دانلود کرده ایم. پس ما آن را هماکنون نصبشده داریم.
گام ششم: نصب کردن پلاگین AVRپلاگین AVR به ما اجازه میدهد به آسانی با AVR از درون Eclipse سروکار داشته باشیم. وقتی که نصب شد به شما اجازه ساخت و گسترش دادن یک پروژه به زبان C را روی یک دستگاه AVR خواهد داد .
برای نصب پلاگین AVR به منوی بالای Eclipse بروید و Help>Install New software را انتخاب کنید.یک پنجره جدید با نام Install باز میشود.
بالای پنجره یک دکمه به همراه فیلد ”Work with” در سمت چپ آن وجود دارد. روی جعبه متن کلیک کنید و تایپ کنید:
http://avr-eclipse.sourceforge.net/updatesite/سپس بر روی دکمه Add کلیک کنید بعد درون پنجره ای که نمایان میشود AVR eclipse plugin را درون Name box تایپ کنید.
در جعبه متن پایین یک مدخل (ویژگی های اختیاری CDT) پس از اندکی پدیدار خواهد شد.گزینه سمت چپ آن را تیک بزنید و بر روی Next کلیک کنید.
اگر بسته های انتخاب شده صحیح باشند صفحه بعد می آید . Next را فشار دهید. صفحه بعد پذیرفتن قوانین و شروط را میپرسد.
دکمه رادیویی I agree را انتخاب و روی Finish کلیک کنید.
نوار پیش رفت به کندی پر خواهد شد. نشان میدهد که Eclipse در حال نصب کردن پلاگین های مشخص شده است. اگر هیچ ایراد ایمنی ای وجود نداشت روی OK یا continue کلیک کنید. هشدار ایمنی بازگو میکند را که پلاگین قابل اعتبار نیست، مسأله مهمی نیست.
هنگامی که نصب کردن کامل شود یک پنجره پدیدار خواهد شد که به شما اطلاع میدهد نیاز به ریستارت Eclipse دارید. Restart Now را انتخاب کنید.
Eclipse بسته میشود و دوباره دوباره آغاز می شود. هنگامی که Eclipse دوباره آغاز میشود از شما انتخاب کردن فضای کار را میپرسد. اکنون Eclipse آنچه را برای رابطه برقرار کردن با AVR ها نیاز است را دارد.
گام هفتم : ساختن یک پروژه جدیداکنون ما Eclipse را تنظیم کرده ایم. هنوز هم به چیز هایی نیاز داریم: ساخت یک پروژه برای نگهداری تنظیمات و فایلها، تنظیم پروژه. ساختن یک چراغ چشمک زن، پیادهسازی آن روی AVR .
یک نکته درباره پروژه ها برای افرادی با پیشزمینه Arduino IDE (پاراگراف بعدی را رد کنید اگر شما پیش از این درباره پروژه ها می دانستید) پروژه ها کد های جداگانه ای هستند برای هر تکه از کاری که میخواهیم انجام دهیم. به عنوان مثال اگر من بخواهم یک چراغ چشمک زن ایجاد کنم من باید یک پروژه چراغ چشمک زن برای شامل بودن آن ایجاد کنم.همچنین اگر من میخواستم یک چراغ برای زینت دادن میزکارم درست کنم من می بایست یک پروژه با نام چراغ ایجاد می کردم. تفاوت کلیدی فایلهای جداگانه یک پروژه هست که میتواند یک گروه تنظیمات و تعدادی فایل سورس را شامل شود. پروژه یک پوشه اختصاصی و فایلهای سورس فایلهایی هستند که درون آن قرار داده می شوند. ما به پروژه میگوییم چه پلتفرمی را میخواهیم استفاده کنیم ( به عنوان مثال ATtiny13 )چگونه می خواهیم آن را پروگرام کنیم، چه اطلاعاتی را میخواهیم در EPROM آن قرار دهیم، چه فیوزبیت هایی را میخواهیم استفاده کنیم.
برای ساختن یک پروژه جدید روی File>New>C project کلیک کنید. یک نام برای پروژه تان تایپ کنید، مثلا چراغ چشمک زن. مطمئن شوید گزینه Empty project در زیرAVR cross Target Application انتخاب شده است و روی Next کلیک کنید. گزینه Debug را غیرفعال کنید (ما به این گزینه نیازی نداریم) و سپس روی Finish کلیک کنید.
اگر به جای کلیک کردن Finish روی Next کلیک کنید مقداری تنظیمات قابل تنظیم کردن وجود دارد، ولی آنها را یک دقیقهای دستی تنظیم میکنیم ( به تنظیم کردن بعضی تنظیمات دیگر هم نیاز داریم، پس همه آنها را یک دفعه با هم انجام می دهیم.)
گام هشتم: راه اندازی تنظیمات buildاکنون شما باید یک پروژه با نام دلخواه خود در تب Project Explorer داشته باشید. ما میخواهیم این پروژه را تنظیم کنیم، بر روی پروژه راست کلیک کنید و properties را انتخاب کنید. (پایین سمت راست)
بر روی نشانه بعلاوه
- روبروی ++C/C build و سپس روی settings کلیک کنید.
در پنجره ای که ظاهر میشود موارد زیر را انتخاب کنید:
Generate Hex file for flash memory
Print Size
AVR Dube
دو گزینه دیگر را غیرفعال کنید ( به آنها نیاز نداریم) بر روی Apply کلیک کنید (پایین سمت راست، شاید مجبور شوید Scroll کنید)
اکنون ما به Eclipse گفتهایم که ما میخواهیم یک فایل Hex را تولید کنیم. فایل Hex نسخه « کامپایل شده » کد ماست. ما برای او بیان کردیم برای نوشتن روی AVR ها از AVR Dube استفاده کند.
گام نهم. تنظیم کردن AVR Target settingsدر آخر در تنظیم پروژه ما نیاز داریم به Eclipse درباره AVR ای که میخواهیم پروگرامش کنیم و آنچه میخواهیم بنویسیم اطلاع دهیم. نشان
- روبروی گزینه AVR را انتخاب کنید تا باز شود. AVR Dube را انتخاب کنید. اینجا هیچ پیکربندی ای نداریم پس روی Next کلیک کنید.
اکنون پروگرامری که استفاده میکنید را انتخاب کنید. اگر شما از یک Arduino استفاده میکنید، آن هم در لیست موجود است. در بالای صفحه یک نام مختصر و توضیحات بدهید، چیزی مثل ”پروگرمر Arduino” “ برای پروگرام کردن یک Arduino استاندارد” .
نکته: شاید شما نیاز داشته باشید یک پورت سریال را تعیین کنید اگر به طور پیشفرض کار نکرد این مراحل را طی کنید. پورت سریال میتواند تغییر کند (معمولاً یک نام ثابت به همراه یک عدد افزایشی مثل COM1 است) اگر شما چندینArduinoمتصل به برق یا متصل نشده دارید، هنگامی که آن را دوباره به برق وصل کنید عدد ممکن است افزایش پیدا کند. این به هم ریختگی ایجاد می کند. سادهترین روش برای پیدا کردن نام صحیح پورت سریال این است: ا همه ی Arduino ها به استثنای یکی که میخواهید پروگرام کنید را از برق بکشید. از جعبه کشویی پورت های سریال در نرمافزار Arduino استفاده کنید تا نام پورت سریال را پیدا کنید.
روی OK کلیک کنید. روی Apply کلیک کنید.
اکنون ما تنظیماتی که داری کار می کنیم میبینیم – ما تلاش خواهیم کرد میکروکنترلر خودش به ما نوعش را اطلاع دهد، در سمت چپ صفحه روی Target Hardware کلیک کنید. اطمینان حاصل کنید که پروگرامر شما:
الف) به برق (اگر لازم است) و USB (یا سریال) وصل است.
ب) روشن است.
ج) به دستگاه AVR مورد نظر وصل شده است.
روی Load from MCU کلیک کنید. اگر همه چیز کار کرد دستگاه لیست شده در جعبه متن باید به دستگاهی که اکنون روی پروگرامرتان است تغییر داده شود.
روی Apply و سپس روی OKکلیک کنید. اگر کار نکرد، میکروکنترلرتان را از لیست انتخاب کنید. (ممکن است که پروگرامر شما افزونه Load From MCU را پشتیبانی نکند) روی Apply و سپس روی OK کلیک کنید.
گام دهم. فایل سورس جدیدساختن فایل سورس و فایل هدر خیلی ساده است، فقط روی پروژه یا پوشه پروژه ای که میخواهید فایل جدید در آن ایجاد شود راست کلیک کنید و رویNew>Source Fileکلیک کنید. در پنجره ای که ظاهر میشود به دنبال نوع فایلی که میخواهید ایجاد کنید بگردید، یک نام برای فایل جدیدتان تایپ کنید و روی Finish کلیک کنید.
به خاطر بسپارید که شما در هر جای پروژه تان یه فایل به نام main.c نیاز دارید. این به این خاطر که فایلی است که کامپایلر با آن آغاز می شود. کامپایلر main.c را کامپایل میکند و فایلهای سورس دیگر درون آن تعریف می شوند.
build چیست؟ build یک پروژه فعل کامپایل کردن همه ی کد سورس و ساختن یک نتیجه ی کامپایل شده است. برنامه نویسان عادی C شما یک فایل اجرایی ایجاد میکنند (Exe در ویندوز). قبل از اینکه موفق شوید نباید هیچ اروری در کدتان مشاهده کنید. پس از build شما باید زیر بعضی خطوط را قرمز ببینید . آنها ارور های کامپایل هستند. بیتهایی از کد که نادرستند، کامپایلر نمیتواند آنها را متوجه شود زیرا در آنها مشکلی است.
نکته درباره فایل سورس: (دوباره برای کسانی با پیشزمینه Arduino ): اکنون که ما از یک فایل سورس ساده ارتقا یافتیم، زمان این است که سازماندهی کد ها را جدی بگیریم. انجام دادن این کار خیلی سخت نیست و به این معناست که زمانی که ما میخواهیم پروژه مان را بسازیم و کارهایی دیگری را انجام دهیم(مثل اضافه کردن دکمه برای چراغ چشمک زن) در زبان C، که ما هماکنون استفاده میکنیم، راه ساختن کد این است که آن را در یک گروه هایی از فایلهای ابزار سازمان دهی کنیم . اکنون تصور کنید که ما میخواهیم متد های جدیدی را هم در پروژه چراغ چشمک زن و پروژه چراغ استفاده کنیم. اگر میخواستیم این را در Arduino انجام دهیم تنها راه واقعبینانه کپی پیست کردن متد ها بود (این کار سختی است) علاوه بر این اگر من کشف کنم مثلاً متد من isAFibonacciNumber یک باگ دارد، من باید کپی پیست کنم و دو پروژه را درست کنم. آسانتر نخواهد بود اگر یک بار تابع بنویسید و بارها استفاده کنید؟، بهترین کاری که میتوانید انجام دهید و آسان است... ما از فایلهای سورس و فایلهای هدر استفاده میکنیم. ما یک فایل سورس به نام NumberUtlities.c ایجاد می کنیم. NumberUtlites.c شامل همه ی عددها درون متد که ما میخواهیم استفاده کنیم خواهد بود. اکنون اگر من بخواهم از NumberUtlities استفاده کنم همه ی آنچه نیاز دارم این است که آن را یکبار import کنم .
گام یازدهم. build و آپلود روی AVRفرض می کنم که شما هماکنون پروژه تان را تنظیم شده همراه فایلmain.c و مقداری محتوا در آن دارید.این گام میتواند انجام شود هر کجا که خواستار build و/یا flash روی دستگاه AVR تان هستید.
چیز بعدی که نیاز داریم build کردن پروژه است .Build کردن فرایند پردازش کد کامپایل شده است. تبدیل کد سورسی که ما میتوانیم بفهمیم به کد باینری ماشین که AVR میتواند بفهمد. زمانی که ما Build میکنیم کامپایلر تلاش میکند تا این کار را انجام دهد، گاهی اوقات به مشکلاتی در کد سورس برخورد می کند.(یک مثال شاخته شده تصویر ضمیمه این گام است.) در اینجا کامپایلر یک ارور را گزارش میکند. برای راهنمایی گام بعد، ارور های کامپایل شدن را ببینید.
برای build کردن پروژه تان روی Project/Build All کلیک کنید. پس از برطرف کردن همه ی ارور های کامپایل روی AVR>Upload project to Target Device کلیک کنید. تب کنسول باید یک متن سبز رنگ را نمایش دهد.
اگر فرایند آپلود ناموفق شد چک کنید که دستگاه تان تعریف شده و به برق متصل است. اگر شما روی یک Arduino آپلود میکنید تنها قبل از آنکه آپلود کنید روی دکمه ریست کلیک کنید.
پروژه شما باید اکنون روی دستگاه تان آپلود شده باشد آن را درون یک مدار وصل کنید و لذت ببرید!
اگر پس از این میخواهید یک پروژه جدید ایجاد کنید گام های ۶،۸ و ۹ را دنبال کنید.ما میتوانیم از گام ۷ چشمپوشی کنیم زیرا Eclipse تنظیمات را که ما در دفعه اول اعمال کردیم به خاطر می سپرد. ما در گام ۷ تنظیمات را تنظیم کردیم و آنها را روی پروژه های آینده اعمال کردیم به خاطر بسپارید هنگامی که گام ۸ را تکرار میکنید از زمانی که ما یک Programmer Configuration ساختیم شما میتوانید تنها آن را از جعبه کشویی Programmer Configuration انتخاب کنید به جای ساختن یک Configuration جدید همانند دفعه اول که انجام دادیم.
گام دوازدهم. ارور های کامپایلارور های کامپایل چه هستند؟
ارو ره ای کامپایل ارور هایی هستند که کامپایلر هنگام build کردن شناسایی می کند. build عملیات تبدیل (کامپایل) کد نوشته شده به یک کد باینری که AVR میتواند بفهمد. ارور های کامپایل کردن هستند تنها هنگامی که روی build کلیک میکنید پس از رفع کردن مشکل ذخیره و دوباره build کردن پروژه مورد توصیه است.
چرا من ارور کامپایل دارم؟
دز حالت عادی ارور هایbuild ارور های ساده برنامه نویسی هستند. به عنوان مثال به کد زیر نگاه کنید:
((1) if
}
{
توجه کنید چگونه if دو پرانتز بسته دارد در حالی که یک پرانتز باز دارد؟ این میتواند باعث یک ارور کامپایل شود. رفع کردن این مشکل تنها نیاز دارند که یکی از دو پرانتز بسته را حذف کنید.
در تب ارور ها شما آنجا چند ستون خواهید دید که به شما درباره هر ارور خط به خط توضیح می دهند. اگر شما در این پنجره روی یک ارور دابل کلیک کنید Eclipse به طور خودکار فایل را باز میکند در سؤال و خط مشکل را هایلایت می کند.
چگونه من آنها را رفع کنم؟
به طور معمول ارور ها چیز هایی اند که کامپایل آنها را به خاطر خطای دستوری گزارش داده است.این به این معناست که رفع کردن ارور ها یک موضوع نسبتا ساده مثلاً کار کردن خارج از قانون است.
نوع های دیگری از ارور وجود دارند؟
بله... اگر برنامهای که نوشتهاید در حین اجرا شدن کاری غیرمنتظرهای انجام دهدیک Runtime error رخ می دهد- اروری که حین اجرای برنامه رخ داده است. این ها انواعی از ارور هستندکه معمولاً سخت تر تشخیص داده میشوند و ابزارهای پیچیده ای برای حل کردن این نوع ارور وجود دارد.