X أهلا و سهلا بك عزيزي الزائر لأسباب فنية تم نقل المدونة للموقع الجديد يرجى الإنتقال للرابط التالي هوريزون فور إلكترونيكس وشكرا

25‏/05‏/2015

حرق محمل الإقلاع Bootloader


السلام عليكم ورحمة الله وبركاته 

اليوم راح نتكلم عن طريقة حرق الـ  Bootloader  و تحويل المتحكم ATmega8 ,ATmega88 ,ATmega168 or ATmega328 إلى Arduino الشرح راح يعتمد على المبرمجة  USBASP  .
USBasp AVR-Programmer

اولا ماهو الـ Bootloader  

الـ Bootloader عبارة عن برنامج صغير يتم تخزينه في المتحكم و ظيفته الأساسية هي نقل برنامجك من بيئة التطوير Arduino IDE إلى المتحكم عن طريق المنفذ التسلسلي UART دون الحاجة لإستخدام مبرمجة خارجية

والأن دعونا نلقي نظرة سريعة على توزيع اقطاب المتحكم و الـ  Arduino UNO

 
 كما نلاحظ الصورة في الأعلى للمتحكم ATmega328 و لكن توزيع الأقطاب يتوافق مع كل من ATmega8 ,ATmega88 & ATmega168 فلا تقلق . و الفارق الوحيد بين هذه المتحكمات هو سعة ذاكرة البرنامج Flash

ما يهمنا حاليا لبرمجة المتحكم أربعة أقطاب فقط وهم MISO, MOSI ,SCK, RESET و يظهر مكان ربطهم في الصورة و طبعا تأمين تغذية للمتحكم 5V
و سنحتاج  ايضا إلى كريستالة 16MHZ و مكثفين 22pF و باعث ضوئي LED + مقاومة 1K


1- تجهيز المتحكم لبرمجته: نقوم بربط كل من الكريستالة و المكثفين 22pF و الليد و المقاومة و المبرمجة بالمتحكم كما في الصور التالية 
توزيعة اقطاب المبرمجة





2- حرق الـ Bootloader 
من اين نحصل على ملف الـ bootloader ببساطة شديدة تجده في مجلدات الأردوينو 
C:\Program Files (x86)\Arduino\hardware\arduino\bootloaders
لكن ملفات الـ bootloader المرفقة مع الأردوينو تأخذ مساحة كبيرة نسبيا من المتحكم تتراوح من 1024 بايت إلى 2048 بايت وذلك حسب اصدارة البورد التي ستستخدم bootloader الخاص بها بإستثناء الـ Arduino UNO فالـ bootloader الخاص به يستهلك 512 بايت فقط من الذاكرة و السبب يرجع لإستخدام الـ optiboot فيه و انا شخصيا استخدمه مع جميع المتحكمات لدي لما يوفره لي من مساحة اضافية للبرنامج تستطيعون تحميله من هنا

ملاحظة : إذا لم تكن مهتما بتوفير مساحة إضافية لبرامجك على المتحكم بإمكانك تجاوز هذه الفقرة 

بعد تحميل ملفات optiboot و فك الضغط عنها قم بنسخ المجلد و ضعه في مسار برمجية الأردوينو لديك سيكون المسار شبيه بهذا
 C:\Program Files (x86)\Arduino\hardware\arduino\bootloaders
ربما تجد نفس اسم المجلد لديك قم بإستبداله لأن الملفات المرفقة لأحدث نسخة من optiboot 
الأن نفتح ملف boards.txt الموجود ضمن مسار الأردوينو بالـ notepad++ و ننزل لأسفل الصفحة و نضيف هذه الأسطر 

 
##############################################################

atmega328o.name=[Optiboot] Arduino Duemilanove or Nano w/ ATmega328
atmega328o.upload.protocol=arduino
atmega328o.upload.maximum_size=32256
atmega328o.upload.speed=115200
atmega328o.bootloader.low_fuses=0xff
atmega328o.bootloader.high_fuses=0xde
atmega328o.bootloader.extended_fuses=0x05
atmega328o.bootloader.path=optiboot
atmega328o.bootloader.file=optiboot_atmega328.hex
atmega328o.bootloader.unlock_bits=0x3F
atmega328o.bootloader.lock_bits=0x0F
atmega328o.build.mcu=atmega328p
atmega328o.build.f_cpu=16000000L
atmega328o.build.core=arduino:arduino
atmega328o.build.variant=arduino:standard

##############################################################

diecimilao.name=[Optiboot] Arduino Diecimila, Duemilanove, Nano, NG w/ ATmega168
diecimilao.upload.protocol=arduino
diecimilao.upload.maximum_size=15872
diecimilao.upload.speed=115200
diecimilao.bootloader.low_fuses=0xff
diecimilao.bootloader.high_fuses=0xdd
diecimilao.bootloader.extended_fuses=0x04
diecimilao.bootloader.path=optiboot
diecimilao.bootloader.file=optiboot_diecimila.hex
diecimilao.bootloader.unlock_bits=0x3F
diecimilao.bootloader.lock_bits=0x0F
diecimilao.build.mcu=atmega168
diecimilao.build.f_cpu=16000000L
diecimilao.build.core=arduino:arduino
diecimilao.build.variant=arduino:standard

##############################################################

atmega8o.name=[Optiboot] Arduino NG or older w/ ATmega8
atmega8o.upload.protocol=arduino
atmega8o.upload.maximum_size=7680
atmega8o.upload.speed=115200
atmega8o.bootloader.low_fuses=0xbf
atmega8o.bootloader.high_fuses=0xdc
atmega8o.bootloader.path=optiboot
atmega8o.bootloader.file=optiboot_atmega8.hex
atmega8o.bootloader.unlock_bits=0x3F
atmega8o.bootloader.lock_bits=0x0F
atmega8o.build.mcu=atmega8
atmega8o.build.f_cpu=16000000L
atmega8o.build.core=arduino:arduino
atmega8o.build.variant=arduino:standard

##############################################################

و نقوم بإغلاقها مع الحفظ
الأن نفتح بيئة التطوير اردوينو و نختار البورد المتوافق مع المتحكم لدينا في مثالنا هذا اخترت المتحكم ATmega168


الأن نختار المبرمجة

أخيرا حرق الـ bootloader 

بعد الإنتهاء من حرق الـ bootloader سنلاحظ أن الباعث الضوئي Led بداء بالوميض لفترة زمنية قصيرة ما يدل على نجاح عملية الحرق و بدء عمل الـ bootloader بشكل صحيح و مبروك عليك .


المخطط النهائي للأردوينو و توزيعة أقطابه

روابط هامة  
بناء مبرمجة USBasp للمتحكمات AVR

أخيرا ان كنت اصـــبت فمن الله وحـــــده؛ وان اخطــــــأت فمن نفسي ومن الشيطآن
م.عبدالله جلول

هناك تعليق واحد: