OpenThread เป็น ChromeOS และแพลตฟอร์มที่ไม่จําเป็นต้องติดตั้งเอง และมีเลเยอร์ Abstraction Layer (PAL) ที่แคบ PAL นี้กําหนด
- อินเทอร์เฟซนาฬิกาปลุกสําหรับตัวจับเวลาวิ่งฟรีพร้อมนาฬิกาปลุก
- อินเทอร์เฟซรถประจําทาง (UART, SPI) สําหรับสื่อสารข้อความ CLI และสันหนังสือ
- อินเทอร์เฟซวิทยุสําหรับการสื่อสาร IEEE 802.15.4-2006
- กิจวัตรการเริ่มต้นเฉพาะ GCC
- เอนโทรปีในการสร้างตัวเลขแบบสุ่มจริง
- บริการสําหรับการตั้งค่าพื้นที่เก็บข้อมูลที่มีความผันผวน
- อินเทอร์เฟซการบันทึกสําหรับส่งข้อความบันทึกของ OpenThread
- กิจวัตรการเริ่มต้นเฉพาะระบบ
ควรนํา API ทั้งหมดไปใช้ตามแพ็กเกจการสนับสนุนฮาร์ดแวร์ (HAL) ของ Abstraction Layer (HAL) ที่เกี่ยวข้อง
ควรวางไฟล์ API ในไดเรกทอรีต่อไปนี้
ประเภท | ไดเรกทอรี |
---|---|
การใช้งาน PAL เฉพาะแพลตฟอร์ม | /openthread/examples/platforms/platform-name |
ไฟล์ส่วนหัว — API พื้นที่เก็บข้อมูลที่ไม่เปลี่ยนแปลง | /openthread/examples/platforms/utils |
ไฟล์ส่วนหัวอื่นๆ ทั้งหมด | /openthread/include/openthread/platform |
BAL ฮาลาล | /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 มีประโยชน์สําหรับการตรวจสอบให้แน่ใจว่าพอร์ตทํางานอย่างถูกต้อง
- เครื่องมือ 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 MAC ด้านบน ชิปวิทยุต้องสอดคล้องกับข้อกําหนด IEEE 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 ได้แก่
- ACE สําหรับ 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 รายการข้างต้น Flash API จะนําไดรเวอร์พื้นที่เก็บข้อมูลแบบ Flash ไปปรับใช้ ในขณะที่ 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 เฉพาะระบบมีการดําเนินการเริ่มต้นและการทําให้เริ่มทํางานสําหรับแพลตฟอร์มฮาร์ดแวร์ที่เลือกเป็นหลัก API จะไม่เรียก API ไลบรารีนี้เอง แต่อาจเป็นประโยชน์สําหรับระบบ/RTOS ของคุณ คุณยังใช้การเริ่มต้นโมดูลอื่นๆ (เช่น UART, Radio, Random,Misc/Reset) ในไฟล์แหล่งที่มานี้ได้ด้วย
การนํา API นี้ไปใช้จะขึ้นอยู่กับกรณีการใช้งานของคุณ หากต้องการใช้แอปพลิเคชัน CLI และ NCP ที่สร้างขึ้นสําหรับแพลตฟอร์มตัวอย่าง คุณต้องใช้ API นี้ หรืออาจใช้ API ใดก็ได้เพื่อผสานรวมไดรเวอร์แพลตฟอร์มตัวอย่างในระบบของคุณ/RTOS