Google is committed to advancing racial equity for Black communities. See how.
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

OpenWeave Factory Provisioning Tool

जिंजा-प्लेसहोल्डर-0 .md "> GitHub पर स्रोत देखें

OpenWeave Factory Provisioning Tool बुन-सक्षम उपकरणों पर लगातार, प्रति-डिवाइस कॉन्फ़िगरेशन जानकारी प्रदान करने के लिए एक सुविधाजनक साधन प्रदान करता है। फ़ैक्टरी प्रोविज़निंग टूल का उपयोग एक विनिर्माण लाइन प्रक्रिया के भाग के रूप में किया जाता है जो ग्राहकों को शिपमेंट से पहले विशिष्ट पहचान और क्रेडेंशियल जानकारी के साथ व्यक्तिगत डिवाइसों पर मुहर लगाता है। इसे डेवलपर्स द्वारा विकास प्रक्रिया के दौरान उपयोग किए जाने वाले पूर्व-उत्पादन हार्डवेयर को निजीकृत करने के लिए भी इस्तेमाल किया जा सकता है।

संचालन का सिद्धांत

OpenWeave Factory Provisioning Tool का लक्ष्य डिवाइस के निरंतर कॉन्फ़िगरेशन स्टोर में चुनिंदा कॉन्फ़िगरेशन जानकारी को इंजेक्ट करना है, जहां इसे उठाया जा सकता है और डिवाइस फर्मवेयर द्वारा रनटाइम पर उपयोग किया जा सकता है। लगातार डिवाइस कॉन्फ़िगरेशन आमतौर पर डिवाइस के आंतरिक फ्लैश के भीतर संग्रहीत किया जाता है, हालांकि डेटा कैसे संग्रहीत किया जाता है, और किस प्रारूप में है, इसका विवरण प्लेटफॉर्म के प्लेटफॉर्म से भिन्न होता है। फैक्ट्री प्रोविजनिंग टूल स्वयं अंतिम भंडारण प्रारूप से स्वतंत्र है, और डेटा को सही तरीके से लिखने के लिए डिवाइस के फर्मवेयर में कोड पर निर्भर करता है। उपकरण का उपयोगकर्ता इंटरफ़ेस भी काफी हद तक हार्डवेयर के प्रकार से स्वतंत्र है, जिसका अर्थ है कि इसी तरह की निर्माण प्रक्रिया को उत्पाद लाइनों के पार नियोजित किया जा सकता है जो विभिन्न हार्डवेयर प्लेटफार्मों पर आधारित हैं।

फ़ैक्टरी प्रोविज़निंग टूल एक होस्ट मशीन पर डिज़ाइन किया गया कार्य है जिसे किसी डिबग या नियंत्रण इंटरफ़ेस के माध्यम से लक्ष्य डिवाइस से जोड़ा जाता है - उदाहरण के लिए, JTAG या SWD पोर्ट। उपकरण विशेष रूप से एन्कोडेड रूप में डिवाइस की रैम में प्रोविजनिंग जानकारी को इंजेक्ट करके काम करता है। डिवाइस को फिर से शुरू करने का निर्देश दिया जाता है, जिस बिंदु पर डिवाइस के फर्मवेयर में निर्मित कोड एन्कोडेड डेटा का पता लगाता है, इसकी अखंडता को मान्य करता है, और प्लेटफ़ॉर्म के लिए उपयुक्त प्रारूप में स्थिर भंडारण में निहित मूल्यों को लिखता है।

ऑन-डिवाइस कोड जो इंजेक्ट प्रोविजनिंग डेटा का पता लगाता है और प्रोसेस करता है, वह OpenWeave Device Layer में अंतर्निहित है, और किसी भी समर्थित प्लेटफ़ॉर्म पर सक्षम किया जा सकता है। एक बार सक्षम होने के बाद, डिवाइस हर बार डिवाइस के आरंभ होने की प्रक्रिया में एक बिंदु पर, स्वचालित रूप से कोड चलाता है। कोड रैम के प्लेटफ़ॉर्म-विशिष्ट क्षेत्र को स्कैन करके संचालित होता है। मेमोरी के मामूली माउंट्स (उदाहरण के लिए, <1M) के साथ प्लेटफॉर्म पर, स्कैन में सभी उपलब्ध रैम शामिल हैं।

