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

- อินเทอร์เฟซนาฬิกาปลุกสำหรับตัวจับเวลาแบบต่อเนื่องพร้อมการปลุก
- อินเทอร์เฟซบัส (UART, SPI) สำหรับการสื่อสารข้อความ CLI และ Spinel
- อินเทอร์เฟซวิทยุสำหรับการสื่อสาร IEEE 802.15.4-2006
- กิจวัตรการเริ่มต้นเฉพาะ GCC
- เอนโทรปีสําหรับการสร้างตัวเลขสุ่มจริง
- บริการการตั้งค่าสำหรับพื้นที่เก็บข้อมูลการกำหนดค่าแบบคงที่
- อินเทอร์เฟซการบันทึกสำหรับส่งข้อความบันทึก OpenThread
- กิจวัตรการเริ่มต้นเฉพาะระบบ
คุณควรติดตั้งใช้งาน API ทั้งหมดตามแพ็กเกจการสนับสนุนการสร้าง (BSP) ของเลเยอร์การแยกแยะฮาร์ดแวร์ (HAL) ที่เกี่ยวข้อง
เว้นแต่จะระบุไว้ว่าไม่บังคับไฟล์ API ควรวางไว้ในไดเรกทอรีต่อไปนี้
ประเภท | ไดเรกทอรี |
---|---|
การติดตั้งใช้งาน PAL สำหรับแพลตฟอร์มที่เฉพาะเจาะจง | /openthread/examples/platforms/platform-name |
ไฟล์ส่วนหัว — Non-volatile storage API | /openthread/examples/platforms/utils |
ไฟล์ส่วนหัวอื่นๆ ทั้งหมด | /openthread/include/openthread/platform |
HAL BSP | /openthread/third_party/platform-name |
การปลุก
การประกาศ API
/openthread/include/openthread/platform/alarm-milli.h
Alarm API ให้บริการจับเวลาและการปลุกพื้นฐานสําหรับการใช้งานตัวจับเวลาในเลเยอร์บน
บริการสัญญาณเตือนมี 2 ประเภท ได้แก่ มิลลิวินาทีและไมโครวินาที ต้องระบุมิลลิวินาทีสำหรับแพลตฟอร์มฮาร์ดแวร์ใหม่ ไมโครวินาทีเป็นตัวเลือกที่ไม่บังคับ
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
Radio API จะกำหนดฟังก์ชันที่จำเป็นทั้งหมดที่เรียกใช้โดยเลเยอร์ IEEE 802.15.4 MAC ที่สูงกว่า ชิปวิทยุต้องเป็นไปตามข้อกำหนด IEEE 802.15.4-2006 2.4GHz อย่างเต็มรูปแบบ
เนื่องจากฟีเจอร์พลังงานต่ำที่มีประสิทธิภาพมากขึ้น 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 มีดังนี้
- ข้อมูลที่ไม่ซ้ำกันของ AES 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 รายการใดรายการหนึ่งจาก 2 รายการที่ระบุไว้ข้างต้น Flash API ใช้ไดรฟ์สำหรับพื้นที่เก็บข้อมูล Flash ส่วน Settings API มีฟังก์ชันสำหรับการใช้งานการดำเนินการ Flash พื้นฐานในเลเยอร์บน
API เหล่านี้จะแสดงในเลเยอร์บน
- ขนาดพื้นที่เก็บข้อมูลแบบคงที่ที่ใช้จัดเก็บข้อมูลแอปพลิเคชัน (เช่น ชุดข้อมูลการทํางานที่มีการใช้งาน/รอดําเนินการ พารามิเตอร์เครือข่ายปัจจุบัน และข้อมูลเข้าสู่ระบบของอุปกรณ์เทรดสำหรับการเชื่อมต่ออีกครั้งหลังจากรีเซ็ต)
- การดำเนินการอ่าน เขียน ลบ และค้นหาสถานะแฟลช
ใช้ OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE
ในไฟล์การกําหนดค่าหลักของตัวอย่างแพลตฟอร์มเพื่อระบุ API ที่แพลตฟอร์มควรใช้ หากตั้งค่าเป็น 1
ต้องติดตั้งใช้งาน Flash API มิเช่นนั้น จะต้องติดตั้งใช้งาน Settings API
คุณต้องตั้งค่า Flag นี้ในไฟล์ /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 ไม่ได้เรียกใช้ API นี้ แต่อาจมีประโยชน์สำหรับระบบ/RTOS นอกจากนี้ คุณยังใช้การเริ่มต้นโมดูลอื่นๆ (เช่น UART, วิทยุ, Random, อื่นๆ/รีเซ็ต) ในไฟล์ต้นฉบับนี้ได้อีกด้วย
การติดตั้งใช้งาน API นี้ขึ้นอยู่กับกรณีการใช้งานของคุณ หากต้องการใช้แอปพลิเคชัน CLI และ NCP ที่สร้างขึ้นสำหรับแพลตฟอร์มตัวอย่าง คุณต้องติดตั้งใช้งาน API นี้ หรือจะใช้ API ใดก็ได้เพื่อผสานรวมไดรเวอร์แพลตฟอร์มตัวอย่างเข้ากับระบบ/RTOS