Google is committed to advancing racial equity for Black communities. See how.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

أداة تزويد مصنع OpenWeave

jinja-placeholder-0 .md "> عرض المصدر على جيثب

توفر أداة OpenWeave Factory Provisioning Tool وسيلة ملائمة لتوفير معلومات التكوين المستمرة لكل جهاز على الأجهزة التي تدعم Weave. الغرض من أداة التزويد بالمصنع هو استخدامها كجزء من عملية خط التصنيع التي تختم الأجهزة الفردية ذات الهوية الفريدة ومعلومات الاعتماد قبل الشحن إلى العملاء. كما يمكن للمطورين استخدامه لتخصيص أجهزة ما قبل الإنتاج المستخدمة أثناء عملية التطوير.

نظرية التشغيل

تهدف أداة OpenWeave Factory Provisioning Tool إلى إدخال معلومات التكوين المحددة في مخزن التكوين المستمر للجهاز ، حيث يمكن التقاطها واستخدامها في وقت التشغيل بواسطة البرامج الثابتة للجهاز. عادةً ما يتم تخزين التكوين المستمر للجهاز داخل الفلاش الداخلي للجهاز ، على الرغم من أن تفاصيل كيفية تخزين البيانات بالضبط ، وفي أي تنسيق ، تختلف من نظام إلى آخر. أداة التزويد بالمصنع نفسها مستقلة عن تنسيق التخزين النهائي ، وتعتمد على التعليمات البرمجية في البرامج الثابتة للجهاز لكتابة البيانات بالطريقة الصحيحة. كما أن واجهة مستخدم الأداة مستقلة إلى حد كبير عن نوع الأجهزة التي يتم تكوينها ، مما يعني أنه يمكن استخدام عمليات تصنيع مماثلة عبر خطوط المنتجات التي تستند إلى أنظمة أساسية مختلفة للأجهزة.

تم تصميم أداة التزويد بالمصنع للعمل على جهاز مضيف متصل بجهاز مستهدف عبر شكل من أشكال التصحيح أو واجهة التحكم - على سبيل المثال ، منفذ JTAG أو SWD. تعمل الأداة عن طريق حقن معلومات التزويد في ذاكرة الوصول العشوائي للجهاز في شكل مشفر بشكل خاص. يُطلب من الجهاز بعد ذلك إعادة التشغيل ، وعندئذٍ يقوم الرمز النقطي المضمن في البرنامج الثابت للجهاز بتحديد موقع البيانات المشفرة ، والتحقق من سلامتها ، وكتابة القيم المتضمنة في التخزين المستمر بتنسيق مناسب للنظام الأساسي.

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

عند وضعها في ذاكرة الوصول العشوائي (RAM) ، يتم ترميز بيانات التزويد ببادئة يمكن التعرف عليها بسهولة ، مما يتيح العثور عليها بسرعة أثناء عملية المسح. يتم استخدام قيمة التحقق من السلامة بناءً على تجزئة التشفير لتأكيد صحة البيانات قبل المعالجة.

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

تعتمد أداة التزويد بالمصنع على مجموعة من أدوات التطوير الخارجية للتواصل مع الجهاز المستهدف. تعتمد الأدوات المعينة المستخدمة على نوع الجهاز المستهدف. يتم دعم واجهتين للجهاز حاليًا:

  • مجس تصحيح SEGGER J-Link متصل بمنفذ JTAG أو SWD للجهاز
  • منفذ USB تسلسلي متصل بـ Espressif ESP32

تعتمد واجهة J-Link على أداة SEGGER J-Link Commander (JLinkExe) ، والتي يجب تثبيتها بشكل منفصل على الجهاز المضيف.

تعتمد واجهة ESP32 على أمر Espressif esptool.py ، والذي يتم توفيره كجزء من ESP-IDF SDK الخاص بـ Espressif.

أنواع المعلومات التي يمكن توفيرها

أداة OpenWeave Factory Provisioning Tool قادرة على توفير الأنواع التالية من المعلومات:

  • الرقم التسلسلي للجهاز
  • معرف جهاز نسج المعين من قبل الشركة المصنعة
  • شهادة نسج مُعيّنة من قبل الشركة المصنعة ومفتاح خاص
  • نسج رمز الاقتران
  • رقم مراجعة المنتج
  • تاريخ التصنيع

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

