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 ได้