ใช้ API เลเยอร์ Abstraction ของแพลตฟอร์ม

ดูแหล่งข้อมูลใน GitHub

OpenThread เป็นระบบปฏิบัติการและแพลตฟอร์มที่ไม่จําเป็นต้องยึดถือด้วยแพลตฟอร์มเลเยอร์แคบ (PAL) PAL นี้จะกําหนดสิ่งต่อไปนี้

สถาปัตยกรรมการโอน
  • อินเทอร์เฟซนา forิกาปลุกสําหรับตัวจับเวลาการทํางานฟรีด้วยนา alarmิกาปลุก
  • อินเทอร์เฟซรถประจําทาง (UART, SPI) สําหรับการสื่อสารข้อความ CLI และ Spinel
  • อินเทอร์เฟซวิทยุสําหรับการสื่อสารของ IEEE 802.15.4-2006
  • กิจวัตรการเริ่มต้นเฉพาะ GCC
  • เอนโทรปีเพื่อสุ่มสร้างตัวเลข
  • บริการการตั้งค่าสําหรับพื้นที่เก็บข้อมูลการกําหนดค่าที่ไม่เปลี่ยนแปลง
  • อินเทอร์เฟซการบันทึกสําหรับส่งข้อความบันทึก OpenThread
  • กิจวัตรการเริ่มต้นเฉพาะระบบ

คุณควรติดตั้งใช้งาน API ทั้งหมดตาม Package Abstraction Build (HAL) Package Support Support Package (BSP) ที่จําเป็น

ไฟล์ API ควรวางไว้ในไดเรกทอรีต่อไปนี้

ประเภท ไดเรกทอรี
การใช้ PAL เฉพาะแพลตฟอร์ม /openthread/examples/platforms/platform-name
ไฟล์ส่วนหัว — API พื้นที่เก็บข้อมูลที่ไม่แตกต่างกัน /openthread/examples/platforms/utils
ไฟล์ส่วนหัวอื่นๆ ทั้งหมด /openthread/include/openthread/platform
พันธุ์ HAL BSP /openthread/third_party/platform-name

สัญญาณเตือนภัย

การประกาศ API:

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

API นา providesิกาปลุกให้บริการเวลาพื้นฐานและบริการนา alarmิกาปลุกสําหรับการติดตั้งใช้งานตัวจับเวลาด้านบน

บริการนา alarmิกาปลุกมี 2 ประเภท ได้แก่ มิลลิวินาทีและไมโครวินาที ต้องระบุมิลลิวินาทีสําหรับแพลตฟอร์มฮาร์ดแวร์ใหม่ ไมโครวินาทีเป็นตัวเลือก

UART

การประกาศ API:

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

UART API ใช้การสื่อสารพอร์ตอนุกรมพื้นฐานผ่านทางอินเทอร์เฟซ UART

ขณะที่ส่วนเสริม OpenThreadCLI และ NCP ต้องใช้อินเทอร์เฟซ UART ในการโต้ตอบกับฝั่งโฮสต์ แต่การรองรับ UART API หรือไม่ใส่ก็ได้ อย่างไรก็ตาม แม้ว่าคุณไม่ได้วางแผนจะใช้ส่วนเสริมเหล่านี้ในตัวอย่างแพลตฟอร์มฮาร์ดแวร์ใหม่ แต่ขอแนะนําอย่างยิ่งให้คุณเพิ่มการรองรับด้วยเหตุผลบางประการต่อไปนี้

  • CLI มีประโยชน์ต่อการตรวจสอบว่าพอร์ตทํางานได้อย่างถูกต้อง
  • เครื่องมือ Harness Automation ใช้อินเทอร์เฟซ UART เพื่อควบคุม OpenThread สําหรับการทดสอบและการรับรอง

หากแพลตฟอร์มฮาร์ดแวร์เป้าหมายรองรับโมดูล USB CDC แทน UART ให้ตรวจสอบสิ่งต่อไปนี้

  • ติดตั้งไดรเวอร์ USB CDC ที่ถูกต้องในฝั่งโฮสต์
  • แทนที่การใช้งาน UART API ด้วยไดรเวอร์ USB CDC (ควบคู่ไปกับ BSP) ฝั่ง OpenThread โดยใช้ต้นแบบฟังก์ชันเดียวกัน

วิทยุ

การประกาศ API:

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

Radio API กําหนดฟังก์ชันการทํางานที่จําเป็นทั้งหมดซึ่งเรียกโดยเลเยอร์ IEEE 802.15.4 ขึ้นไป ชิปวิทยุต้องเป็นไปตามข้อกําหนด 2.4GHz IEEE 802.15.4-2006