مصادر معلومات التزويد

يمكن توفير معلومات إدارة الجهاز إلى أداة إدارة المصنع بالطرق التالية:

  • وسيطات سطر الأوامر
  • استخدام ملف توفير CSV
  • من خلال جلب القيم من خادم توفير Nest

سطر الأوامر

في أبسط شكل ، يتم تحديد معلومات إدارة الجهاز مباشرة في سطر الأوامر إلى أداة التزويد OpenWeave Factory. فمثلا:

 ./weave-factory-prov-tool --target nrf52840 --device-id 18B4300000000001 \
    --pairing-code NESTUS --mfg-date 2019/04/01

يمكن تحديد قيم البيانات الثنائية ، مثل شهادة Weave والمفتاح الخاص ، إما كسلاسل أساس 64 ، أو كأسماء الملفات التي تحتوي على البيانات المطلوبة في النموذج الخام (ثنائي).

انظر أدناه للحصول على قائمة كاملة بوسيطات سطر الأوامر المتوفرة.

توفير ملف CSV

لاستيعاب التوفير الجماعي للأجهزة ، يمكن لأداة التوفير في المصنع قراءة بيانات التوفير من ملف بيانات التهيئة بتنسيق CSV. ومن المتوقع الأعمدة من هذا الملف تتوافق مع أنواع البيانات المحددة المخصصات - وهذا هو، Serial_Num ، Certificate ، Private_Key ، الخ الصفوف في ملف تعطي القيم الفردية لأجهزة محددة، فهرستها من قبل نسج معرف الجهاز ( Device_Id ). يجب تحديد معرف الجهاز المحدد الذي سيتم توفيره في سطر الأوامر. فمثلا:

 ./weave-factory-prov-tool --target nrf52840 --device-id 18B4300000000001 \
    --prov-csv-file ./dev-provisioning-data.csv

أعمدة CSV التالية مدعومة:

اسم شكل وصف
Device_Id 16 رقم سداسي عشري معرف جهاز نسج. يجب أن يكون حاضر.
Serial_Num خيط الرقم التسلسلي للجهاز.
Certificate سلسلة الأساس 64 شهادة جهاز Weave المعين من قبل الشركة المصنعة.
Private_Key سلسلة الأساس 64 مفتاح خاص نسج من قبل الشركة المصنعة.
Pairing_Code خيط نسج رمز الاقتران.
Product_Rev عدد صحيح رقم مراجعة المنتج.
Mfg_Date YYYY / MM / DD تاريخ تصنيع الجهاز.

قد تظهر الأعمدة في ملف CSV بأي ترتيب. جميع الأعمدة اختيارية ، باستثناء Device_Id . لا يتم توفير أي قيم غير موجودة في ملف CSV على الجهاز.

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

شكل دعم ملف CSV بواسطة أداة التزويد مصنع متوافق مع الإخراج من weave الأداة gen-provisioning-data الأوامر.

خادم توفير Nest

تدعم أداة Provisioning Tool (أداة التزويد بالمصنع) جلب معلومات إدارة معلومات مختارة من خادم إدارة Nest باستخدام بروتوكول HTTPS. يمكن استخدام بروتوكول خادم التزويد لجلب شهادة جهاز Weave المعين من قبل الشركة المصنعة والمفتاح الخاص المقابل ورمز الاقتران Weave من خادم التزويد.

يتم تحديد موقع الشبكة لخادم التوفير من خلال توفير عنوان URL أساسي في سطر أوامر أداة التوفير. يتم تحديد معلومات التوفير المطلوبة عن طريق تحديد معرف جهاز Weave في سطر الأوامر. فمثلا:

 ./weave-factory-prov-tool --target nrf52840 --device-id 18B4300000000001 \
    --prov-server https://192.168.172.2:8000/

يمكن للمستخدم تحديد قيم إدارة الحسابات الفردية في سطر الأوامر بالإضافة إلى عنوان URL لخادم التوفير. في هذه الحالة ، تكون القيم الواردة في سطر الأوامر سابقة على القيم التي يتم إرجاعها بواسطة الخادم.

تمكين / تعطيل دعم التزويد بالمصنع

