Google is committed to advancing racial equity for Black communities. See how.
דף זה תורגם על ידי Cloud Translation API.
Switch to English

כלי ההפקה של OpenWeave במפעל

jinja-placeholder-0 .md "> צפה במקור ב- GitHub

הכלי להקצאת מפעל OpenWeave מספק אמצעי נוח להקצאת מידע על קביעת תצורה מתמדת לכל מכשיר על מכשירים המאפשרים Weave. הכלי להקצאת מפעל מיועד לשמש כחלק מתהליך קו ייצור החותמת מכשירים בודדים עם זהות ומידע אישורי ייחודי לפני המשלוח ללקוחות. זה יכול לשמש גם על ידי מפתחים להתאמה אישית של חומרה לפני ייצור המשמשת במהלך תהליך הפיתוח.

תורת הפעולה

מטרת כלי ה- OpenWeave Factory Provisioning Tool היא להזרים מידע על תצורה נבחרים לחנות התצורה המתמשכת של המכשיר, שם ניתן לאסוף ולהשתמש בזמן הקצה על ידי הקושחה של המכשיר. תצורת התקנים מתמשכת מאוחסנת בדרך כלל בפלאש הפנימי של המכשיר, אם כי הפרטים על אופן אחסון הנתונים בדיוק ובאיזו פורמט משתנים מפלטפורמה לפלטפורמה. הכלי להקצאת מפעל עצמו אינו תלוי בפורמט האחסון הסופי, והוא מסתמך על קוד בקושחת המכשיר כדי לכתוב את הנתונים בצורה הנכונה. ממשק המשתמש של הכלי גם אינו תלוי ברובו בסוג החומרה המוגדרת, כלומר ניתן להשתמש בתהליכי ייצור דומים על פני קווי מוצרים המבוססים על פלטפורמות חומרה שונות.

הכלי להקצאת מפעל מיועד לעבודה על מחשב מארח המחובר להתקן יעד באמצעות צורה כלשהי של ניפוי באגים או ממשק שליטה - למשל יציאת JTAG או SWD. הכלי פועל על ידי הזרקת מידע הקצאה ל RAM של המכשיר בצורה מקודדת במיוחד. לאחר מכן, מתבקש המכשיר להפעיל מחדש, ובשלב זה הקוד המובנה בקושחת המכשיר מאתר את הנתונים המקודדים, מאמת את שלמותו וכותב את הערכים הכלולים לאחסון מתמיד בפורמט המתאים לפלטפורמה.

קוד ההתקן המזהה ומעבד את נתוני ההקצאה שהוזרקו מובנה בשכבת ההתקנים של OpenWeave, וניתן להפעיל אותו בכל פלטפורמה נתמכת. לאחר הפעלתו, הקוד פועל אוטומטית בכל פעם שהמכשיר מתניע, בשלב מוקדם של תהליך האתחול של המכשיר. הקוד פועל על ידי סריקת אזור RAM ספציפי לפלטפורמה. בפלטפורמות עם זיכרון צנוע (למשל, <1M), הסריקה כוללת את כל ה- RAM הזמין.

כאשר הם ממוקמים ב- RAM, נתוני ההקצאה מקודדים עם קידומת קלה לזיהוי, המאפשרת למצוא אותם במהירות במהלך תהליך הסריקה. ערך בדיקת שלמות המבוסס על חשיש קריפטוגרפי משמש לאישור תוקף הנתונים לפני העיבוד.

כברירת מחדל, כלי ההקצאה בוחר את מיקום ה- RAM בו להזרים את נתוני ההקצאה על בסיס פלטפורמת התקן היעד. ניתן לבטל בחירה זו באמצעות ויכוח לכלי. באופן כללי, אין חובה שקושחת המכשיר תשמור מיקום RAM במיוחד לצורך קבלת נתוני הקצאה. בדרך כלל יותר, נתוני ההקצאה נכתבים למיקום RAM המוקצה למטרות אחרות, אך בדרך כלל לא נעשה בהם שימוש מוקדם בתהליך אתחול המכשיר. אפשרויות נפוצות הן החלק העליון של ערימת המערכת הראשונית, או הקצה הרחוק של זירת ערימה.

