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

Greeting
بسم الله الرحمن  الرحيم , و الصلاة و السلام على أشرف الأنبياء و المرسلين نبينا محمد وعلى آله وصحبه أجمعين اللهم لا سهل إلا ماجعلته سهلاً وأنت تجعل الحزن إذا شئت سهلاً.

موضوعنا لهذا اليوم هو طريقة حرق الـ  Bootloader  و تحويل المتحكم ATmega8 ,ATmega88 ,ATmega168 or ATmega328 إلى Arduino و سنعتمد في الشرح على المبرمجة  USBASP.

ماهو الـ Bootloader

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


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

ما يهمنا حاليا لبرمجة المتحكم أربعة أقطاب فقط وهم MISO, MOSI ,SCK, RESET و يظهر مكان ربطهم في الصورة و سنحتاج  ايضا إلى :
  1. كريستالة 16MHZ .
  2. مكثفين 22pF .
  3. باعث ضوئي LED .
  4. مقاومة 1K . 

تجهيز المتحكم لبرمجته 

نقوم بربط كل من العناصر المذكورة بالمتحكم بحسب المخطط التالي 


الصورة التالية لمخطط توزيع اقطاب المبرمجة USBASP 
  شرح التوصيلات من مأخذ USBASP إلى المتحكم 
  • VCC to VCC (7) + AVCC (20)
  • GND to GND (8) + GND (22)
  • SCK to SCK (13)
  • MISO to MISO (12)
  • MOSI to MOSI (11)
  • Reset to Reset
  • Cystal to Pin 9 and 10, add two Capacitor 22pf to GND

حرق الـ Bootloader

من أين نحصل على ملف الـ bootloader ببساطة شديدة تجده في مجلدات الأردوينو في المسار التالي :
C:\Program Files (x86)\Arduino\hardware\arduino\bootloaders

لكن ملفات الـ bootloader المرفقة مع الأردوينو تأخذ مساحة كبيرة نسبيا من المتحكم تتراوح من 1024 بايت إلى 2048 بايت وذلك حسب اصدارة البورد التي ستستخدم bootloader الخاص بها بإستثناء الـ Arduino UNO فالـ bootloader الخاص به يستهلك 512 بايت فقط من الذاكرة و السبب يرجع لإستخدام الـ optiboot فيه و انا شخصيا استخدمه مع جميع المتحكمات لدي لما يوفره لي من مساحة اضافية للكود
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 بشكل صحيح و مبروك عليك .

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

الإختبار

لوحة اردوينو تحتوي على منفذ USB يزودها بالتغذية و يأمن لها الإتصال مع المتحكم عبر منفذ UART ما يجعلها سهلة الإستحدام
و لعمل اتصال بين المتحكم و الحاسوب ستحتاج لإستخدام  USB to TTL Serial Adapter
يتم ربطها مع المتحكم بالشكل التالي

 الأن بإمكانك رفع أي برنامج على الأردوينو التي قمت بعملها و افضل مثال هو Blink without Delay

روابط قد تهمك


وهكذا لكل بداية نهاية ، وخير العمل ما حسن آخره وخير الكلام ما قل ودل وبعد هذا الجهد المتواضع أتمنى أن أكون موفقا في شرحي هذا موضحا أهم التفاصيل لهذا الموضوع الشائك ، وفقني الله وإياكم لما فيه صالحنا جميعا .
share
السابق
هذ أخر موضوع

2 التعليقات

إضغط هنا لـ التعليقات
The Tamdy
المدير
30 يونيو، 2017 1:03 م ×

حفظك الله ورعاك وسدد خطاك
واصل أخي فما أحوج العرب والمسلمين إلى هذا العلم, ولاتنسى أخي فكل من قرأ حرفا من مقالك إلا وكان لك الأجر إن شاء الله.

رد
avatar
The Tamdy
المدير
30 يونيو، 2017 1:04 م ×

حفظك الله ورعاك وسدد خطاك
واصل أخي فما أحوج العرب والمسلمين إلى هذا العلم, ولاتنسى أخي فكل من قرأ حرفا من مقالك إلا وكان لك الأجر إن شاء الله.

رد
avatar
شكرا لك ولمرورك