जब रैम में रखा जाता है, तो प्रावधान डेटा आसानी से पहचाने जाने योग्य उपसर्ग के साथ एन्कोडेड होता है, जो स्कैन प्रक्रिया के दौरान इसे जल्दी से ढूंढने की अनुमति देता है। एक क्रिप्टोग्राफ़िक हैश पर आधारित एक अखंडता जांच मूल्य का उपयोग प्रसंस्करण से पहले डेटा की वैधता की पुष्टि करने के लिए किया जाता है।

डिफ़ॉल्ट रूप से, प्रोविजनिंग टूल रैम लोकेशन का चयन करता है, जिस पर लक्ष्य डिवाइस प्लेटफॉर्म के आधार पर प्रोविजनिंग डेटा को इंजेक्ट करना है। इस विकल्प को उपकरण के तर्क के माध्यम से ओवरराइड किया जा सकता है। सामान्य तौर पर, यह आवश्यक नहीं है कि डिवाइस फर्मवेयर विशेष रूप से प्रोविजनिंग डेटा प्राप्त करने के लिए एक रैम स्थान आरक्षित करता है। आमतौर पर, प्रोविजनिंग डेटा एक रैम स्थान पर लिखा जाता है जो अन्य उद्देश्यों के लिए आवंटित किया जाता है, लेकिन आमतौर पर डिवाइस बूट प्रक्रिया में अप्रयुक्त होता है। सामान्य विकल्प प्रारंभिक सिस्टम स्टैक के शीर्ष, या एक ढेर क्षेत्र के दूर के छोर हैं।

फ़ैक्टरी प्रोविज़निंग टूल लक्ष्य डिवाइस पर इंटरफ़ेस करने के लिए बाहरी विकास उपकरण के एक सेट पर निर्भर करता है। नियोजित विशेष उपकरण लक्ष्य डिवाइस के प्रकार पर निर्भर करते हैं। वर्तमान में दो डिवाइस इंटरफेस समर्थित हैं:

  • एक डिवाइस के JTAG या SWD पोर्ट से जुड़ी एक SEGGER J- लिंक डिबग जांच
  • एक एस्प्रेसिफ ईएसपी 32 से जुड़ा एक यूएसबी सीरियल पोर्ट

J- लिंक इंटरफ़ेस SEGGER J- लिंक कमांडर टूल (JLinkExe) पर निर्भर करता है, जिसे होस्ट मशीन पर अलग से स्थापित किया जाना चाहिए।

ESP32 इंटरफ़ेस एस्प्रेसिफ esptool.py कमांड पर निर्भर करता है, जो एस्प्रेसिफ के ESP-IDF SDK के हिस्से के रूप में प्रदान किया गया है।

जानकारी के प्रकार जिन्हें प्रावधान किया जा सकता है

OpenWeave Factory Provisioning टूल निम्नलिखित प्रकार की जानकारी प्रदान करने में सक्षम है:

  • डिवाइस सीरियल नंबर
  • निर्माता-निर्दिष्ट बुनाई डिवाइस आईडी
  • निर्माता-निर्दिष्ट बुनाई प्रमाणपत्र और निजी कुंजी
  • बुन पेयरिंग कोड
  • उत्पाद संशोधन संख्या
  • निर्माण की तारीख

हालांकि आम तौर पर एक डिवाइस को ठीक से संचालित करने के लिए उपरोक्त सभी जानकारी की आवश्यकता होगी, लेकिन एक ही समय में सभी जानकारी को व्यवस्थित करने की आवश्यकता नहीं है। इस प्रकार, विनिर्माण प्रक्रिया में विभिन्न बिंदुओं पर विभिन्न प्रकार की जानकारी का प्रावधान किया जा सकता है। इसके अतिरिक्त, बाद के प्रोविजनिंग चरण में पहले से तय किए गए मूल्यों को नए मूल्यों के साथ बदलना संभव है।

जानकारी उपलब्ध कराने के स्रोत

डिवाइस प्रोविजनिंग जानकारी फैक्ट्री प्रोविजनिंग टूल को निम्नलिखित तरीकों से प्रदान की जा सकती है:

  • एक कमांड लाइन तर्क
  • एक प्रावधान CSV फ़ाइल का उपयोग करना
  • एक नेस्ट प्रावधान सर्वर से मूल्यों लाने के द्वारा

कमांड लाइन

