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

ดูแหล่งที่มาใน GitHub

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