يتحكم WEAVE_DEVICE_CONFIG_ENABLE_FACTORY_PROVISIONING خيار تكوين وقت الترجمة في دعم توفير OpenWeave في البرامج الثابتة للجهاز. يتم تمكين هذا الخيار افتراضيًا. يمكن تعطيل الميزة عن طريق تجاوز الخيار في ملف WeaveProjectConfig.h . فمثلا:

#define WEAVE_DEVICE_CONFIG_ENABLE_FACTORY_PROVISIONING 0

بشكل عام ، من الآمن تمكين إدارة المصنع في البرامج الثابتة لجهاز الإنتاج شريطة أن يتم تعطيل واجهة تصحيح الجهاز بشكل مناسب على أجهزة الإنتاج. يمكن تحقيق ذلك إما عبر وسائل الأجهزة (على سبيل المثال ، عن طريق نفخ الصمامات في SoC) ، أو في البرنامج (على سبيل المثال ، عبر محمل التمهيد الآمن الذي يمنع الوصول إلى التصحيح كجزء من عملية التمهيد).

تشغيل أداة التزويد بالمصنع

تدعم أداة OpenWeave Factory Provisioning Tool خيارات سطر الأوامر التالية:

اختيار وصف
--الهدف <string> نوع الجهاز المستهدف. الاختيارات هي: nrf52840 ، esp32
- Load-addr <hex-digits> العنوان في ذاكرة الجهاز الذي ستتم كتابة بيانات التزويد عليه.
- مطول ، -v اضبط مستوى الإسهاب الناتج. استخدم الحجج المتعددة لزيادة الإسهاب.
- الرقم المسلسل <سلسلة> قم بتعيين الرقم التسلسلي للجهاز.
- معرف الجهاز <hex-digits> قم بتعيين معرف الجهاز المعين من قبل الشركة المصنعة.
--جهاز معتمد <base-64> | <اسم الملف> قم بتعيين شهادة جهاز Weave المعين من قبل الشركة المصنعة.
--مفتاح الجهاز <base-64> | <اسم الملف> تعيين المفتاح الخاص لجهاز Weave المعين من قبل الشركة المصنعة.
--رمز زوجي <سلسلة> اضبط رمز إقران الجهاز.
--product-rev <integer> قم بتعيين مراجعة المنتج للجهاز.
--mfg-date <YYYY / MM / DD> | اليوم | الآن حدد تاريخ تصنيع الجهاز.
- jlink-cmd <path-name> المسار لأمر JLink. الإعدادات الافتراضية لـ "JLinkExe".
--jlink-if SWD | JTAG نوع واجهة J-Link. التخلف عن الدفع المؤجل.
--jlink-speed <integer> | التكيف | تلقاءي سرعة واجهة J-Link.
- jlink-sn <سلسلة> الرقم التسلسلي لمسبار J-Link.
--ptpt-cmd <path-name> مسار الأمر esptool. الإعدادات الافتراضية لـ "esptool.py".
--port <path-name> اسم جهاز منفذ COM لـ ESP32. افتراضيات / tty / USB0.
- سرعة <عدد صحيح> معدل الباود لمنفذ COM. التخلف عن 115200.
--prov-csv-file <file-name> قراءة بيانات إدارة حسابات الجهاز من ملف CSV المخصص.
--prov-server <url> قراءة بيانات إدارة حسابات الجهاز من خادم إدارة الحسابات.
- تعطيل خادم التحقق من الصحة عند استخدام HTTPS ، قم بتعطيل التحقق من صحة الشهادة المقدمة من قبل خادم التوفير.

أمثلة

يقوم الأمر التالي بتعيين معرف الجهاز والرقم التسلسلي ومراجعة المنتج ورمز الاقتران إلى قيم محددة. يتم تعيين تاريخ التصنيع على التاريخ الحالي. ويتم تعيين شهادة الجهاز والمفتاح الخاص لاختبار القيم الواردة في ملف CSV الموفر مع مستودع المصدر openweave-core .

 ./weave-factory-prov-tool --target nrf52840 --device-id 18B4300000000042 \
    --serial-num JAYS_DEVICE_42 --product-rev 1 --pairing-code NESTUS --mfg-date today \
    --prov-csv-file ~/projects/openweave-core/certs/development/device/test-dev-provisioning-data.csv