Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Mengimplementasikan API Lapisan Abstrak Platform

Lihat sumber di GitHub

OpenThread adalah OS dan tanpa platform, dengan Platform Abstraction Layer (PAL) yang sempit. PAL ini mendefinisikan:

Arsitektur Porting
  • Antarmuka alarm untuk timer yang kompatibel dengan alarm
  • Antarmuka bus (UART, SPI) untuk mengomunikasikan pesan CLI dan Spinel
  • Antarmuka radio untuk komunikasi IEEE 802.15.4-2006
  • Rutinitas inisialisasi khusus GCC
  • Entropi untuk pembuatan nomor acak benar
  • Layanan setelan untuk penyimpanan konfigurasi yang tidak stabil
  • Antarmuka logging untuk mengirim pesan log OpenThread
  • Rutinitas inisialisasi khusus sistem

Semua API harus diimplementasikan berdasarkan Paket Dukungan Build Bion absion Hardware (HAL) yang mendasarinya (BSP).

File API harus ditempatkan di direktori berikut:

Jenis Direktori
Implementasi PAL khusus platform /openthread/examples/platforms/platform-name
File header — API penyimpanan non-volatil /openthread/examples/platforms/utils
Semua file header lainnya /openthread/include/openthread/platform
BSP HAL /openthread/third_party/platform-name

Alarm

Deklarasi API:

/openthread/include/openthread/platform/alarm-milli.h

Alarm API menyediakan pengaturan waktu dan layanan alarm dasar untuk implementasi timer lapisan atas.

Ada dua jenis layanan alarm, millidetik dan mikrodetik. Milidetik diperlukan untuk platform hardware baru. Mikrodetik bersifat opsional.

UART

Deklarasi API:

/openthread/examples/platforms/utils/uart.h

UART API mengimplementasikan komunikasi port serial dasar melalui antarmuka UART.

Add-on CLI dan NCP OpenThread bergantung pada antarmuka UART untuk berinteraksi dengan sisi host, dukungan UART API bersifat opsional. Namun, meskipun Anda tidak berencana menggunakan add-on ini di contoh platform hardware baru, kami sangat menyarankan Anda untuk menambahkan dukungan karena beberapa alasan:

  • CLI berguna untuk memvalidasi bahwa port berfungsi dengan benar
  • Harness Automation Tool menggunakan antarmuka UART untuk mengontrol OpenThread untuk tujuan pengujian dan sertifikasi

Jika platform hardware target mendukung modul USB CDC, bukan UART, pastikan untuk:

  • Instal driver CDC USB yang tepat di sisi host
  • Mengganti implementasi UART API dengan driver USB CDC (bersama dengan BSP) di sistem OpenThread, menggunakan prototipe fungsi yang sama

Radio

Deklarasi API:

/openthread/include/openthread/platform/radio.h

Radio API menentukan semua fungsi yang diperlukan yang dipanggil oleh lapisan MAC IEEE 802.15.4 atas. Chip Radio harus sepenuhnya sesuai dengan spesifikasi IEEE 802.15.4-2006 2,4 GHz.

Karena fitur daya rendahnya yang disempurnakan, OpenThread mengharuskan semua platform untuk mengimplementasikan frame otomatis yang tertunda (transmisi tidak langsung) secara default, dan tabel pencocokan alamat sumber juga harus diimplementasikan di file sumber radio.h.

Namun, jika contoh platform hardware baru dibatasi resource, tabel alamat sumber dapat ditentukan sebagai panjang nol. Lihat Frame Otomatis Tertunda untuk informasi selengkapnya.

Lain-lain/Reset

Deklarasi API:

/openthread/include/openthread/platform/misc.h

Misc/Reset API menyediakan metode untuk mereset software pada chip, dan meminta alasan reset terakhir.

Entropi

Deklarasi API:

/openthread/include/openthread/platform/entropy.h

Entropy API menyediakan generator angka acak (TRNG) acak untuk lapisan atas, yang digunakan untuk mempertahankan aset keamanan untuk seluruh jaringan OpenThread. API harus menjamin bahwa nomor acak baru akan dibuat untuk setiap panggilan fungsi. Aset keamanan yang terpengaruh oleh TRNG meliputi:

  • nonce AES CCM
  • Jitter tertunda acak
  • Alamat yang diperluas untuk perangkat
  • Periode acak awal dalam timer kecil
  • Token pesan/ID CoAP

Perlu diketahui bahwa banyak platform yang telah mengintegrasikan generator angka acak, yang mengekspos API dalam paket BSP-nya. Jika platform hardware target tidak mendukung TRNG, sebaiknya manfaatkan pengambilan sampel modul ADC untuk menghasilkan angka acak dengan panjang tetap. Ambil sampel lebih dari satu iterasi jika perlu untuk memenuhi persyaratan TRNG (uint32_t).

Saat makro MBEDTLS_ENTROPY_HARDWARE_ALT ditetapkan ke 1, API ini juga harus menyediakan metode untuk menghasilkan entropi hardware yang digunakan dalam library mbedTLS.

Penyimpanan yang tidak stabil

Deklarasi API:

/openthread/include/openthread/platform/flash.h

atau

/openthread/include/openthread/platform/settings.h

Persyaratan penyimpanan non-volatil dapat dipenuhi dengan menerapkan salah satu dari dua API yang tercantum di atas. Flash API mengimplementasikan driver penyimpanan flash, sedangkan Settings API menyediakan fungsi untuk implementasi operasi flash yang mendasarinya ke lapisan atas.

API ini mengekspos ke lapisan atas:

  • Ukuran penyimpanan non-volatil yang tersedia, yang digunakan untuk menyimpan data aplikasi (misalnya, set data operasional aktif/tertunda, parameter jaringan saat ini, dan kredensial perangkat thread untuk lampiran ulang setelah reset)
  • Operasi baca, tulis, hapus, dan status flash kueri

Gunakan OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE dalam file konfigurasi inti contoh platform Anda untuk menunjukkan API mana yang harus digunakan platform. Jika ditetapkan ke 1, Flash API harus diterapkan. Jika tidak, Settings API harus diterapkan.

Flag ini harus ditetapkan di file /openthread/examples/platforms/platform-name/openthread-core-platform-name-config.h Anda.

Logging

Deklarasi API:

/openthread/include/openthread/platform/logging.h

Logging API mengimplementasikan fungsionalitas logging dan debug OpenThread dengan beberapa level output debug yang tersedia. API ini bersifat opsional jika Anda tidak berencana untuk menggunakan logging OpenThread pada contoh platform hardware baru Anda.

Tingkat tertinggi dan paling mendetail adalah OPENTHREAD_LOG_LEVEL_DEBG, yang mencetak semua informasi paket mentah dan baris log melalui port serial atau di terminal. Pilih level debug yang paling sesuai dengan kebutuhan Anda.

Khusus sistem

Deklarasi API:

/openthread/examples/platforms/openthread-system.h

API khusus Sistem terutama menyediakan operasi inisialisasi dan deinisialisasi untuk platform hardware yang dipilih. API ini tidak dipanggil oleh library OpenThread itu sendiri, tetapi mungkin berguna untuk sistem/RTOS Anda. Anda juga dapat mengimplementasikan inisialisasi modul lain (misalnya, UART, Radio, Random, Misc/Reset) dalam file sumber ini.

Implementasi API ini bergantung pada kasus penggunaan Anda. Jika Anda ingin menggunakan aplikasi CLI dan NCP untuk platform contoh, Anda harus menerapkan API ini. Jika tidak, API apa pun dapat diterapkan untuk mengintegrasikan contoh driver platform ke sistem/RTOS Anda.