הטמעה של ממשקי API להרצה של שכבות פלטפורמה

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

הצגת המקור ב-GitHub

OpenThread הוא מערכת הפעלה Agnosie בפלטפורמה ובפלטפורמה, עם שכבה מופשטת של פלטפורמה (PAL). PAL הזה מגדיר:

אדריכלות הניוד
  • ממשק שעון מעורר לטיימר פעיל עם התראה
  • ממשקי אוטובוס (UART, SPI) להעברת הודעות CLI ו-Spinel
  • ממשק רדיו לתקשורת IEEE 802.15.4-2006
  • תרחישי אתחול ספציפיים ל-GCC
  • אנטרופיה ליצירת מספר אקראי אמיתי
  • שירות הגדרות של אחסון הגדרות בתנודתיות
  • ממשק רישום ביומן להעברת הודעות ביומן של OpenThread
  • תרחישי אתחול ספציפיים למערכת

יש להטמיע את כל ממשקי ה-API על סמך חבילת הבסיס (STAL) Stack Abstration של החומרה.

יש למקם קובצי API בספריות הבאות:

סוג ספריה
הטמעת PAL ספציפית לפלטפורמה /openthread/examples/platforms/platform-name
קובצי כותרת — ממשק אחסון לא תנודתי /openthread/examples/platforms/utils
כל שאר קובצי הכותרות /openthread/include/openthread/platform
BAL BSP /openthread/third_party/platform-name

השכמה

הצהרת API:

/openthread/include/openthread/platform/alarm-milli.h

ממשק ה-API של שעון מעורר מספק שירותי תזמון והתראות בסיסיים להטמעה של טיימר הזמן ברמה העליונה.

יש שני סוגים של שירותי התראות, אלפיות שנייה ומיקרו-שניות. אלפית שנייה נדרשת בפלטפורמה חדשה של חומרה. המיקרו-שנייה היא אופציונלית.

UART

הצהרת API:

/openthread/examples/platforms/utils/uart.h

ה-UART API מטמיע תקשורת טורית בסיסית דרך ממשק UART.

למרות שהתוספים של OpenThread CLI ו-NCP תלויים בממשק של UART, שהייתה להם אינטראקציה עם הצד המארח, התמיכה ב-UART API היא אופציונלית. עם זאת, גם אם אין לך כוונה להשתמש בתוספים האלה בדוגמה החדשה של פלטפורמת החומרה, מומלץ מאוד להוסיף תמיכה מכמה סיבות:

  • ה-CLI שימושי לאימות שהיציאה פועלת כראוי
  • כלי האוטומציה של רתמות משתמשים בממשק של UART כדי לשלוט ב-OpenThread למטרות בדיקה והסמכה

אם פלטפורמת החומרה של היעד תומכת במודול USB CDC ולא ב-UART, יש לוודא:

  • התקן את כונן ה-USB CDC הנכון בצד המארח
  • מחליפים את ההטמעה של UART API בנהג ה-USB CDC (יחד עם ה-BSP) בצד ה-OpenThread, תוך שימוש באותם אב-טיפוס של הפונקציה.

רדיו

הצהרת API:

/openthread/include/openthread/platform/radio.h

ממשק ה-API של ה-Radio מגדיר את כל הפונקציות הדרושות באמצעות שכבת ה-MAC העליונה מסוג IEEE 802.15.4. שבב הרדיו חייב להיות תואם במלואו למפרט IEEE 2.4GHz 802.15.4-2006.

התכונה המשופרת של OpenThread דורשת מכל הפלטפורמות להטמיע פריים אוטומטי בהמתנה (שידור עקיף) כברירת מחדל, וגם להטמיע את טבלת ההתאמה של כתובות המקור בקובץ המקור ב-radio.h.

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

שונות/איפוס

הצהרת API:

/openthread/include/openthread/platform/misc.h

ה-Mice/Reset API מספק שיטה לאיפוס התוכנה על הצ'יפ ושולח שאילתה לגבי הסיבה לאיפוס האחרון.

אנטרופיה

הצהרת API:

/openthread/include/openthread/platform/entropy.h

ה-Entropy API מספק מחולל מספרים אקראי (TRNG) לשכבה העליונה, המשמשת לתחזוקת נכסי אבטחה לכל רשת OpenThread. ה-API צריך להבטיח שיופק מספר אקראי חדש עבור כל קריאה לפונקציה. נכסי אבטחה שמושפעים מ-TRNG כוללים את:

  • צ'אט AES CCM
  • רעידות באיחור אקראי
  • מכשירים; #39; כתובת מורחבת
  • התקופה האקראית הראשונית בטיימר
  • מזהי אסימונים/הודעות של CoAP

הערה: פלטפורמות רבות כבר שילבו מחולל מספרים אקראי וכך חושפים את ה-API בחבילת ה-BSP שלו. במקרה שפלטפורמת החומרה לא תומכת ב-TRNG, כדאי לשקול להשתמש בדגימה של מודול ADC כדי ליצור מספר אקראי באורך קבוע. לדוגמה, אם יש צורך במספר גרסאות, אם צריך לעמוד בדרישות TRNG (uint32_t).

כאשר רכיב המאקרו MBEDTLS_ENTROPY_HARDWARE_ALT מוגדר כ-1, ה-API צריך גם לספק שיטה ליצירת אנטרופית החומרה הנמצאת בספריית mbedTLS.

אחסון לא תנודתי

הצהרות API:

/openthread/include/openthread/platform/flash.h

או

/openthread/include/openthread/platform/settings.h

ניתן למלא את הדרישה לאחסון ללא תנודתיות על ידי הטמעה של אחד משני ממשקי ה-API שמפורטים למעלה. ממשק ה-API של Flash מטמיע מנהל אחסון Flash, ואילו ב-APIs של הגדרות השירות ניתן לבצע פונקציות של פעולת Flash בסיסית בשכבה העליונה.

ממשקי ה-API האלה נחשפים לשכבה העליונה:

  • גודל האחסון הזמין שאינו תנודתי המשמש לאחסון נתוני האפליקציות (לדוגמה מערך נתונים תפעולי פעיל או בהמתנה, פרמטרים מהרשת הנוכחית והתקני שרשור של #39; פרטי כניסה מחדש לאחר איפוס)
  • קריאה, כתיבה, מחיקה וביצוע שאילתות על פעולות של סטטוס Flash

יש להשתמש ב-OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE בקובץ לדוגמה לדוגמה שבפלטפורמה &39;s כדי לציין באיזה API יש להשתמש בפלטפורמה. אם המדיניות מקבלת את הערך 1, צריך להטמיע את Flash API. אחרת, צריך להטמיע את ה-API של ההגדרות.

צריך להגדיר את הסימון הזה /openthread/examples/platforms/platform-name/openthread-core-platform-name-config.h בקובץ.

רישום

הצהרת API:

/openthread/include/openthread/platform/logging.h

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

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

ספציפי למערכת

הצהרת API:

/openthread/examples/platforms/openthread-system.h

ה-API הספציפי למערכת מספק בעיקר פעולות אתחול ואתחול עבור פלטפורמת החומרה שנבחרה. ספריית זו לא נקראת ספריית OpenThread עצמה, אבל היא יכולה להועיל למערכת/RTOS שלכם. אפשר גם להטמיע אתחול של מודולים אחרים (לדוגמה, UART, רדיו, אקראי, Misc/Reset) בקובץ המקור הזה.

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