dir="rtl" lang="ar"> آلية برمجة المتحكمات من عائلة AVR الجزء 2 - Atadiat

آلية برمجة المتحكمات من عائلة AVR الجزء 2

لقد تعرفنا في الجزء الأول على معنى برمجة المتحكمات و مكوناتها و على أنواع الذواكر و تحدثنا عن ملفات الHEX و بنيتها و كيف نصل لها في النهاية . و حان الآن وقت التحدث بشيء عملي يهمنا جميعاً أثناء عملنا مع المتحكمات و الإلكترونيات القابلة للبرمجة و تحديداً عبر بروتوكول SPI.

مقدمة

من أجل برمجة المتحكمات نحن بحاجة إلى ما يسمى المبرمجات programmers و كل منها يختلف بحسب البروتوكول و المنفذ الذي تستخدمه و من هذه الانواع :

تركيزنا على مبرمجات يمكن وصلها مع اليو إس بي و أيضاً تُستخدم لبرمجة المتحكمات عبر منفذ ال SPI .

محمل الإقلاع bootloader

من الجدير بالذكر أنه هناك نوع آخر من المبرمجات و الذي يعتبر برمجي  و يسمى محمّل الإقلاع bootloader و يمكن أن يعمل على بروتوكولات  مختلفة حسب إمكانيات المايكرو كونترولر المستخدم ، مثلاً محمل الإقلاع المستخدم في الأردوينو  (أتميغا 328 ) هو برنامج يتوضع في مكان محدد محجوز من الذاكرة يبقى ثابتا في الذاكرة  ففي كل مرة نرفع برنامجاً جديداً فإنه يحمّل هذا البرنامج في قسم المستخدم و ينقل التحكم إليه و عند ورود طلب برمجة جديد يعاود الكرة  و بالواقع البووتلودر يمكن أن يكون لأمور بسيطة كالتي نواجهها في المايكرو من برمجتهم و يصل في التعقيد إلى حد نظم التشغيل المضمنة عند بدء التنفيذ و نقل التحكم لنظام التشغيل .

و من أحد مساوئ محمل الإقلاع أنه يحجز حجم محدد (حسب ما يحدده المبرمج عبر فيوزات خاصة يتم ضبطها  و حسب الحجم الذي يتطلبه بالطبع) فحالياً البووتلودر في أردوينو أونو يحجز 0.5 كيلو بايت و في إصدارات قديمة كان يحجز 2 كيلو مما يشكل ربع الذاكرة لو تحدثنا عن الإصدارات التي كانت تعمل على أتميغا 8 .

لكن من أفضل محاسنه أنه يلغي الحاجة لمبرمجات خارجية مما يعني اختصاراً في التكلفة و التعب عند العمل مع العتاد .

لنبدأ العمل

كما ترون من الصورة فإننا سنقوم بتجربة برمجة المتحكمات من خلال طريقتين : الأولى عن طريق بمبرمجة USBasp و الثانية من خلال الأردوينو التي أصبح لها برامج كثيرة تسمح لها بالعديد من المهام و من حسن الحظ أن أحد هذه البرامج يجعلها مبرمجة خارجية .

و لكن قبل أن نبدأ التنفيذ العملي يجب أن نتحدث عن البرنامج الذي سنستخدمه على طرف الحاسب و الذي سيصدر الأوامر عبر اليو إس بي إلى الأردوينو أو الUSBasp من أجل البرمجة ، فهو البرنامج الذي سنوجه له الملف hex أو قيم الفيوزات التي نريد برمجتها و هو سيقوم بالباقي .

avrdude

باختصار إن مهمة هذه البرمجية التي تعمل على أنظمة التشغيل الثلاثة : لينكس – ماك – ويندوز هي :

AVRDUDE is an utility to download/upload/manipulate the ROM and EEPROM contents of AVR microcontrollers using the in-system programming technique (ISP).

إذا كنت من مستخدمي لينكس يمكنك تحميل هذا البرنامج على جهازك من software center أو من خلال synaptic packages ، و لمستخدمي الويندور يمكنهم تحميل برنامج winavr و الذي هو عبارة عن سلسلة أدوات (مفسر – منقح – …إلخ) و تسمى علمياً tool chain  و من ضمن هذه الأدوات avrdude .

قد يبدو استخدام avrdude  مزعجاً أو مخيفاً لمن لا يستخدم نظام لينكس و ليس على احتكاك بسطر الأوامر إلا أنه سنكتشف سوية مدى سهولة استخدامه . و لنبدأ بقسم مشترك بين الجميع  .

الشكل العام لتعليمة ال avrdude

أهم الخيارات المتاحة

تجربة عملية في برمجة المتحكمات

برمجة المتحكمات باستخدام أردوينو

تسمى Arduino as an AVR ISP (In-System Programmer) و هو عبارة عن برنامج يخصّص بعض الأرجل في الأردوينو لتكول أرجل لبرمجة متحكم خارجي ، و يتم التعامل بعد ذلك مع الأردوينو كمبرمجة avrisp و المدعومة أيضاً من avrdude . لاستخدام الأردوينو كمبرمجة :
  1. حمل أحدث نسخة من سكيتش arduinISP و ذلك من مستودع الأردوينو البرمجي على github ، و قم بتحميله على الأردوينو .
  2. قم بالتوصليلات المشروحة في موقع أردوينو الرئيسي
  3. استخدام التعليمة بالشكل التالي :
    avrdude -c avrisp -p m8 -P /dev/ttyACM0 -b 19200 -U flash:w:avrcode.hex
    مع الانتباه اننا قمنا بتحديد سرعة الاتصال بين البرنامج و الأردوينو لأن سكيتش المبرمجة يعتمد على انشاء اتصال بهذه السرعة Serial.begin(19200) و استخدام سرعات أخرى يؤدي إلى عدم المزامة .

واجهات رسومية

تسهلاً للتعامل مع avrdude هناك كثير من الطرق الرسومية مثل استخدام إضافة ال avr الخاصة ببرنامج eclipse و التي تجعل من عملية الرفع عبارة عن ضغطة زر بعد ضبط الإعدادات بشكل صحيح ، و هناك واجهات أخرى خاصة لبرنامج avrdude تحديداً

Exit mobile version