सरलतम रूप में, उपकरण प्रावधान जानकारी सीधे कमांड लाइन पर OpenWeave Factory Provisioning Tool में निर्दिष्ट की गई है। उदाहरण के लिए:

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

बाइनरी डेटा वैल्यू, जैसे वीव सर्टिफिकेट और प्राइवेट की, को बेस -64 स्ट्रिंग्स के रूप में या कच्चे (बाइनरी) फॉर्म में वांछित डेटा वाली फाइलों के नाम के रूप में निर्दिष्ट किया जा सकता है।

उपलब्ध कमांड लाइन तर्कों की पूरी सूची के लिए नीचे देखें।

CSV फ़ाइल का प्रावधान करना

उपकरणों के थोक प्रावधान को समायोजित करने के लिए, फैक्ट्री प्रोविजनिंग उपकरण सीएसवी-स्वरूपित प्रावधान डेटा फ़ाइल से प्रोविजनिंग डेटा भी पढ़ सकता है। इस फ़ाइल के स्तंभों में विशिष्ट प्रोविज़निंग डेटा प्रकारों के अनुरूप होने की उम्मीद की जाती है - Serial_Num , 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 स्ट्रिंग निर्माता-निर्दिष्ट बुनाई उपकरण प्रमाण पत्र।
Private_Key बेस -64 स्ट्रिंग निर्माता-निर्दिष्ट बुनाई निजी कुंजी।
Pairing_Code तार बुन पेयरिंग कोड।
Product_Rev पूर्णांक उत्पाद संशोधन संख्या।
Mfg_Date YYYY / MM / DD डिवाइस निर्माण की तारीख।

किसी भी क्रम में CSV फ़ाइल में कॉलम दिखाई दे सकते हैं। Device_Id के अपवाद के साथ सभी कॉलम वैकल्पिक हैं। CSV फ़ाइल में मौजूद नहीं कोई भी मान बस डिवाइस पर प्रावधान नहीं किया।

उपयोगकर्ता CSV फ़ाइल के अतिरिक्त कमांड लाइन पर व्यक्तिगत प्रावधान मान निर्दिष्ट कर सकता है, जिस स्थिति में कमांड लाइन मान फ़ाइल में उन लोगों पर मिसाल रखता है।

फैक्ट्री प्रोविजनिंग टूल द्वारा सीएसवी फ़ाइल प्रारूप का समर्थन weave उपकरण के gen-provisioning-data कमांड के आउटपुट के साथ संगत है।

घोंसला प्रावधान सर्वर

फैक्ट्री प्रोविजनिंग टूल एचटीटीपीएस आधारित प्रोटोकॉल का उपयोग करते हुए नेस्ट प्रोविजनिंग सर्वर से चुनिंदा प्रोविजनिंग जानकारी लाने का समर्थन करता है। प्रोविज़निंग सर्वर प्रोटोकॉल का उपयोग निर्माता द्वारा निर्दिष्ट वीव डिवाइस सर्टिफ़िकेट, संबंधित निजी कुंजी और प्रोविज़न सर्वर से वीविंग पेयरिंग कोड लाने के लिए किया जा सकता है।

प्रोविज़निंग टूल का नेटवर्क स्थान प्रोविज़निंग टूल कमांड लाइन पर बेस URL की आपूर्ति करके निर्दिष्ट किया गया है। कमांड लाइन पर वीव डिवाइस आईडी निर्दिष्ट करके वांछित प्रावधान जानकारी का चयन किया जाता है। उदाहरण के लिए:

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

उपयोगकर्ता प्रोविज़निंग सर्वर URL के अलावा कमांड लाइन पर व्यक्तिगत प्रावधान मान निर्दिष्ट कर सकता है। इस स्थिति में, कमांड लाइन पर दिए गए मान सर्वर द्वारा लौटाए गए मानों पर मिसाल देते हैं।

फैक्टरी प्रावधान समर्थन को सक्षम / अक्षम करना

डिवाइस फ़र्मवेयर में OpenWeave फ़ैक्टरी प्रावधान के लिए समर्थन WEAVE_DEVICE_CONFIG_ENABLE_FACTORY_PROVISIONING संकलन-समय कॉन्फ़िगरेशन विकल्प द्वारा नियंत्रित किया जाता है। यह विकल्प डिफ़ॉल्ट रूप से सक्षम है। एप्लिकेशन के WeaveProjectConfig.h फ़ाइल में विकल्प को ओवरराइड करके सुविधा को अक्षम किया जा सकता है। उदाहरण के लिए:

#define WEAVE_DEVICE_CONFIG_ENABLE_FACTORY_PROVISIONING 0

सामान्य तौर पर उत्पादन डिवाइस फर्मवेयर में फैक्ट्री प्रोविजनिंग को सक्षम करना सुरक्षित है बशर्ते कि डिवाइस डीबग इंटरफ़ेस उचित रूप से उत्पादन उपकरणों पर अक्षम हो। यह या तो हार्डवेयर साधनों के माध्यम से प्राप्त किया जा सकता है (उदाहरण के लिए, SoC में फ़्यूज़ उड़ाने से), या सॉफ़्टवेयर में (उदाहरण के लिए, एक सुरक्षित बूट लोडर के माध्यम से जो बूट प्रक्रिया के भाग के रूप में डिबग एक्सेस को ब्लॉक करता है)।

फैक्ट्री प्रोविजनिंग टूल चलाना

OpenWeave Factory Provisioning Tool निम्नलिखित कमांड लाइन विकल्पों का समर्थन करता है:

विकल्प विवरण
--टार्ग <string> लक्ष्य डिवाइस प्रकार। विकल्प हैं: nrf52840 , esp32
--लोड-एड्र <हेक्स-अंक> डिवाइस मेमोरी में पता जिस पर प्रावधान डेटा लिखा जाएगा।
--वरबोस, -v आउटपुट वर्बोसिटी स्तर समायोजित करें। वर्बोसिटी बढ़ाने के लिए कई तर्कों का उपयोग करें।
--serial-num <string> डिवाइस सीरियल नंबर सेट करें।
-देवीस-ईडी <हेक्स- डिजिट्स > निर्माता द्वारा निर्दिष्ट डिवाइस आईडी सेट करें।
--देव-प्रमाण <आधार -64> | <फ़ाइल नाम> निर्माता द्वारा निर्धारित बुनाई उपकरण प्रमाण पत्र सेट करें।
--देव-कुंजी <आधार -64> | <फ़ाइल नाम> निर्माता-निर्दिष्ट बुनाई डिवाइस निजी कुंजी सेट करें।
-पेयरिंग-कोड <string> डिवाइस पेयरिंग कोड सेट करें।
--product-Rev <पूर्णांक> डिवाइस के लिए उत्पाद संशोधन सेट करें।
--mfg-date <YYYY / MM / DD> | आज | अभी डिवाइस की निर्माण तिथि निर्धारित करें।
--jlink-cmd <path-name> JLink कमांड के लिए पथ। 'JLinkExe' के लिए चूक।
--जलिंक-अगर SWD | JTAG जे-लिंक इंटरफ़ेस प्रकार। SWD के लिए चूक।
--जलिंक-गति <पूर्णांक> | अनुकूली | ऑटो J- लिंक इंटरफ़ेस की गति।
--jlink-sn <string> जे-लिंक जांच क्रम संख्या।
--esptool-cmd <path-name> एस्प्टूल कमांड का पथ। 'Esptool.py' के लिए डिफ़ॉल्ट।
--पोर्ट <पथ-नाम> ESP32 के लिए COM पोर्ट डिवाइस का नाम। चूक / tty / USB0 के लिए।
--speed <पूर्णांक> COM पोर्ट के लिए बॉड दर। 115200 की कमी।
--prov-csv-file <file-name> एक प्रावधान CSV फ़ाइल से डेटा प्रावधान डेटा पढ़ें।
--प्रो-सर्वर <url> प्रोविजनिंग सर्वर से डिवाइस प्रोविजनिंग डेटा पढ़ें।
--disable-server-मान्यता HTTPS का उपयोग करते समय, प्रावधान सर्वर द्वारा प्रस्तुत प्रमाण पत्र के सत्यापन को अक्षम करें।

उदाहरण

निम्न आदेश डिवाइस आईडी, सीरियल नंबर, उत्पाद संशोधन और विशिष्ट मूल्यों के लिए कोडिंग कोड सेट करता है। विनिर्माण दिनांक वर्तमान दिनांक पर सेट है। और डिवाइस प्रमाणपत्र और निजी कुंजी को 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