הכלי להקצאת מפעל מסתמך על קבוצה של כלי פיתוח חיצוניים לממשק להתקן היעד. הכלים הספציפיים שבהם נעשה שימוש תלויים בסוג מכשיר היעד. כרגע נתמכים בשני ממשקי התקנים:

  • בדיקת ניפוי SEGGER J-Link המחוברת ליציאת JTAG או SWD של המכשיר
  • יציאה טורית USB המחוברת ל- ESP32 Espressif

ממשק J-Link מסתמך על הכלי SEGGER J-Link Commander (JLinkExe), אותו יש להתקין בנפרד במחשב המארח.

ממשק ESP32 מסתמך על הפקודה Espressif esptool.py, המסופקת כחלק מה- ESP-IDF SDK של Espressif.

סוגי מידע שניתן לספק

הכלי להקצאת מפעל OpenWeave מסוגל לספק את סוגי המידע הבאים:

  • מספר סידורי של המכשיר
  • מזהה מכשיר Weave המוקצה ליצרן
  • תעודת Weave שהוקצתה על ידי היצרן ומפתח פרטי
  • קוד התאמה לארוג
  • מספר עדכון מוצר
  • תאריך יצור

למרות שבדרך כלל מכשיר יזדקק לכל המידע שלמעלה כדי לפעול כראוי, הוא אינו נדרש לספק את כל המידע בו זמנית. לפיכך, מתן סוגים שונים של מידע יכול להתרחש בנקודות ברורות בתהליך הייצור. בנוסף, ניתן להחליף ערכים שהוקצו בעבר בערכים חדשים בשלב ההקצאה שלאחר מכן.

מקורות המידע המספקים

ניתן לספק מידע על מתן מכשירים לכלי הקצאת המפעל בדרכים הבאות:

  • טיעוני שורת פקודה
  • באמצעות קובץ CSV להקצאה
  • על ידי השגת ערכים משרת הקצאת Nest

שורת פיקוד

בצורה הפשוטה ביותר, מידע על הקצאת מכשירים מוגדר ישירות בשורת הפקודה לכלי הייצור של OpenWeave Factory. לדוגמה:

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

ניתן לציין ערכי נתונים בינאריים, כמו אישור Weave והמפתח הפרטי, כמחרוזות base-64, או כשמות קבצים המכילים את הנתונים הרצויים בצורה גולמית (בינארית).

ראה להלן רשימה מלאה של טיעוני שורת פקודה זמינים.

מתן קובץ CSV

כדי להתאים להקצאה בכמות גדולה של מכשירים, הכלי להקצאת מפעל יכול לקרוא גם נתוני הקצאה מקובץ נתוני הקצאה בפורמט CSV. העמודות בקובץ זה צפויות תואמות את סוגי נתוני ההקצאה הספציפיים - כלומר Serial_Num , Certificate , Private_Key וכו '. שורות בקובץ נותנות ערכים פרטניים למכשירים ספציפיים, באינדקס לפי מזהה מכשיר Weave ( 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 מחרוזת base-64 תעודת מכשיר Weave המוקצה על ידי היצרן.
Private_Key מחרוזת base-64 מפתח פרטי לארוג שהוקצה על ידי היצרן.
Pairing_Code חוּט קוד התאמה לארוג.
Product_Rev מספר שלם מספר עדכון מוצר.
Mfg_Date YYYY / MM / DD תאריך ייצור המכשירים.

עמודות עשויות להופיע בקובץ CSV בכל סדר. כל העמודות הן אופציונליות, למעט Device_Id . כל הערכים שאינם קיימים בקובץ ה- CSV פשוט אינם מוגדרים במכשיר.

המשתמש רשאי לציין ערכי הקצאה פרטניים בשורת הפקודה בנוסף לקובץ ה- CSV, ובמקרה זה ערך שורת הפקודה יקבל תקדים על פני אלה בקובץ.

התמיכה בפורמט קובץ CSV על ידי הכלי gen-provisioning-data מפעל תואמת את הפלט של הפקודה gen-provisioning-data של כלי weave .

שרת הקצאת קנים

