این آموزش شما را از طریق نصب و راه اندازی زنجیره ابزار AVR GCC تحت ویندوز مایکروسافت راهنمایی می کند. همچنین یاد خواهید گرفت که چگونه ابزارهای اضافی و مفیدی را نصب کنید که به شما کمک می کند اولین برنامه های میکروکنترلر خود را آسان تر بنویسید.
اگر قصد دارید از نرم افزار کدویژن استفاده کنید این راهنما را ببینید.
پیش نیازها
برای تکمیل این راهنما به چه چیزهایی نیاز داریم؟
- رایانه با ویندوز مایکروسافت – نسخه 7، 8 یا 10.
- دسترسی اداری به ویندوز
- یک پورت USB – برای استفاده در دسترس است.
- برنامه نویس ISP – نوع USBasp توصیه می شود.
- برد میکروکنترلر مجهز به AVR
توجه: برای یک فرد بی تجربه حدود 2 ساعت طول می کشد تا این کار را انجام دهد.
1. AVR GCC Toolchain چیست؟
AVR GCC Toolchain مجموعه ای از ابزارها و کتابخانه هایی است که برای کامپایل کد شما برای میکروکنترلرهای AVR استفاده می شود. این مجموعه شامل یک کامپایلر، اسمبلر، لینکر و تعدادی کتابخانه است.
بیشتر ابزارها بر اساس تلاش های جامعه گنو هستند (GCC مخفف G NU C ompiler C مجموعه است)، و برخی دیگر توسط Microchip توسعه داده شده اند .
2. WINAVR چیست؟
WINAVR یک پروژه عالی است یا بهتر بگوییم بود .
این یک بسته نصبی برای ویندوز بود که شامل همه چیزهایی بود که برای کامپایل کردن کد C یا C++ برای میکروکنترلر AVR تحت ویندوز نیاز داشتید و مهمتر از همه، برای افرادی مثل من، این امکان را به ما می داد که این کار را در کنسول متنی انجام دهیم.
جدیدترین فایل های WINAVR مربوط به 2010-01-20 است . به عبارت دیگر منسوخ شده است.
پروژه های زیادی وجود دارد که سعی در جایگزینی آن داشته اند اما هیچ یک از آنها (AFAIK) بسیار محبوب نیست.
این راهنما شما را با مراحل نحوه تنظیم دستی همه چیز آشنا می کند. هیچ بسته نصبی وجود ندارد که بتوانید آن را اجرا کنید و همه چیز را برای شما انجام دهد.
3. AVR GCC Toolchain – راه اندازی برای ویندوز
برای راه اندازی و استفاده از AVR GCC Toolchain به 3 جزء ضروری نیاز داریم:
- AVR GCC – Windows Binary
- GNU Make – در ویندوز
- AVRDUDE – در ویندوز
همه بارگیریها، پوشهها و نام فایلهای پیشنهادی بر اساس تنظیمات خود ما هستند و برخی از آنها را میتوان با توجه به اولویتهای شما تغییر داد.
AVR GCC – Windows Binary
بیایید با AVR GCC شروع کنیم . بیایید آن را از وب سایت میکروچیپ دانلود کنیم .
زنجیره ابزار برای میکروکنترلرهای AVR® (MCU) :
در صفحه، به دنبال «AVR 8-bit Toolchain v3.62 – Windows» یا مشابه باشید.
برای دانلود آرشیو ZIP به یک حساب کاربری (ثبت نام رایگان) نیاز دارید.
یک پوشه ” برنامه ها ” (اگر از قبل وجود نداشته باشد) برای برنامه های مختلفی که قرار است نصب کنیم ایجاد کنید. نام و مکان به شما بستگی دارد، مواردی که در اینجا آورده شده اند فقط یک نمونه هستند.
C:\Users\MY_USER_NAME\Programs\avr8-gnu-toolchain\
محتویات فایل ZIP را در پوشه ” برنامه ها ” استخراج کنید. همه پوشه ها و فایل ها باید در یک پوشه “avr8-gnu-toolchain-win32_x86” باشند . بیایید نام آن را به ” avr8-gnu-toolchain ” تغییر نام دهیم. (فقط برای ساده کردن است.)
Toolchain اکنون در این آدرس است:
C:\Users\MY_USER_NAME\Programs\avr8-gnu-toolchain\
زیر پوشه ها باید چیزی شبیه به این باشند: avr، bin، doc، i686-w64-mingw32، include، info، lib، libexec، man، share.
به متغیر PATH محیط ویندوز خود چیزی اضافه نکنید .
جایگزین
یک پروژه بسیار جالب وجود دارد که می توانید از آن به عنوان جایگزین استفاده کنید:
AVR-GCC 11.1.0 برای ویندوز 32 و 64 بیت https://blog.zakkemble.net/avr-gcc-builds/
اسکریپت AVRGCCStart.cmd
اگر دستوری وجود داشت که محیط توسعه کنسول را برای ما شروع کند، بسیار راحت بود. بنابراین، اجازه دهید یک اسکریپت خط فرمان کوتاه ایجاد کنیم که همه چیز را برای ما تنظیم کند. بیایید آن را AVR GCC Toolchain STARTER بنامیم .
به جای اضافه کردن فایل سیستم Path of the Toolchain به سیستم PATH (در متغیرهای محیطی) ما قصد داریم یک اسکریپت خط فرمان ساده را ایجاد کنیم که این کار را فقط برای خط فرمانی که با آن اسکریپت باز می کنیم انجام می دهد. مزیت انجام این کار این است که نمیخواهیم با متغیر PATH سیستم را با فایلهای اجرایی و کتابخانههای زیاد «آلوده» کنیم. در غیر این صورت ممکن است باعث ایجاد مشکلاتی در برخی از محیط های توسعه نصب شده دیگر شود.
چگونه فایل AVRGCCStart.cmd را ایجاد کنیم؟
- برنامه Notepad ویندوز را باز کنید .
- CTRL + S (برای ذخیره) را فشار دهید .
- نام ” AVRGCCStart.cmd ” را تایپ کنید.
پوشه ای را برای ذخیره فایل انتخاب کنید – پوشه ” برنامه ها ” انتخاب خوبی است.
خطوط زیر را به فایل AVRGCCStart.cmd اضافه کنید :
set Path=%Path%;C:\Users\MY_USER_NAME\Programs\avr8-gnu-toolchain\bin
set Path=%Path%;C:\Users\MY_USER_NAME\Programs\avr8-gnu-toolchain\avr\bin
start cmd
که آنچه را که لازم است به Path اضافه می کند و یک پنجره خط فرمان باز می شود.
مهم : فراموش نکنید که نام کاربری خود را جایگزین MY_USER_NAME کنید .
آزمایش
اسکریپت AVRGCCStart.cmd را شروع کنید.
در خط فرمان اجرا کنید:
avr-gcc --version
که باید نسخه کامپایلر AVR GCC را خروجی دهد. چیزی شبیه به این:
avr-gcc (AVR_8_bit_GNU_Toolchain_3.6.2_1778) 5.4.0
این همچنین به این معنی است که همه چیز به درستی نصب و راه اندازی شده است.
GNU Make – در ویندوز
برای اینکه همه کد منبع C یا C++ کامپایل شده را به روشی راحت در یک فایل HEX بسته بندی کنیم، یعنی با استفاده از به اصطلاح Makefile، به برنامه GNU Make نیاز داریم.
بستههای بسیاری برای ویندوز وجود دارد که حاوی GNU Make هستند – ما میخواهیم از بستههای GnuWin در http://gnuwin32.sourceforge.net/packages.html استفاده کنیم . آنها بخشی از پروژه GnuWin (همچنین به عنوان gnuwin32 شناخته می شود ) در http://gnuwin32.sourceforge.net هستند .
در پوشه ” برنامه ها ” یک زیر پوشه ” gnuwin32 ” برای بسته های gnuwin32 ایجاد کنید.
بسته های Make را از لینک زیر دانلود کنید.
https://gnuwin32.sourceforge.net/packages/make.htm
- فایل ZIP باینری را پیدا کنید . این باید چیزی شبیه ” make-3.81-bin.zip ” باشد. آن را در رایانه خود دانلود کنید.
- محتویات موجود در پوشه gnuwin32 را استخراج کنید .
زیر پوشه ها و فایل ها باید شبیه به: bin، contrib، man، manifest، share باشند.
make.exe به تعدادی کتابخانه اضافی نیاز دارد، بنابراین باید Dependencies (فایلی مانند “make-3.81-dep.zip”) را نیز از همان صفحه دانلود کرده و آنها را در همان مکان استخراج کنیم .
به صورت اختیاری، می توانید اسناد را دانلود و استخراج کنید .
توجه : اگر صفحه وب GnuWin32 به دلایلی کار نمی کند، می توانید مستقیماً به
https://sourceforge.net/projects/gnuwin32/files/make/3.81 بروید و فایل « make-3.81-bin.zip » را دانلود کنید.
dll های libintl3.dll و libiconv2.dll را از آدرسهای
https://gnuwin32.sourceforge.net/packages/libintl.htm
https://gnuwin32.sourceforge.net/packages/libiconv.htm
دانلود کنید و در پوشه bin قرار دهید.
AVRGCCStart را به روز کنید
اسکریپت AVRGCCStart.cmd را ویرایش کنید – خط زیر را اضافه کنید (قبل از خط “start cmd”):
set Path=%Path%;C:\Users\MY_USER_NAME\Programs\gnuwin32\bin
فراموش نکنید که نام کاربری خود را جایگزین MY_USER_NAME کنید .
مهم : هر بار که محتوای اسکریپت AVRGCCStart.cmd را به روز می کنید – پنجره های باز آن را ببندید (در صورت وجود) و دوباره اسکریپت را راه اندازی کنید تا تغییرات اعمال شوند.
آزمایش
در خط فرمان اجرا کنید:
make --version
که باید نسخه GNU Make را خروجی دهد. چیزی شبیه به این:
GNU Make 3.81
این همچنین به این معنی است که همه چیز به درستی نصب و راه اندازی شده است.
گنو CoreUtils برای ویندوز
برخی از فایلهای Makefile (مانند ls ، rm ، mv ، mkdir ، و غیره – آنهایی که بعداً از آنها استفاده خواهیم کرد) ممکن است به ابزارهای گنو دیگری نیاز داشته باشند که بخشی از CoreUtils گنو هستند.
بسته CoreUtils را دانلود کنید: http://gnuwin32.sourceforge.net/packages/coreutils.htm
- فایل ZIP باینری را پیدا کنید . این باید چیزی شبیه ” coreutils-5.3.0-bin.zip ” باشد.
- محتویات این فایل را در پوشه gnuwin32 اکسترکت کنید .
- Dependencies را دانلود و اکسترکت کنید .
- به صورت اختیاری، اسناد را دانلود و اکسترکت کنید .
توجه: برخی از فایلهای موجود در بسته Dependencies ممکن است قبلاً در پوشه gnuwin32 وجود داشته باشند – نادیده گرفتن (یا رد شدن) آنها اشکالی ندارد.
بسته های پیشنهادی
Grep برای ویندوز: http://gnuwin32.sourceforge.net/packages/grep.htm
گزینه ها
- GNU Make را می توان از وب سایت Steve.fi (استیو کمپ) نیز دانلود کرد:
https://steve.fi/software/make
لطفا توجه داشته باشید که آنها کاملا قدیمی هستند.
- جایگزین دیگر پروژه Gow (Gnu On Windows) است – جایگزینی سبک وزن برای Cygwin.
https://github.com/bmatzelle/gow
لطفا توجه داشته باشید که آنها کاملا قدیمی هستند.
آزمایش
در خط فرمان اجرا کنید:
ls -la
این باید فایل های موجود در پوشه فعلی را فهرست کند. چیزی شبیه به این:
total 20
drw-rw-rw- 2 neven 0 0 2021-12-28 17:09 .
drw-rw-rw- 32 neven 0 12288 2021-12-28 15:52 ..
-rwxrwxrwx 1 neven 0 205 2021-12-28 17:37 AVRGCCStart.cmd
این همچنین به این معنی است که همه چیز به درستی نصب و راه اندازی شده است.
AVRDUDE در ویندوز
هنگامی که ما شروع به کامپایل کردن برنامه های خود و بسته بندی آنها به عنوان فایل های HEX می کنیم، به برنامه ای برای آپلود آنها در میکروکنترلر نیاز خواهیم داشت. یکی از این برنامه ها و بسیار محبوب، AVRDUDE است . و بله، البته، یک بیلد برای ویندوز وجود دارد.
در پوشه “ Programs ” یک زیر پوشه “ avrdude-mingw32 ” برای بسته AVRDUDE ایجاد کنید.
به download.savannah.gnu.org/releases/avrdude/ بروید و فایل ZIP mingw32 را پیدا کنید .
در زمان نوشتن این راهنما، آخرین نسخه ای که بدون نیاز به نصب کتابخانه ها و/یا بسته های اضافی کار می کند، 6.3 است .
بسته AVRDUDE را دانلود کنید : download.savannah.gnu.org/releases/avrdude/avrdude-6.3-mingw32.zip
- فایل ZIP باینری را پیدا کنید . این باید چیزی شبیه ” avrdude-6.3-mingw32.zip ” باشد.
- محتویات موجود در پوشه avrdude-mingw32 را استخراج کنید .
توجه: نسخه 6.4 AVRDUDE به کتابخانه ” libhidapi-0.dll ” نیاز دارد که ممکن است در رایانه شما موجود نباشد.
مشکل libusb0.dll
برنامه avrdude به کتابخانه libusb که در فایل libusb0.dll قرار دارد نیاز دارد . توجه داشته باشید که این فایل بخشی از بسته AVRDUDE ZIP نیست .
این مشکل می تواند کمی پیچیده تر شود زیرا روش نصب درایور شرح داده شده در یکی از بخش های زیر از Zadig (که یک برنامه عالی است) استفاده می کند. این یک فایل libusb0.dll را در پوشه ” C:\Windows\System32 ” قرار می دهد ، اما ممکن است آن فایل با بسته AVRDUDE ما سازگار نباشد .
در اینجا توضیح مختصری از مشکل وجود دارد . libusb0.dll در 2 نوع ارائه می شود – یکی برای استفاده در نرم افزار 32 بیتی و دیگری برای نرم افزار 64 بیتی. AVRDUDE به نسخه 32 بیتی نیاز دارد در حالی که Zadig به نسخه 64 بیتی ارائه می شود.
در اینجا یک راه حل برای مشکل وجود دارد. ما یک نسخه 32 بیتی از libusb0.dll دریافت می کنیم و آن را در همان پوشه ای که AVRDUDE است قرار می دهیم.
دریافت libusb0.dll
فایل libusb0.dll که بخشی از پروژه libusbK است (واقع در https://sf.net/p/libusbk ) همان چیزی است که ما به آن نیاز داریم.
آخرین نسخه مناسب 3.1.0.0 واقع در:
https://sourceforge.net/projects/libusbk/files/libusbK-release/3.1.0.0/
فایل libusbK-3.1.0.0-bin.7z را دانلود کنید و محتویات آن را در یک مکان موقت استخراج کنید.
پوشه \libusbK-3.1.0.0-bin\bin\dll\x86 و فایل libusb0.dll را پیدا کنید .
ویژگیهای فایل، برگه «امضای دیجیتال» را بررسی کنید و مطمئن شوید که معتبر است:
Travis Lee Robinson – Tuesday, 17 January, 2012 19:40:19
فایل libusb0.dll را در پوشه AVRDUDE خود (avrdude -mingw32) کپی کنید.
انتخابها
- AVRDUDE (توسط mariusgreuel) در https://github.com/mariusgreuel/avrdude وجود دارد . این شامل تمام کتابخانه های لازم در باینری است.
توجه: ممکن است روی ویندوز 32 بیتی کار نکند.
AVRGCCStart را به روز کنید
خط زیر را به اسکریپت AVRGCCStart.cmd اضافه کنید (قبل از خط “start cmd”):
set Path=%Path%;C:\Users\MY_USER_NAME\Programs\avrdude-mingw32
آزمایش
در خط فرمان اجرا کنید:
avrdude -v
که باید نسخه AVRDUDE را خروجی دهد. چیزی شبیه به این:
avrdude: Version 6.3, compiled on Feb 17 2016 at 09:25:53
این همچنین به این معنی است که همه چیز به درستی نصب و راه اندازی شده است.
درایورهای برنامه نویسی USB
برای آپلود کد باینری کامپایل شده و بسته بندی شده (در قالب یک فایل HEX) در میکروکنترلر به یک برنامه نویس نیاز داریم. در بیشتر موارد این یک دستگاه USB است. یک نرم افزار بسیار تحت ویندوز محبوب برنامه نویسی USBasp است . چنین نرم افزارهایی نیاز به نصب درایور اضافی دارند تا بتوانند به درستی کار کنند.
یکی از بهترین و آسانترین راهها برای نصب درایور برای این نوع برنامه ها، استفاده از برنامه Zadig است .
- آخرین فایل EXE را از https://zadig.akeo.ie دانلود کنید .
- برنامه نویس USBasp خود را در USB رایانه خود قرار دهید.
- برنامه را اجرا کنید. ممکن است لازم باشد روی برخی از دکمه های هشدار که ویندوز به شما نشان می دهد کلیک کنید.
- درایور صحیح را انتخاب کنید که ” libusbK ” است.
توجه: در ویندوزهای 32 بیتی باید libusb-win32 را انتخاب کنید . - دکمه “نصب” را فشار دهید.
شاید لازم باشد یک یا دو دقیقه صبر کنید.
در Windows Device Manager بررسی کنید که آیا درایور به درستی نصب شده است.
آزمایش
حالا بیایید بررسی کنیم که آیا برنامه USBasp می تواند با میکروکنترلر ما (ATtiny85) ارتباط برقرار کند یا خیر. ابتدا مطمئن شوید که پروگرامر USBasp در USB قرار گرفته و به برد میکروکنترلر متصل است. این دستور را اجرا کنید:
avrdude -c usbasp -p t85
نتیجه باید چیزی شبیه این باشد:
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.09s
avrdude: Device signature = 0x1e930b (probably t85)
avrdude: safemode: Fuses OK (E:FF, H:DF, L:62)
avrdude done. Thank you.
اگر ما یک میکروکنترلر متفاوت از آنچه در دستور مشخص شده است (ATtiny85) داشته باشیم، avrdude پیشنهاد می کند که چه چیزی ممکن است باشد.
سایر ابزارهای مفید
اینها حداقل ابزارهایی بودند که برای کامپایل کد منبع خود برای پلتفرم AVR نیاز داریم .
موارد زیر توصیه می شوند اما ابزار اضافی مورد نیاز نیستند.
Shell – BASH
داشتن کنسولی که کمی بهتر از Command Prompt ویندوز باشد راحت خواهد بود. یک جایگزین خوب پوسته BASH است . به عنوان بخشی از پروژه گنو توسعه یافته و اکنون در بسیاری از سیستم عامل های دیگر از جمله لینوکس ، اندروید ، سیستم عامل مک و البته ویندوز استفاده می شود .
انتخاب 1
یک آرشیو که شامل bash.exe و چند فایل .dll ضروری دیگر است که گردآوری شده است. در مخزن GitLab قرار دارد:
- https://gitlab.com/tinusaur/bash-mingw/-/releases
و همچنین در مخزن GitHub - https://github.com/tinusaur/bash-mingw/releases
آرشیو ZIP را دانلود کنید و آن را در یک مکان موقت استخراج کنید. زیر پوشه
“ bash-mingw ” را در پوشه “ Programs ” کپی کنید.
فایل اجرایی BASH در پوشه Programs\bash-mingw\bin قرار خواهد گرفت .
گزینه 2
در Steve.fi – (وب سایت استیو کمپ) یک باینری ویندوز برای دانلود وجود دارد. کاملا قدیمی است اما هنوز کار می کند.
در پوشه “ Programs ” یک زیر پوشه “ bash ” برای بسته bash ایجاد کنید .
به وب سایت بروید: https://steve.fi/software/bash/
- لینک دانلود را باز کنید: https://steve.fi/software/bash/bash-203.zip
- فایل ZIP را دانلود و ذخیره کنید.
- محتویات را در یک مکان موقت استخراج کنید. یک پوشه bash-2.03 وجود خواهد داشت .
- از پوشه bash-2.03 ، 2 فایل: bash.exe و bash.dll را در پوشه ” Programs/bash ” کپی کنید.
- در صورت تمایل، می توانید فایل .bash.rc را نیز در پوشه اصلی خود کپی کنید:
C:\Users\MY_USER_NAME\
آن را ویرایش کنید – اگر می دانید چگونه کار می کند.
توجه: فایل های اجرایی واقعا قدیمی هستند – برخی از آنها به سال های 1998، 1999 برمی گردد.
انتخابها
- win-bash – یک bash مستقل برای ویندوز
http://win-bash.sourceforge.net - نحوه نصب Bash در ویندوز 10
https://hackernoon.com/how-to-install-bash-on-windows-10-lqb73yj3
AVRGCCStart را به روز کنید
خط زیر را به اسکریپت AVRGCCStart.cmd اضافه کنید (قبل از خط “start cmd”):
set Path=%Path%;C:\Users\MY_USER_NAME\Programs\bash-mingw\bin
خط را جایگزین کنید:
start cmd
با:
set HOME=%USERPROFILE%
start bash
آزمایش
اسکریپت AVRGCCStart را شروع کنید.
می بایست شبیه به این باشه:
bash-3.1$_
توجه: ممکن است پیامهای هشداری در مورد یک پوشه «tmp» از دست رفته ببینید.
ویرایشگر متن – نانو
یک ویرایشگر متنی مبتنی بر کنسول (اختیاری) پایان خوبی خواهد بود!
ویرایشگر متن نانو بسیار محبوب است و حتی برای ویندوز نیز در دسترس است.
گنو نانو برای ویندوز گزینه خوبی است و در آدرس زیر قرار دارد:
https://github.com/lhmouse/nano-win
بسته را می توان از این صفحه دانلود کرد:
https://files.lhmouse.com/nano-win/
به دنبال آخرین ساخت در پایین باشید. باید چیزی شبیه ” nano-win_9732_v5.9-10-ga2d202368.7z ” باشد . آن را دانلود کرده و در یک مکان موقت استخراج کنید. می بایست شبیه به این باشه:
pkg_i686-w64-mingw32 (this is the 32-bit version)
pkg_x86_64-w64-mingw32 (this is the 64-bit version)
.nanorc
در پوشه “ Programs ” یک زیر پوشه “ nano ” برای بسته نانو ایجاد کنید .
بسته به رایانه خود، پوشه ای را برای نسخه 32 یا 64 بیتی انتخاب کنید و محتویات آن (چیزی مانند bin ، اشتراک گذاری و غیره) را در زیر پوشه ” nano ” کپی کنید.
در صورت تمایل، فایل .nanorc را در پوشه اصلی خود کپی کنید.C:\Users\MY_USER_NAME\
جایگزین، گزینه ها
- nano برای ویندوز
https://sourceforge.net/projects/nano-for-windows/
توجه: این یک نسخه از نسخه بالا است. - nano – ویرایشگر متن / win32-support
https://nano-editor.org/dist/win32-support/
توجه: ممکن است در ویندوز 32 بیتی کار نکند.
AVRGCCStart را به روز کنید
خط زیر را به اسکریپت AVRGCCStart.cmd اضافه کنید (قبل از خط “start cmd” یا “start bash”):
set Path=%Path%;C:\Users\MY_USER_NAME\Programs\nano\bin
آزمایش
- در خط فرمان اجرا کنید:
nano --version
که باید نسخه نانو را خروجی دهد . چیزی شبیه به این:
GNU nano from git, v5.9-10-gbe0fb5d4a
- در خط فرمان اجرا کنید:
nano
این باید ویرایشگر نانو را شروع کند .
برای خروج از ویرایشگر CTRL + X را فشار دهید . علامت
” ^ ” در منو به این معنی است که شما باید کلید ” CTRL ” را فشار دهید.
AVRGCCStart را به روز کنید
قبل از اینکه خط فرمان را با ” cmd ” یا ” bash ” شروع کنیم، میتوانیم به پوشه Home یا پوشه دیگر (مثلاً پوشه پروژههایمان) برویم.
قبل از خط start bash یک خط به اسکریپت اضافه کنید :
cd %HOME%
در این مرحله محتوای فایل AVRGCCStart.cmd باید چیزی شبیه به این باشد:
set Path=%Path%;C:\Users\MY_USER_NAME\Programs\avr8-gnu-toolchain\bin
set Path=%Path%;C:\Users\MY_USER_NAME\Programs\avr8-gnu-toolchain\avr\bin
set Path=%Path%;C:\Users\MY_USER_NAME\Programs\gnuwin32\bin
set Path=%Path%;C:\Users\MY_USER_NAME\Programs\avrdude-mingw32
set Path=%Path%;C:\Users\MY_USER_NAME\Programs\bash-mingw\bin
set Path=%Path%;C:\Users\MY_USER_NAME\Programs\nano\bin
set HOME=%USERPROFILE%
cd %HOME%
start bash
4. AVR GCC “سلام، جهان!”
بیایید اکنون اولین برنامه خود را بنویسیم – “سلام، جهان!”.
در دنیای میکروکنترلرها، این برنامه Blinking LED است.
اما، قبل از آن، بیایید ببینیم که آیا میتوانیم هر برنامهای را بنویسیم، کامپایل، بستهبندی و آپلود کنیم.
AVR GCC – برنامه “خالی”.
بیایید ابتدا یک پوشه ایجاد کنیم (اگر از قبل وجود نداشته باشد) که همه پروژه های خود را در آن قرار دهیم.
mkdir Projects
cd Projects
حالا بیایید یک پوشه کاری ایجاد کنیم. بیایید آن را ” avr-gcc-empty ” بنامیم.
mkdir avr-gcc-empty
cd avr-gcc-empty
بیایید فقط چند خط کد را در یک فایل main.c بنویسیم.
نانو را با یک فایل جدید شروع کنید – main.c :
nano main.c
کد را وارد کنید:
int main(void) {
return 0;
}
- کامپایل کد منبع:
avr-gcc main.c -o main.elf
توجه: نتیجه یک فایل ELF خواهد بود – main.elf .
ما باید آن را به یک فایل HEX تبدیل کنیم،
- تبدیل به HEX:
avr-objcopy main.elf -O ihex main.hex
نتیجه یک فایل main.hex است .
بیایید ببینیم داخل فایل چیست:
cat main.hex
نتیجه باید به این شکل باشد:
:10000000CF93DF93CDB7DEB780E090E0DF91CF9163
:02001000089551
:00000001FF
اکنون با AVRDUDE میتوانیم آن فایل را در میکروکنترلر آپلود کنیم:
- HEX را آپلود کنید :
avrdude -c usbasp -p t85 -U flash:w:"main.hex":a
در این مثال ” -p t85 ” مشخص می کند که میکروکنترلر یک ATtiny85 است.
توجه داشته باشید که این برنامه کاری انجام نمی دهد. این فقط یک نمونه از بررسی تنظیمات ما است.
همچنین میتوانیم به دستورالعملهای اسمبلی برنامه خود نگاهی بیندازیم:
avr-objdump main.elf -d
نتیجه باید به این شکل باشد:
0: cf 93 push r28
2: df 93 push r29
4: cd b7 in r28, 0x3d ; 61
6: de b7 in r29, 0x3e ; 62
8: 80 e0 ldi r24, 0x00 ; 0
a: 90 e0 ldi r25, 0x00 ; 0
c: df 91 pop r29
e: cf 91 pop r28
10: 08 95 ret
اگر “-Os” را اضافه کنیم، کامپایل انجام می شود و برای اندازه های کد کوچکتر بهینه می شود. بیایید این را امتحان کنیم:
avr-gcc main.c -Os -o main.elf
سپس، دستورالعمل های مونتاژ را بررسی کنید:
avr-objdump main.elf -d
نتیجه چیزی شبیه به این خواهد بود:
0: 80 e0 ldi r24, 0x00 ; 0
2: 90 e0 ldi r25, 0x00 ; 0
4: 08 95 ret
واقعا واضح است که اندازه کد بسیار کوچکتر است.
در همین رابطه: