1. מבוא
מה זה Thread, OpenThread, OTNS ו-Silk?
Thread הוא פרוטוקול של רשת אלחוטית מבוססת-IP עם צריכת אנרגיה נמוכה. פרוטוקול זה מאפשר תקשורת מאובטחת בין מכשירים לבין מכשירים לענן. רשתות שרשור יכולות להסתגל לשינויים בטופולוגיה כדי למנוע נקודת כשל אחת.
OpenThread ש-Google פרסמה הוא הטמעת קוד פתוח של Thread. על אף גודל הקוד הקטן וטביעת הרגל של הזיכרון, מערכת OpenThread תומכת בכל התכונות שהוגדרו במפרט השרשורים.
אפשר להשתמש בסימולטור של רשת OpenThread (OTNS) כדי לדמות רשתות שרשור על ידי הדמיה של צומתי OpenThread בפלטפורמות של posix. פרוטוקול OTNS מספק ממשק אינטרנט קל לשימוש (OTNS-Web) להמחשה והפעלה של רשתות שרשור מדומות.
Silk היא פלטפורמת בדיקה אוטומטית לחלוטין לאימות הביצועים של OpenThread, של התכונות ושל ביצועי המערכת במכשירים אמיתיים.
מה תלמדו
- מסגרת אימות הפונקציונליות של OpenThread: Silk
- יצירת OpenOpen למכשירים אמיתיים כשתכונת OTNS מופעלת
- שימוש בממשק OTNS-Web כדי לעקוב אחר הסטטוס של רשת ה-thread שנוצרה על ידי הרצת מקרי בדיקה של משי
מעבדה זו מתמקדת בשימוש ב-SILS ב-OTNS. תכונות אחרות של משי ו-OTNS לא נכללות.
מה הדרישות כדי להצטרף לתוכנית?
חומרה:
- 6 לוחות נורדיים למחצה nRF52840
- 6 כבלי USB למיקרו USB כדי לחבר את הלוחות
- מפצל USB
תוכנה:
- ב-Linux x86_64.
- Git.
- גרסה 1.11 ואילך.
- דפדפן אינטרנט. OTNS-Web משתמש בדפדפן אינטרנט להצגת סימולציות.
דרישות מוקדמות:
2. דרישות מוקדמות
השלמת ה-Codelabs הבסיסיים הקודמים
- Thread Primer. צריך להכיר את המושגים הבסיסיים של Thread כדי להבין מה מלמד ב-Codelab הזה.
- יצירת רשת של Thread עם לוחות nRF52840 ו-OpenThread. ההנחה ב-Codelab הזה היא שבניתם בהצלחה רשת Thread.
- סימולציה של רשתות Thread באמצעות OTNS. ההנחה ב-Codelab הזה היא שהפעלת בהצלחה את הכלי OTNS.
בדיקת הדרישות המוקדמות לגבי החבילה
בואו נוודא שכל הדרישות המוקדמות מתקיימות.
- מריצים את הפקודה
which otns
כדי לבדוק אם אפשר להפעיל את קובץ ההפעלהotns
ב-$PATH
. - מריצים את הפקודה
which wpantund
כדי לוודא ש-wpantund
זמין. - חשוב לוודא שכל חבילות הכלים של ARM GNU, J-Link ו-
nrfjprog
זמינות.
הערה: הנחיות לגבי הגדרה מפורטות במסמכי התיעוד המקושרים. דרישה מוקדמת מס' 1 היא מ-סימולציה של שרשורי רשתות באמצעות OTNS ואחרים מתבצעת מבניית רשת Thread עם לוחות nRF52840 ו-OpenThread.
3. הגדרת משי
כדי לשכפל את המשי ולהגדיר את הסביבה, מריצים את הפקודות הבאות בספריית המקור:
$ git clone https://github.com/openthread/silk.git $ cd silk $ ./bootstrap.sh $ sudo make install-cluster
הגדרה של קובץ התצורה של החומרה
כדי לאפשר למשי לאסוף את משאבי החומרה הזמינים לבדיקה למכונה שלך, יש להגדיר קובץ hwconfig.ini
בפורמט הבא:
[DEFAULT] ClusterID: 0 LayoutCenter: 300, 300 LayoutRadius: 100 [Dev-8A7D] HwModel: Nrf52840 HwRev: 1.0 InterfaceSerialNumber: E1A5012E8A7D USBInterfaceNumber: 1 DutSerial: 683536778
כלי בשם usbinfo
מותקן כחלק מ-Slik, המאפשר לאתר את המספר הסידורי של הממשק ואת מספר ממשק ה-USB. DutSerial הוא מספר ה-SN מודפס על הצ'יפ או מוצג על ידי usbinfo
למוצרי J-Link.
השדות LayoutCenter
ו-LayoutRadius
בקטע [DEFAULT]
מגדירים את צורת הפריסה כשהמכשירים מוצגים בממשק המשתמש באינטרנט. מומלץ להגדיר עבורם ערכים בהתחלה.
לאחר מכן הוא מגדיר קטע לכל מכשיר בדיקה ומספק את פרטי החומרה הרלוונטיים.
4. הידור OpenThread עם הפעלת OTNS
תמונה של בניין מהבהבת
כברירת מחדל, מכשירי OpenThread לא פולטים הודעות שקשורות ל-OTNS. כדי לאפשר ללוחות הפיתוח לפלט מסרים של סטטוס חיוניים לממשקי יומן שחיוניים להצגה חזותית של OTNS, מריצים את הפקודה הבאה בספריית המקור של OpenThread כדי לבנות תמונה של FTD, ולהמיר אותה לפורמט הקסדצימלי.
$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive $ cd ot-nrf528xx $ ./script/bootstrap $ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON $ cd ./build/bin $ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex
כדי להבהב את לוחות העריכה, בצעו את ההוראות בשלב 4 של בניית קוד רשת Thread כדי להשתמש ב-nrfjprog
. לאחר מכן, יש לחבר את כל הלוחות באמצעות יציאת ה-nRF USB למכונה המארחת. ניתן לנתק את אותה קבוצה של כבלים מ-USB למיקרו USB מיציאות J-Link ולחיבורי nRF USB של לוחות nRF52840. כך שניתן לבצע רק את 6 הכבלים האלה כדי לבצע בדיקה. כדאי להשתמש ב-12 כבלים ולחבר לשתי היציאות כדי להימנע מהטרחה.
5. הפעלת שרת OTNS במצב אמיתי
הרצת OTNS עם פרמטרים שמוגדרים כברירת מחדל מאפשרת למשתמש לדמות רשת Thread. כדי להשתמש בו ככלי להצגה ברשת פיזית בפועל, יש להפעיל אותו באמצעות:
otns -raw -real -ot-cli otns-silk-proxy
הארגומנטים האלה אומרים ל-OTNS לצפות להודעות gRPC ו-UDP שמתארות איך צריך להמחיש את רשת השרשורים במקום להריץ מספר תהליכים של ot-cli
כדי לדמות את הרשת. הדפדפן צריך לפתוח באופן אוטומטי את דף התצוגה החזותית עם לוח הציור הריק.
6. הרצת מקרי בדיקה של משי בתמיכה ב-OTNS
Silk היא פלטפורמת בדיקה אוטומטית לחלוטין לאימות הביצועים של פיצ'רים של OpenThread, של התכונות ושל המערכת באמצעות מכשירים אמיתיים. ההוראות בפרויקט README מתייחסות לאופן השימוש בו.
קובץ silk_run_test.py
שנמצא ב-silk/unit_tests
מספק לך יתרון. Sky מספק תמיכה ב-OTNS בעת הפעלת בקשת בדיקה. מכיוון ששירות המצב האמיתי של OTNS כבר פועל באופן מקומי, אנחנו פשוט צריכים לשנות את הקובץ silk_run_test.py
עם המיקומים הרצויים עבור קובץ יומן של פלט, סקריפטים של בדיקת קלט וקובץ hwconfig.ini
. הארגומנט -s localhost
מורה ל- המשי לשלוח הודעות OTNS ל-localhost
.
לדוגמה, אפשר להריץ את הבדיקה 'ot_test_form_network.py
' באמצעות השינויים הבאים בקובץ silk_run_test.py
. /opt/openthread_test/
הוא נתיב ברירת המחדל שבו המשי משתמש בפלט יומן ובקובץ תצורה, אבל אפשר להשתמש בכל נתיב.
silk_run_test.py
import datetime
import os
from silk.tests import silk_run
RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'
os.chdir('~/src/silk/silk/tests/')
timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')
run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'
argv = [
'tests/silk_run.py',
'-v2',
'-c', CONFIG_PATH + 'hwconfig.ini',
'-d', run_log_path,
'-s', 'localhost',
'ot_test_form_network.py'
]
silk_run.SilkRunner(argv=argv)
התצוגה החזותית של הטופולוגיה של הרשת שנוצרה תופיע בממשק המשתמש באינטרנט של OTNS.
בפינה הימנית העליונה מוצגים נתונים סטטיסטיים של התצוגה החזותית, גרסת ה-OT וכותרת הבדיקה. בפינה השמאלית התחתונה מצוינים פקדים של חלון היומן, שמוצג בצד שמאל. בהתחלה נוספים צמתים, אבל לא נוצרת רשת. ככל שהבדיקה מתקדמת, מתבצעת יצירה של המצבים והתפקידים של כל צומת, והקישורים נוצרים.
7. מזל טוב
מזל טוב, הפעלת בדיקת משי על מכשירי Thread פיזיים ומראה אותה באמצעות OTNS!
הפעלת בדיקת משי באמצעות לוחות פיתוח מהבהבים עם קושחה עם תמיכה ב-OTNS. הלוחות מדווחים על הסטטוס שלהם לשרת משי, שעוקב אחרי כולם וקובע אותם ושולח אותם לשירות OTNS יחד עם מידע נוסף לבדיקה. פרוטוקול OTNS שפועל במצב אמיתי ממחיש את רשת השרשורים בממשק האינטרנט.
המאמרים הבאים
כדאי לנסות להריץ מקרי בדיקה אחרים של OpenThread שכלולים בחבילת המשי.
קריאה נוספת
באתר openthread.io ו-Silk יש מגוון משאבים של OpenThread.