14.1. تطوير البرنامج الثابت

هذه الصفحات موجّهة لـ مطوري البرنامج الثابت -- الأشخاص الذين يريدون تغيير كود C الذي يعمل على OpenMV Cam، وليس فقط كتابة برامج MicroPython النصية. وهي تغطي الدورة الكاملة: إعداد المحرر، وتثبيت سلسلة أدوات البناء، وتجميع البرنامج الثابت لكل لوحة مدعومة، وتحميل بنائك على الكاميرا، وتصحيحه على عتاد حقيقي باستخدام مسبار J-Link والتصحيح خطوة بخطوة على مستوى المصدر في VS Code.

بنهاية ذلك، يجب أن تكون قادراً على أخذ جهاز نظيف، وبناء البرنامج الثابت، ووضعه على كاميرا، وتعيين نقطة توقف في مصدر C، وتنفيذ خطوة واحدة على المعالج.

ملاحظة

إن البرنامج الثابت لـ OpenMV هو نسخة متفرعة من MicroPython مع إضافة مكتبة الرؤية الآلية ومشغّلات OpenMV ومنافذ اللوحات. ويوجد المصدر في github.com/openmv/openmv. أما وحدات Python image / ml / csi التي تستخدمها في البرامج النصية فهي كود C في هذا المستودع.

14.1.1. كيف يعمل البناء

هناك أمران يستحقان الفهم قبل أن تبدأ، لأنهما يفسران كل تعليمة أدناه:

  • البناء مُدار بـ SDK. أنت لا تثبّت مترجم ARM أو CMake أو Python أو أدوات ST بنفسك. يثبّت المستودع إصداراً دقيقاً محدداً من OpenMV SDK (ملف SDK_VERSION -- وهو 1.6.0 وقت كتابة هذا)، ويقوم make sdk بتنزيل ذلك SDK وفك حزمه في ~/openmv-sdk-<version>/. ثم يضيف البناء أدلة gcc وllvm وcmake وpython وأدوات ST الخاصة بـ SDK إلى بداية PATH. هذا يعني أن الجميع يبنون بـ نفس سلسلة الأدوات تماماً، ويكون إعداد المضيف ضئيلاً.

  • لا يوجد بناء أصلي لنظام Windows. تستهدف سلسلة الأدوات وبرامج البناء النصية أنظمة Linux (x86-64) وmacOS (arm64) فقط. على نظام Windows تبني داخل WSL (نظام Windows الفرعي لـ Linux)، وهو بيئة Linux حقيقية -- لذا بمجرد تثبيت WSL، يتبع مستخدمو Windows تعليمات Linux تماماً. كما يتوفر بناء قائم على Docker وجهاز Linux افتراضي كخيارين أيضاً.

التسلسل عالي المستوى على أي نظام مدعوم هو دائماً:

  1. ثبّت محرراً (VS Code).

  2. احصل على واجهة سطر أوامر شبيهة بـ Linux (Linux أصلي، أو macOS، أو WSL على Windows).

  3. استنسخ المستودع ووحداته الفرعية.

  4. make sdk -- تثبيت سلسلة الأدوات لمرة واحدة.

  5. make -C lib/micropython/mpy-cross -- ابنِ مترجم البايت كود.

  6. make TARGET=<board> -- ابنِ البرنامج الثابت.

  7. حمّله (OpenMV IDE أو dfu-util).

  8. اختيارياً، أرفق J-Link وصحّحه.

تشرح الصفحات أدناه كل خطوة بالترتيب.