اموزش ریختن بوت لودر اردوینو روی میکروکنترلر

5

در این پست از سایت اِمیک, نحوه ریختن بوت لودر اردوینو روی میکروکنترلر AVR را توضیح خواهم داد. ما در این مطلب اموزشی بوت لودر اردوینو را با استفاده از پروگرامر STK500 (یا هر نوع پروگرامر دیگری که دارید) روی میکروکنترلر می ریزیم.

من چند روز پیش در حال کار کردن با برد اردوینو UNO بودم و داشتم یک پروژه ای را تست می کردم که در سایت قرار بدم و بعد از چند بار پروگرام کردن برد اردوینو, دیگه برد پروگرام نمیشد و نرم افزار اردوینو هنگام پروگرام کردن در مرحله …Uploading می موند و LEDهای مربوط به TX و RX برد اردوینو که قبلا هنگام پروگرام کردن برد چشمک میزدن, دیگه مثل قبل روشن نمیشدن و چشمک نمیزدن و برد اردوینو نیز پروگرام نمی شد. بعد از سرچ کردن متوجه شدم که بوت لودر روی میکروکنترلر اردوینو خراب شده و باید دوباره بریزم, که بعد از انجام این کار و ریختن بوت لودر برد اردوینو دوباره درست شد. بنابراین تصمیم گرفتم که در این پست نحوه ریختن دوباره ی بوت لودر اردوینو روی میکروکنترلر را اموزش بدم تا دوستانی که به این مشکل برخورد کردند بتوانند به راحتی برد اردوینو خود را دوباره درست کنند.

در ابتدا می خواستم با خود نرم افزار اردوینو و با استفاده از گزینه Burn Bootloader بوت لودر را دوباره روی برد اردوینو بریزم که موفق نشدم و هنگام Burn کردن خطا می داد. بنابراین تصمیم گرفتم که میکروکنترلر را از روی برد اردوینو جدا کنم و با استفاده از پروگرامر که من پروگرامر STK500 داشتم, بوت لودر اردوینو را روی میکروکنترلر بریزم. همانطور که گفته شد پروگرامر من STK500 هست ولی با پروگرامرهای دیگه هم میشه این کار رو کرد و مشکلی وجود ندارد. این اموزش برای ریختن بوت لودر روی برد اردوینو UNO هست که دارای میکروکنترلر ATmega328 می باشد و البته برای بردهای اردوینو دیگر هم می شود از این روش استفاده کرد.

از نرم افزار AVR Studio برای پراگرام کردن میکروکنترلر استفاده می کنیم. ابتدا میکروکنترلر را از روی برد اردوینو جدا کنید و روی پروگرامر قرار دهید و پروگرامر را به کامپیوتر خود متصل کنید. 

how-to-load-Arduino-bootloader-on-a-microcontroller-1-emic
قرار دادن میکروکنترلر ATmega328 روی پروگرامر STK500

در ادامه نرم افزار AVR Studio را باز کنید. قبلا در پستی نحوه پروگرام کردن میکروکنترلر با نرم افزار AVR Studio را اموزش داده بودم که می توانید ان پست را در اینجا مشاهده کنید. در ان پست نحوه انتخاب نوع پروگرامر و… توضیح داده شد که شما تا مرحله 3 ان پست را انجام دهید و در ادامه مراحل زیر را انجام دهید.

1- از قسمت Main نوع میکروکنترلر برد اردوینو خود را انتخاب کنید, که برای برد اردوینو یونو ATmega328P می باشد و Programming Mode and Target Settings را هم روی ISP mode قرار دهید.

how-to-load-Arduino-bootloader-on-a-microcontroller-2-emic

2- در قسمت Program ابتدا با کلیک بر روی Erase Device حافظه فلش میکروکنترلر را پاک کنید.

how-to-load-Arduino-bootloader-on-a-microcontroller-3-emic

در بخش Flash باید ادرس فایل هگز بوت لودر را وارد کنید که می توانید در مسیر نصب نرم افزار اردوینو که پیش فرض ان بصورت زیر است, فایل هگز بوت لودر اردوینو برای میکروکنترلرهای مختلف را مشاهده کنید.

که ما برای برد اردوینو UNO که دارای میکروکنترلر ATmega328 می باشد, فایل هگز زیر را انتخاب می کنیم:

how-to-load-Arduino-bootloader-on-a-microcontroller-4-emic

و در نهایت روی Program کلیک کنید تا بوت لودر اردوینو روی میکروکنترلر ریخته شود.

3- در این مرحله ما باید فیوزبیت های میکروکنترلر را تنظیم کنیم که برای این منظور ابتدا باید تنظیمات فیوزبیت ها را برای برد اردوینو خود بدست اوریم. به مسیر زیر در نصب نرم افزار اردوینو می رویم:

و فایل boards را با نرم افزاری مانند Notepad باز کنید. در این فایل Text مقدار رجیسترهای مختلف برای بردهای اردوینو مختلف را مشاهده می کنید که البته ما به همه ی این مقادیر نیاز نداریم. در تصویر زیر فیوزبیت های مورد نیاز ما با فلش قرمز مشخص شده اند که این مقادیر برای برد اردوینو UNO می باشند, فیوزبیت های سایر بردها را نیز می توانید در این فایل مشاهده کنید.

how-to-load-Arduino-bootloader-on-a-microcontroller-5-emic

در ادامه در قسمت Fuses مقدار سه رجیستر LOW و HIGH و EXTENDED را با توجه به تصویر بالا مقدار دهی می کنیم. یعنی:

  • EXTENDED=0xFD
  • HIGH=0xDE
  • LOW=0xFF

how-to-load-Arduino-bootloader-on-a-microcontroller-6-emic

روی Program کلیک کنید تا فیوزبیت های میکرو مقدار دهی شوند. از قسمت Lock Bits نیز فیوزبیت اخر را بصورت زیر مقدار دهی می کنیم و دوباره روی Program کلیک کنید تا فیوزبیت LOCKBIT نیز مقدار دهی شود.

how-to-load-Arduino-bootloader-on-a-microcontroller-7-emic

بازم میگم که این مقادیر برای برد اردوینو یونو هست و برای سایر بردها باید طبق توضیحات بالا این مقادیر را بدست بیاورید.

و در نهایت می توانید میکروکنترلر را از پروگرامر جدا کنید و روی برد اردوینو نصب کنید و برای اطمینان از اینکه بوت لودر به درستی روی برد اردوینو ریخته شده می توانید یک مثال ساده مانند Blink را اجرا کنید. برای اموزش اجرای مثال Blink اینجا کلیک کنید.

نظر یادتون نره…

5 دیدگاه‌ها

  1. سلام باهمین روش میشه کدهای نوشته شده داخل کامپایلراردوینوروهم بدون نیازبه برداردوینوروی میکرواپلودکرد؟واگه میشه دکمه ریست پراکرمرروبه جای دکمه اردوینوبایدفشابدیم ممنون.

  2. میشه بوت لودر رو روی مگا 32 یا مگا 16 ریخت آخه شنیدم میشه از طریق بوت لودر میکرو میکرو رو از طریق راه دور پروگرام کرد درسته میشه این موضوع رو هم آموزش بدید ؟

    • اطلاع زیادی از نحوه پروگرام کردن از راه دور ندارم. در اینده اگر وقت شد حتما در این مورد تحقیق میکنم و نتیجشو بصورت یک پست اموزشی در سایت قرار میدم

ارسال دیدگاه

لطفا دیدگاه خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید