ควรวางไฟล์ API ในไดเรกทอรีต่อไปนี้
ประเภท |
ไดเรกทอรี |
การใช้ PAL เฉพาะแพลตฟอร์ม |
/openthread/examples/platforms/platform-name |
ไฟล์ส่วนหัว — API พื้นที่เก็บข้อมูลที่ไม่เปลี่ยนแปลง |
/openthread/examples/platforms/utils |
ไฟล์ส่วนหัวอื่นๆ ทั้งหมด |
/openthread/include/openthread/platform |
BSP ฮาลาล |
/openthread/third_party/platform-name |
สัญญาณเตือน
การประกาศ API:
/openthread/include/openthread/platform/alarm-milli.h
Alarm API ให้บริการเวลาพื้นฐานและบริการสัญญาณเตือนสําหรับการใช้งานชั้นบน
บริการตั้งปลุกมี 2 ประเภท ได้แก่ มิลลิวินาทีและ microsecond
แพลตฟอร์มต้องใช้ฮาร์ดแวร์ใหม่ในหน่วยมิลลิวินาที โดยจะใส่ไมโครวินาทีหรือไม่ก็ได้
UART
การประกาศ API:
/openthread/examples/platforms/utils/uart.h
UART API นําการสื่อสารพอร์ตอนุกรมพื้นฐานมาใช้ผ่านอินเทอร์เฟซ UART
แม้ว่าส่วนเสริม OpenThread
CLI และ 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.4 GHz IEEE 802.15.4-2006 อย่างสมบูรณ์
เนื่องจากฟีเจอร์ใช้พลังงานต่ําขั้นสูง OpenThread จึงกําหนดให้ทุกแพลตฟอร์มใช้เฟรมอัตโนมัติที่รอดําเนินการ (การส่งโดยอ้อม) ตามค่าเริ่มต้น และควรใช้ตารางการจับคู่ที่อยู่ต้นทางในไฟล์แหล่งที่มา radio.h
ด้วย
อย่างไรก็ตาม หากตัวอย่างแพลตฟอร์มฮาร์ดแวร์ใหม่ของคุณมีทรัพยากรจํากัด คุณสามารถกําหนดตารางที่อยู่ต้นทางเป็นความยาว 0 ได้ ดูข้อมูลเพิ่มเติมที่รอดําเนินการเฟรมอัตโนมัติ
อื่นๆ/รีเซ็ต
การประกาศ API:
/openthread/include/openthread/platform/misc.h
Misc/Reset API จะระบุวิธีรีเซ็ตซอฟต์แวร์ในชิป และค้นหาเหตุผลของการรีเซ็ตครั้งล่าสุด
เอนโทรปี
การประกาศ API:
/openthread/include/openthread/platform/entropy.h
Entropy API สร้างโปรแกรมสุ่มตัวเลข (TRNG) ที่แท้จริงสําหรับเลเยอร์บน ซึ่งใช้เพื่อรักษาเนื้อหาความปลอดภัยสําหรับเครือข่าย OpenThread ทั้งหมด API ควรรับประกันว่าจะมีการสร้างหมายเลขสุ่มใหม่สําหรับการเรียกฟังก์ชันแต่ละครั้ง เนื้อหาความปลอดภัยที่ได้รับผลกระทบจาก TRNG ได้แก่
- CECE สําหรับ CES แบบ AES
- ความล่าช้าของ Jitter ล่าช้า
- อุปกรณ์และที่อยู่ที่ขยาย
- ระยะเวลาสุ่มเริ่มต้นในตัวจับเวลาตัวเอียง
- รหัสโทเค็น/ข้อความ 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 รายการข้างต้น โดย API ของ Flash จะนําไดรเวอร์พื้นที่เก็บข้อมูล Flash ไปใช้ ส่วน Settings API จะมีฟังก์ชันสําหรับ Flash ที่ใช้งานอยู่กับเลเยอร์ด้านบน
API เหล่านี้สอดคล้องกับเลเยอร์ด้านบน
- ขนาดพื้นที่เก็บข้อมูลที่ไม่มีความผันผวนซึ่งใช้เพื่อจัดเก็บข้อมูลแอปพลิเคชัน (เช่น ชุดข้อมูลการดําเนินการที่ใช้งานอยู่/รอดําเนินการ พารามิเตอร์เครือข่ายปัจจุบัน และอุปกรณ์ชุดข้อความ)' ข้อมูลรับรองสําหรับไฟล์แนบอีกครั้งหลังจากรีเซ็ต)
- อ่าน เขียน ลบ และค้นหาสถานะแฟลช
ใช้ 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 ของคุณ