جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
هناك العديد من وحدات التحكم الدقيقة لشبكة Wi-Fi في السوق ، ويستمتع العديد من المصنّعين ببرمجة متحكم Wi-Fi الخاص بهم باستخدام Arduino IDE. ومع ذلك ، فإن واحدة من أروع الميزات التي يقدمها متحكم Wi-Fi يميل إلى التغاضي عنها ، وهي برمجة وتحميل الكود الخاص بك عن بُعد ولاسلكيًا باستخدام وظيفة OTA (Over-The-Air).
في Instructable ، سأوضح لك كيفية إعداد OTA على متحكم Wi-Fi الخاص بك باستخدام Arduino IDE في كل مكان على متحكم Ameba Arduino Wi-Fi!
اللوازم
أميبا اردوينو × 1
الخطوة 1: عبر الهواء
يشير OTA (Over-The-Air) إلى آلية الترقية عبر الإنترنت عبر الإنترنت.
يوفر Arduino IDE ميزة OTA ، والتي تتبع سير العمل في الشكل أعلاه.
(ط) يبحث Arduino IDE عبر mDNS عن الأجهزة المزودة بخدمة Arduino IDEOTA في الشبكة المحلية.
(2) نظرًا لأن خدمة mDNS تعمل على Ameba ، فإن Ameba تستجيب لبحث mDNS وتفتح منفذ TCP المحدد للاتصال.
(3) يقوم المستخدم بتطوير البرنامج في Arduino IDE. عند الانتهاء ، اختر منفذ الشبكة.
(4) انقر فوق تحميل. ثم يرسل Arduino IDE صورة OTA إلى Ameba من خلال TCP ، ويحفظ Ameba الصورة إلى عنوان محدد ويعين خيار التمهيد للتمهيد من هذه الصورة في المرة القادمة.
يتكون سير العمل من ثلاثة أجزاء: عملية صورة mDNS و TCP و OTA. التفاصيل المتعلقة بـ mDNS موصوفة في البرنامج التعليمي mDNS. تُستخدم برمجة TCP socket في نقل الصورة وهي متوفرة بالفعل في OTA API.
في القسم التالي ، سنناقش كيفية معالجة صورة OTA ، وتقديم بعض المعرفة الأساسية حول تخطيط ذاكرة فلاش Ameba وتدفق التمهيد.
الخطوة 2: تخطيط ذاكرة فلاش Ameba
حجم ذاكرة فلاش Ameba RTL8195A هو 2 ميغا بايت ، ويتراوح من 0x00000000 إلى 0x00200000. ومع ذلك ، فإن حجم ذاكرة فلاش Ameba RTL8710 هو 1 ميغا بايت. لتتناسب مع استخدام اللوحات المختلفة ، نفترض أن تخطيط ذاكرة الفلاش هو 1 ميغا بايت.
كما هو موضح في الشكل أعلاه ، يحتل برنامج Ameba ثلاثة أجزاء من ذاكرة الفلاش:
- صورة الحذاء :
هذا هو محمل الإقلاع. عندما يقوم Ameba بالتمهيد ، فإنه يضع صورة التمهيد في الذاكرة ويقوم بإجراء التهيئة. علاوة على ذلك ، فإنه يحدد مكان المتابعة بعد أداة تحميل التشغيل. يبحث Bootloader في عنوان OTA ودبوس الاسترداد في منطقة بيانات النظام ويحدد الصورة التي سيتم تنفيذها بعد ذلك. في نهاية محمل الإقلاع ، فإنه يضع الصورة في الذاكرة ويمضي في تنفيذها.
- الصورة الافتراضية 2 :
يتم وضع رمز المطور في هذا الجزء ، يبدأ العنوان من 0x0000B000. أول 16 بايت هي رأس الصورة ، 0x0000B008 ~ 0x0000B00F يشتمل على التوقيع ، والذي يستخدم للتحقق مما إذا كانت الصورة صالحة. يحتوي حقل التوقيع على قيمتين صالحتين لتمييز الصورة الجديدة عن الصورة القديمة.
- صورة OTA :
البيانات الموجودة في هذا الجزء هي أيضًا كود المطور. بشكل افتراضي ، يبدأ هذا الجزء من الذاكرة من 0x00080000 (يمكن تغييره). الاختلافات الرئيسية بين صورة OTA والصورة الافتراضية 2 هي عنوان ذاكرة الفلاش وقيمة التوقيع.
بصرف النظر عن الكود ، هناك بعض كتل البيانات:
- بيانات النظام:
تبدأ كتلة بيانات النظام من 0x00009000. هناك نوعان من البيانات المتعلقة بـ OTA:
1. عنوان OTA بيانات 4 بايت تبدأ من 0x00009000. يخبر عنوان صورة OTA. إذا كانت قيمة عنوان OTA غير صالحة (على سبيل المثال ، 0xFFFFFFFF) ، فلا يمكن تحميل صورة OTA في ذاكرة الفلاش بشكل صحيح.
2. بيانات الاسترداد : 4 بايت تبدأ من 0x00009008 ، يتم استخدام دبوس الاسترداد لتحديد الصورة (الصورة الافتراضية 2 أو صورة OTA) التي سيتم تنفيذها عندما تكون كلتا الصورتين صالحتين. إذا كانت قيمة رقم التعريف الشخصي للاسترداد غير صالحة (على سبيل المثال ، 0xFFFFFFFF) ، فسيتم تنفيذ الصورة الجديدة افتراضيًا.
ستتم إزالة بيانات النظام عندما نقوم بتحميل البرنامج إلى Ameba عبر DAP. أي ، ستتم إزالة عنوان OTA وسيحدد Ameba عدم وجود صورة OTA.
- بيانات المعايرة يتم وضع بيانات المعايرة الطرفية في هذه الكتلة. عادة لا ينبغي حذف هذه البيانات.
الخطوة 3: تدفق التمهيد
من الصورة أعلاه
نناقش السيناريوهات التالية: (1) لا يتم استخدام OTA ، استخدم DAP لتحميل البرنامج:
في هذه الحالة ، يتحقق برنامج bootloader من توقيع الصورة الافتراضية 2 وعنوان OTA. منذ إزالة عنوان OTA ، سيتم تحديد الصورة الافتراضية 2 للتنفيذ.
(2) يتم نقل صورة OTA إلى Ameba ، ويتم تعيين عنوان OTA بشكل صحيح ، ولم يتم تعيين دبوس الاسترداد :
تلقت Ameba صورة محدثة عبر OTA ، سيتم تعيين توقيع الصورة الافتراضية 2 على التوقيع القديم.
يتحقق Bootloader من توقيع الصورة الافتراضية 2 وعنوان OTA. سيجد عنوان OTA يحتوي على صورة OTA صالحة. نظرًا لعدم تعيين دبوس الاسترداد ، فإنه يختار الصورة الجديدة (أي صورة OTA) ليتم تنفيذها.
(3) يتم نقل صورة OTA إلى Ameba ، ويتم تعيين عنوان OTA بشكل صحيح ، ويتم تعيين دبوس الاسترداد :
تلقت Ameba صورة محدثة عبر OTA ، سيتم تعيين توقيع الصورة الافتراضية 2 على التوقيع القديم.
يتحقق Bootloader من توقيع الصورة الافتراضية 2 وعنوان OTA. سيجد عنوان OTA يحتوي على صورة OTA صالحة. ثم تحقق من قيمة دبوس الاسترداد. إذا كان دبوس الاسترداد متصلاً بـ LOW ، فسيتم تنفيذ الصورة الجديدة (أي صورة OTA). إذا كان دبوس الاسترداد متصلاً بـ HIGH ، فسيتم تنفيذ الصورة القديمة (أي الصورة الافتراضية 2).
الخطوة 4: مثال
لاستخدام ميزة OTA ، يرجى ترقية البرنامج الثابت DAP إلى الإصدار> 0.7 (لم يتم تضمين الإصدار 0.7). البرنامج الثابت الافتراضي من المصنع DAP هو الإصدار 0.7. يرجى اتباع التعليمات لترقية البرنامج الثابت DAP:
افتح المثال: "ملف" -> "أمثلة" -> "AmebaOTA" -> "ota_basic"
املأ معلومات SSID وكلمة المرور في نموذج التعليمات البرمجية لاتصال الشبكة.
هناك بعض المعلمات المتعلقة بـ OTA:
§ MY_VERSION_NUMBER : في الإصدار الأول ، نحتاج إلى تعيين عنوان OTA ورقم التعريف الشخصي. نظرًا لأن هذا الوقت الذي نقوم فيه بالتحميل عبر USB هو الإصدار الأول ، فلا داعي لتغيير هذه القيمة.
§ OTA_PORT : سوف يجد Arduino IDE Ameba عبر mDNS. سيخبر Ameba Arduino IDE أنه يفتح منفذ TCP 5000 لانتظار صورة OTA.
§ RECOVERY_PIN : تكوين الدبوس المستخدم للاسترداد. نستخدم دبوس 18 هنا.
ثم نستخدم برنامج تحميل USB إلى Ameba. انقر فوق أدوات -> منافذ ، وتحقق من المنفذ التسلسلي لاستخدامه :
يرجى ملاحظة أن Arduino IDE يستخدم منفذًا واحدًا لبرنامج التحميل والإخراج. لتجنب الموقف الذي لا يمكن فيه إخراج السجل عند استخدام OTA ، نستخدم محطة منفذ تسلسلي أخرى (على سبيل المثال ، مصطلح Tera أو المعجون) بدلاً من جهاز العرض التسلسلي لمشاهدة رسالة السجل.
ثم انقر فوق تحميل واضغط على زر إعادة الضبط.
في رسالة السجل:
1. بين “===== أدخل الصورة 1 ====” و “أدخل الصورة 2 ====” ، يمكنك أن تجد “Flash Image 2: Addr 0xb000”. هذا يعني أن Ameba تحدد التمهيد من الصورة الافتراضية 2 عند 0xb000.
2. بعد "أدخل الصورة 2 ====" ، يمكنك أن تجد "هذا هو الإصدار 1". هذه هي رسالة السجل التي نضيفها في الرسم التخطيطي.
3. بعد توصيل Ameba بـ AP والحصول على عنوان IP "192.168.1.238" ، يقوم بتنشيط mDNS وينتظر العميل.
بعد ذلك ، نقوم بتعديل "MY_VERSION_NUMBER" إلى 2.
انقر فوق "أدوات" -> "منفذ" ، يمكنك مشاهدة قائمة "منافذ الشبكة". ابحث عن "MyAmeba عند 192.168.1.238 (Ameba RTL8195A)" ، MyAmeba هو اسم جهاز mDNS الذي قمنا بتعيينه في نموذج التعليمات البرمجية ، و "192.168.1.238" هو عنوان IP الخاص بـ Ameba.
إذا لم تتمكن من العثور على منفذ شبكة Ameba ، فيرجى تأكيد:
- ما إذا كان جهاز الكمبيوتر الخاص بك و Ameba في نفس الشبكة المحلية؟
- حاول إعادة تشغيل Arduino IDE.
- تحقق من رسالة السجل في Serial Monitor لمعرفة ما إذا كان Ameba متصلًا بـ AP بنجاح.
ثم انقر فوق تحميل. هذه المرة سيتم تحميل البرنامج عبر TCP. في محطة السجل ، يمكنك رؤية معلومات اتصال العميل.
عند تنزيل صورة OTA بنجاح ، ستتم إعادة تشغيل Ameba وسيظهر السجل التالي في محطة السجل.
- بين "===== أدخل الصورة 1 ====" و "أدخل الصورة 2 ====" ، يمكنك رؤية رسالة السجل "Flash Image 2: Addr 0x80000". هذا يعني أن Ameba تحدد التمهيد من OTA Image عند 0x80000.
- بعد "أدخل الصورة 2 ====" ، يكون السجل "هذا هو الإصدار 2" هو الرسالة التي نضيفها في الرسم التخطيطي.
للاستعادة إلى الصورة السابقة بعد تنزيل صورة OTA إلى Ameba ، يرجى توصيل دبوس الاسترداد الذي قمنا بتعيينه في الرسم (على سبيل المثال ، دبوس 18) إلى HIGH (3.3 فولت) ، ثم اضغط على إعادة التعيين.
ثم سيتم اختيار الصورة الافتراضية 2 عند التشغيل. لاحظ أنه لا يتم حذف صورة OTA التي تم تنزيلها ، بمجرد فصل دبوس الاسترداد عن HIGH ، سيتم تنفيذ صورة OTA.
نلخص تدفق التطوير باستخدام OTA في الشكل التالي.