ฟีเจอร์ที่ใช้พลังงานต่ําที่เพิ่มประสิทธิภาพนี้ทําให้ OpenThread ต้องใช้แพลตฟอร์มทั้งหมดในการใช้เฟรมอัตโนมัติที่รอดําเนินการ (การส่งทางอ้อม) โดยค่าเริ่มต้น และควรติดตั้งตารางการจับคู่ที่อยู่ต้นทางในไฟล์ต้นฉบับ radio.h ด้วย

อย่างไรก็ตาม หากตัวอย่างแพลตฟอร์มฮาร์ดแวร์ใหม่มีทรัพยากรจํากัด ตารางที่อยู่ต้นทางก็ระบุยาวเป็น 0 ไม่ได้ ดูข้อมูลเพิ่มเติมที่เฟรมอัตโนมัติที่รอดําเนินการ

อื่นๆ

การประกาศ API:

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

Misc/การรีเซ็ต API มีวิธีรีเซ็ตซอฟต์แวร์บนชิป และจะค้นหาเหตุผลในการรีเซ็ตครั้งล่าสุด

เอนโทรปี

การประกาศ API:

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

Entropy API มีโปรแกรมสร้างตัวเลขสุ่ม (TRNG) จริงสําหรับเลเยอร์ด้านบน ซึ่งใช้เพื่อรักษาเนื้อหารักษาความปลอดภัยสําหรับเครือข่าย OpenThread ทั้งหมด API ควรรับประกันว่าระบบจะสร้างหมายเลขสุ่มใหม่สําหรับแต่ละการเรียกฟังก์ชัน เนื้อหาด้านความปลอดภัยที่ TRNG พิจารณามีดังนี้

  • ACE CCM ที่ไม่ใช่
  • เสียงรบกวนเสียงรบกวนแบบล่าช้าแบบสุ่ม
  • ที่อยู่เพิ่มเติมของอุปกรณ์
  • ระยะเวลาสุ่มเริ่มต้นในการจับเวลา
  • รหัสโทเค็น/ข้อความ 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 1 ใน 2 รายการที่แสดงข้างต้น Flash API ติดตั้งไดรเวอร์พื้นที่เก็บข้อมูลแฟลช ส่วน Settings API มีฟังก์ชันการทํางานสําหรับ Flash ที่จําเป็นอยู่ที่เลเยอร์ด้านบน

API เหล่านี้แสดงในเลเยอร์ด้านบน

  • ขนาดของพื้นที่เก็บข้อมูลที่เหลืออยู่ไม่เปลี่ยนแปลงซึ่งใช้เพื่อจัดเก็บข้อมูลแอปพลิเคชัน (เช่น ชุดข้อมูลที่ทํางานอยู่/รอดําเนินการ พารามิเตอร์เครือข่ายปัจจุบัน และข้อมูลรับรองของอุปกรณ์ชุดข้อความสําหรับการแนบใหม่หลังจากรีเซ็ต)
  • อ่าน เขียน ลบ และค้นหาข้อมูลสถานะ Flash

ใช้ OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE ในไฟล์การกําหนดค่าหลักของตัวอย่างแพลตฟอร์มเพื่อระบุว่า API ใดที่แพลตฟอร์มควรใช้ หากตั้งค่าเป็น 1 ต้องใช้ Flash API หรือไม่เช่นนั้น ต้องติดตั้ง Settings API

ต้องตั้งค่าแฟล็กนี้ในไฟล์ /openthread/examples/platforms/platform-name/openthread-core-platform-name-config.h

Logging

การประกาศ 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 ไม่ได้เรียก API นี้ แต่อาจเป็นประโยชน์สําหรับระบบ/RTOS ของคุณ นอกจากนี้คุณยังเริ่มใช้งานโมดูลอื่นๆ (เช่น UART, Radio, Random, Misc/Reset) ในไฟล์แหล่งที่มานี้ได้

การใช้งาน API นี้ขึ้นอยู่กับกรณีการใช้งานของคุณ หากต้องการใช้แอปพลิเคชัน CLI และ NCP ที่สร้างขึ้นสําหรับแพลตฟอร์มตัวอย่าง คุณต้องใช้ API นี้ ไม่เช่นนั้นจะใช้ API เพื่อผสานรวมไดรเวอร์แพลตฟอร์มตัวอย่างเข้ากับระบบ/RTOS ได้