در این آموزش با بوتلودر و اینکه چرا شما نیاز دارید آن را نصب و راهاندازی کنید آشنا میشوید و همینطور نحوه راهاندازی آن را خواهید آموخت. در این پروژه از برد آردوینو استفاده شده است. در صورتی که به آردوینو علاقهمند هستید، میتوانید آموزش کامل آردوینو (مبتدی و پیشرفته) را مطالعه کنید.
آیا شما آردوینویی دارید که خراب باشد و دیگر برنامهای را قبول نکند؟ یا شاید شما برنامه firmware خودتان را نوشتهاید، آیا میخواهید آن را در آردوینوی خود آپلود کنید؟ یا شاید فقط میخواهید بهطورکلی کمی بیشتر درباره نحوه کار داخلی آردوینو، AVR و میکروکنترلر بیاموزید. این آموزش به شما خواهد آموخت که بوتلودر چیست، چرا شما نیاز دارید آن را نصب و راهاندازی کنید و همینطور نحوه راهاندازی آن چگونه است.
بوتلودر چیست؟
میکروکنترلرهای Atmel AVRs، آیسیهای کوچک فوقالعادهای هستند، اما آنها برای برنامهنویسی شدن میتوانند کمی پیچیده باشند. شما به یک پروگرامر خاص و تعدادی فایل هگز(hex) نیاز دارید و برنامهنویسی آنها برای تازهکارها خیلی راحت نخواهد بود! آردوینو این مشکلات را ندارد. آنها یک فایل هگز را روی چیپ های AVR قرار دادهاند که به شما اجازه میدهد از طریق یک پورت مخصوص برد را برنامهریزی کنید، این به این معنی است که تمام چیزی که شما نیاز دارید تا آردوینوی خود را برنامهریزی کنید یک کابل USB است.
بهطورکلی بوتلودر یک فایل هگز است که زمانی که شما برد را روشن میکنید اجرا میشود. این خیلی شبیه به BIOS است که روی کامپیوتر شما اجرا میشود. این فایل دو کار را انجام میدهد: اول، اطراف را جستجو میکند تا ببیند اگر کامپیوتر شما در تلاش است آن را برنامهریزی کند، در این صورت، برنامه را از کامپیوتر میگیرد و آن را در حافظه IC ها بارگذاری میکند(در یک مکان مشخص؛ بنابراین، نیازی به دوبارهنویسی بوتلودر نیست). به این دلیل است که زمانی که شما تلاش میکنید برنامهای را بارگذاری کنید، IDE آردوینو چیپ را مجدداً راهاندازی میکند. این بهطور پایه اول IC را خاموش میکند و دوباره روشن میکند، بنابراین بوتلودر میتواند دوباره شروع بکار کند. اگر کامپیوتر قرار نباشد برنامهای را بارگذاری کند؛ این به چیپ میگوید تا برنامهای را اجرا کند که قبلاً در حافظه ذخیرهشده است. یکبار که این برنامه را جایگذاری و اجرا کرد، آردوینو بهطور پیوسته برنامه را تا زمانی که برد تغذیه دارد حلقه وار انجام میدهد.
چرا یک بوتلودر نصب و راهاندازی کنیم؟
اگر شما دارید آردوینوی خود را میسازید، یا نیاز به جایگزینی IC دارید، شما نیاز دارید تا بوتلودر را نصب و راهاندازی کنید. همچنین شما ممکن است یک بوتلودر بد داشته باشید (هرچند که این خیلی نادر است) و نیاز داشته باشید تا بوتلودر را مجدداً نصب و راهاندازی کنید. همچنین گاهی مواردی وجود دارد که شما برد خود را در تنظیمات عجیبی قراردادید و نصب و راهاندازی مجدد بوتلودر و برگرداندن تنظیمات کارخانه آسانترین راه تعمیر آن است. ما بردهایی را دیدهایم که مردم پورت سری آن را خاموش کردهاند به این معنی که هیچ راهی برای آپلود کردن برنامه به برد وجود ندارد، درحالیکه راههای ممکن دیگری برای تعمیر وجود دارد، نصب و راهاندازی مجدد بوتلودر احتمالاً سریعترین و راحتترین راه است. همانطور که قبلاً گفتم داشتن یک بوتلودر بد درواقع بسیار بسیار نادر است. اگر شما یک برد جدیدی داشتید که برنامه را قبول نمیکرد، 99.9% مواقع مشکل از بوتلودر نیست، اما برای 1% مواقعی که مشکل از بوتلودر است، این راهنما به شما کمک میکند تا این مشکل را برطرف کنید.
استفاده از آردوینو بهعنوان پروگرامر
یکراه نصب بوتلودر، استفاده از پروگرامرهای اختصاصی این کار مانند استفاده از پروگرامر USBasp میکروکنترلر - ATMEL اتمل AVR - آپلودر Boot Loader آردوینو است. انتخاب دیگر این است که از آردوینو استفاده کنیم. اگر شما به IDE آردوینو بروید، مثالی شماتیکی به نام “Arduino as ISP” را خواهید دید. اگر شما این برنامه را در آردوینوی خود آپلود کنید، این بهطور اساسی بهعنوان یک پروگرامر AVR عمل خواهد کرد. البته، این برنامه نوشتهشده فقط روی بردهای ATmega328 کار میکند، شاید یک روز این روی بردهای Leonardo یا Due هم کار کند، اما نه در حال حاضر.
متصل کردن پروگرامر
In-Circuit Serial Programming
خیلی غیرمعمول است که IC ها را قبل از اینکه به یک PCB لحیم شوند، برنامهریزی کنیم. بهجای این، اکثر میکروکنترلرها چیزی دارند به نام in-system programming (ISP) header. بهطور خاص، بعضی از کارخانههای IC، مانند Atmel و Microchip، روش مخصوص ISP برای برنامهریزی IC های خود دارند که این به ICSP اشاره میکند. بیشتر بردهای آردوینو و بردهای سازگار با آنها یک هدر ICSP 2*3 پین روی آنها دارند. بعضی از آنها ممکن است بسته به اینکه چند IC روی PCB قرار بگیرند، بیشتر از یکی داشته باشند. این پورت درواقع سه پین SPI یعنی، (MISO, MOSI,SCK) و تغذیه، زمین و reset را نشان میدهد. اینها پینهایی هستند که شما برای اتصال پروگرامر بهمنظور reflash برنامه firmware روی برد خود نیاز خواهید داشت. در تصویر زیر بردآردوینو Uno نشان دادهشده است. روی این برد، دو هدر ICSP نشان دادهشده است که یکی برای میکروکنترلرهای ATmega16U2 و دیگری برای ATmega328 استفاده میشود. اگر بخواهید بوتلودر روی این برد را reflash کنید فقط به هدر ICSP برای ATmega328 نیاز دارید.
روی بعضی از بردهای کوچک ممکن است شما این رابط را نبینید، اما پینها باید جای دیگری پدیدار شوند. شما چه از SMD IC استفاده کنید و چه از DIP IC، پینهای ISP باید در هر شکلی قابلدسترسی باشند. زمانی که هر شش پین ICPS را روی برد خود پیدا کردید، زمان این است که پروگرامر خود را به برد وصل کنید. برای این منظور میتوانید از سیمهای سیم جامپر 40 تایی مادگی – نری استفاده کنید.
اگر شما از یک پروگرامر برای این کار استفاده میکنید، تنظیمات شما باید مانند چیزی شبیه به شکل زیر باشد:
و یا اگر شما از آردوینو بهعنوان پروگرامتان استفاده میکنید، باید مشابه شکل زیر عمل کنید:
این جدول بهوضوح کمک میکند که متوجه شوید هر اتصال کجا میرود:
آپلود کردن برنامه - راه ساده
راه آسان برای آپلود بوتلودر شامل استفاده از IDE آردوینو است. IDE خود را بازکنید و بردی را که میخواهید برنامهریزی کنید را انتخاب کنید. سپس پروگرامر را انتخاب کنید (اگر از Arduino بهعنوان ISP استفاده میکنید، همچنین باید پورت COM را انتخاب کنید که Arduino بهعنوان ISP متصل است). سپس BurnBootloader را انتخاب کنید. این برد انتخابی شمارا انتخاب میکند و بوتلودر مربوطه را در فایل board.txt جستجو میکند. سپس، بوتلودر را در پوشه bootloader پیدا میکند و آن را نصب میکند. این تنها در حالتی کار میکند که برد بهدرستی در IDE نصبشده باشد و بوتلودر شما هم صحیح و سالم باشد. اگر به دلایلی بخواهید از بوتلودری استفاده کنید که در IDE نصب نشده است، به قسمت nest بروید. بااینحال، احتمالاً سادهتر است که بوتلودر را از IDE آردوینو نصب کنید.
آپلود کردن برنامه - راه دشوار
راه دشوار برای کسانی است که میخواهند از خط فرمان استفاده کنند. این روش ارجحتر است اگر شما نمیخواهید مدام IDE را آپدیت و بهروز کنید، در غیر این صورت کاملاً غیرضروری است. دوباره شما نیاز دارید تا یک پروگرامر بگیرید و همهچیز را به هم متصل کنید. در این مثال ما از avrdude تحت ویندوز استفاده میکنیم.
در این پردازش دو قدم وجود دارد. اولین قدم شامل تنظیمات فیوز بیتها است. فیوز بیتها قسمتی از چیپ AVR هستند که چیزهایی مانند آنچه شما بهعنوان یک کریستال اضافی و یا آنچه شما برای آشکارسازی کاهش جریان برق میخواهید را تعیین میکنند. فرمانهایی که در زیر لیست شدهاند برای آردوینو uno با استفاده از ATmega328 هستند، آنها ممکن است روی بردهای مشابه مانند Duemilanove نیز کار کنند، اما اطمینان حاصل کنید که شما قبل از بازی با فیوز بیتها، میدانید چه میکنید. (توجه: این فیوزبیت ها روی یک برد 3.3V/8MHZ کار نخواهند کرد). همهی فیوز بیتهای موردنیاز در پوشه “boards.txt” برای بردهای مختلف فهرست شدهاند، اما دوباره اگر شما یک فایل board.txt نصبشده دارید، پس از راه آسان استفاده کنید.
آردوینو بهعنوان ISP:
avrdude -P comport -b 19200 -c avrisp -p m328p -v -e -U efuse:w:0x05:m -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m
پروگرامر AVR Pocket:
avrdude -b 19200 -c usbtiny -p m328p -v -e -U efuse:w:0x05:m -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m
قدم دوم درواقع آپلود برنامه است:
آردوینو بهعنوان ISP:
avrdude -P comport -b 19200 -c avrisp -p m328p -v -e -U flash:w:hexfilename.hex -U lock:w:0x0F:m
پروگرامر AVR Pocket:
avrdude -b19200 -c usbtiny -p m328p -v -e -U flash:w:hexfilename.hex -U lock:w:0x0F:m
ویدیو اضافه شود
نظرات شما باعث بهبود محتوای آموزشی ما میشود. اگر این آموزش را دوست داشتید، همینطور اگر سوالی در مورد آن دارید، از شنیدن نظراتتان خوشحال خواهیم شد.