הכלי להקצאת מפעל תומך בהשגת מידע על מתן הצבות נבחר משרת הקצאת Nest באמצעות פרוטוקול מבוסס HTTPS. ניתן להשתמש בפרוטוקול שרת ההקצאה כדי להביא את אישור התקני ה- Weave המוקצה ליצרן, את המפתח הפרטי המתאים ואת קוד ההתאמה של Weave משרת ההקצאה.

מיקום הרשת של שרת ההקצאה מוגדר על ידי אספקת כתובת אתר בסיסית בשורת הפקודה של כלי ההקצאה. מידע ההקצאה הרצוי נבחר על ידי ציין את מזהה התקן ה- Weave בשורת הפקודה. לדוגמה:

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

המשתמש רשאי לציין ערכי הקצאה פרטיים בשורת הפקודה בנוסף לכתובת האתר של שרת ההקצאה. במקרה זה, הערכים שניתנו בשורת הפקודה מקבלים תקדים על פני ערכים שהוחזרו על ידי השרת.

הפעלה / השבתה של תמיכה בהקצאת מפעל

התמיכה בהקצאת מפעל OpenWeave בקושחת המכשיר נשלטת על ידי אפשרות התצורה של קומפילציה WEAVE_DEVICE_CONFIG_ENABLE_FACTORY_PROVISIONING . אפשרות זו מופעלת כברירת מחדל. ניתן WeaveProjectConfig.h את התכונה על ידי דריסת האפשרות בקובץ WeaveProjectConfig.h של היישום. לדוגמה:

#define WEAVE_DEVICE_CONFIG_ENABLE_FACTORY_PROVISIONING 0

באופן כללי ניתן לאפשר הקצאת מפעל בקושחת התקני ייצור בתנאי שממשק ניפוי ההתקנים מושבת כראוי במכשירי הייצור. ניתן להשיג זאת באמצעות אמצעי חומרה (למשל על ידי פיצוץ נתיכים ב- SoC), או בתוכנה (לדוגמה, באמצעות מטעין אתחול מאובטח החוסם את הגישה של באגים כחלק מתהליך האתחול).

הפעלת הכלי להקצרת מפעל

הכלי להקצאת מפעל OpenWeave תומך באפשרויות שורת הפקודה הבאות:

אוֹפְּצִיָה תיאור
- יעד <מחרוזת> סוג מכשיר יעד. האפשרויות הן: nrf52840 , esp32
- load-addr <hex-digits> כתובת בזיכרון המכשיר בה ייכתב נתוני ההקצאה.
- verbose, -v התאם את רמת המילוליות של הפלט. השתמש במספר ויכוחים כדי להגדיל את המילה.
- serial-num <string> הגדר את המספר הסידורי של המכשיר.
- מכשיר-מזה <hex-digits> הגדר את מזהה המכשיר שהוקצה ליצרן.
- Device-cert <base-64> | <שם קובץ> קבע את אישור מכשיר ה- Weave שהוקצה ליצרן.
- מפתח מקש <בסיס-64> | <שם קובץ> הגדר את המפתח הפרטי המוקצה ליצרן Weave.
- קוד זיווג <מחרוזת> הגדר את קוד התאמת המכשיר.
- מוצר-rev <מספר שלם> הגדר את עדכון המוצר עבור המכשיר.
--mfg-date <YYYY / MM / DD> | היום | עַכשָׁיו קבע את תאריך הייצור של המכשיר.
--jlink-cmd <נתיב שם> נתיב לפקודה JLink. ברירת מחדל ל- 'JLinkExe'.
--jlink-if SWD | JTAG סוג ממשק J-Link. ברירות מחדל ל- SWD.
- מהירות <מספר שלם> | אדפטיבית | אוטומטי מהירות ממשק J-Link.
--jlink-sn <מחרוזת> המספר הסידורי של בדיקת J-Link.
- סנט-סמול <נתיב שם> נתיב לפקודה esptool. ברירת מחדל ל- 'esptool.py'.
- נמל <נתיב שם> שם מכשיר יציאת COM עבור ESP32. ברירת מחדל ל- / tty / USB0.
- מהירות <מספר שלם> שיעור Baud עבור יציאת COM. ברירת המחדל היא 115200.
- קובץ cv-קובץ <קובץ שם> קרא נתוני הקצאת מכשירים מקובץ CSV להקצאה.
- שרת Prov <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