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

Menerapkan API Lapisan Abstraksi Platform

Lihat sumber di GitHub

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

Arsitektur Porting
  • Antarmuka alarm untuk pengatur waktu yang berjalan bebas dengan alarm
  • Antarmuka bus (UART, SPI) untuk mengkomunikasikan pesan CLI dan Spinel
  • Antarmuka radio untuk komunikasi IEEE 802.15.4-2006
  • Rutin inisialisasi khusus GCC
  • Entropi untuk pembangkitan bilangan acak sejati
  • Layanan pengaturan untuk penyimpanan konfigurasi non-volatile
  • Antarmuka logging untuk mengirimkan pesan log OpenThread
  • Rutinitas inisialisasi khusus sistem

Semua API harus diimplementasikan berdasarkan Hardware Abstraction Layer (HAL) Build Support Package (BSP) yang mendasarinya.

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
HAL BSP /openthread/third_party/ platform-name

Alarm

Deklarasi API:

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

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

Ada dua jenis layanan alarm, milidetik dan mikrodetik . Milidetik diperlukan untuk platform perangkat keras baru. Mikrodetik adalah opsional.

UART

Deklarasi API:

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

API UART mengimplementasikan komunikasi port serial mendasar melalui antarmuka UART.

Sementara OpenThread CLI dan NCP add-ons tergantung pada antarmuka UART untuk berinteraksi dengan sisi tuan rumah, dukungan UART API adalah opsional. Namun, meskipun Anda tidak berencana untuk menggunakan add-on ini pada contoh platform perangkat keras baru Anda, kami sangat menyarankan Anda menambahkan dukungan karena beberapa alasan:

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

Jika platform perangkat keras target mendukung modul USB CDC daripada UART, pastikan untuk:

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

Radio

Deklarasi API:

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

Radio API mendefinisikan semua fungsi yang diperlukan yang dipanggil oleh lapisan MAC IEEE 802.15.4 atas. Chip Radio harus sepenuhnya sesuai dengan spesifikasi 2.4GHz IEEE 802.15.4-2006.

Karena fitur daya yang rendah ditingkatkan, OpenThread mengharuskan semua platform untuk menerapkan kerangka auto tertunda (transmisi tidak langsung) secara default, dan meja pertandingan alamat sumber juga harus diimplementasikan dalam radio.h file sumber.

Namun, jika contoh platform perangkat keras baru Anda terbatas pada sumber daya, tabel alamat sumber dapat didefinisikan sebagai panjang nol. Lihat Auto Bingkai Tertunda untuk informasi lebih lanjut.

Lain-lain/Setel Ulang

Deklarasi API:

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

Misc/Reset API menyediakan metode untuk mereset perangkat lunak pada chip, dan menanyakan alasan untuk reset terakhir.

Entropi

Deklarasi API:

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

Entropy API menyediakan true random number generator (TRNG) untuk lapisan atas, yang digunakan untuk menjaga aset keamanan untuk seluruh jaringan OpenThread. API harus menjamin bahwa nomor acak baru dihasilkan untuk setiap panggilan fungsi. Aset keamanan yang terkena dampak TRNG meliputi:

  • AES CCM tidak pernah
  • Jitter tertunda acak
  • Alamat diperpanjang perangkat
  • Periode acak awal dalam pengatur waktu tetesan
  • Token/ID pesan CoAP

Perhatikan bahwa banyak platform telah mengintegrasikan generator nomor acak, memperlihatkan API dalam paket BSP-nya. Jika platform perangkat keras target tidak mendukung TRNG, pertimbangkan untuk memanfaatkan pengambilan sampel modul ADC untuk menghasilkan nomor acak dengan panjang tetap. Sampel melalui beberapa iterasi jika perlu untuk memenuhi persyaratan TRNG (uint32_t).

Ketika makro MBEDTLS_ENTROPY_HARDWARE_ALT diatur ke 1 , API ini juga harus menyediakan metode untuk menghasilkan entropi hardware yang digunakan di perpustakaan mbedTLS.

Penyimpanan non-volatil

Deklarasi API:

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

atau

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

Persyaratan penyimpanan Non-volatile 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 pemasangan kembali setelah reset)
  • Membaca, menulis, menghapus, dan menanyakan operasi status flash

Gunakan OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE platform contoh Anda file konfigurasi inti untuk menunjukkan API platform harus menggunakan. Jika diatur ke 1 , API Flash harus dilaksanakan. Jika tidak, API Pengaturan harus diterapkan.

Bendera ini harus diatur dalam Anda /openthread/examples/platforms/ platform-name /openthread-core- platform-name -config.h berkas.

Masuk

Deklarasi API:

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

Logging API mengimplementasikan fungsionalitas logging dan debug OpenThread, dengan berbagai tingkat output debug yang tersedia. API ini opsional jika Anda tidak berencana untuk menggunakan logging OpenThread pada contoh platform perangkat keras baru Anda.

Tingkat tertinggi dan paling rinci adalah OPENTHREAD_LOG_LEVEL_DEBG , yang mencetak semua informasi paket baku dan log garis melalui port serial atau di terminal. Pilih tingkat 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 perangkat keras yang dipilih. API ini tidak dipanggil oleh pustaka 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 dihasilkan CLI dan NCP aplikasi untuk contoh platform yang , Anda harus menerapkan API ini. Jika tidak, API apa pun dapat diimplementasikan untuk mengintegrasikan driver platform contoh ke dalam sistem/RTOS Anda.