Platform Soyutlama Katmanı API'lerini uygulama

Kaynağı GitHub'da görüntüleyin

OpenThread işletim sistemi ve platformdan bağımsızdır. Dar bir Platform Soyutlama Katmanı (PAL) kullanılır. Bu PAL şunları tanımlar:

Taşıma Mimarisi
  • Alarmlı serbest çalışan zamanlayıcı için alarm arayüzü
  • KSA ve Spinel mesajlarını iletişim kurmak için kullanılan otobüs arayüzleri (UART, SPI)
  • IEEE 802.15.4-2006 iletişimi için radyo arayüzü
  • GCC'ye özel ilk kullanıma hazırlama rutinleri
  • Gerçek rastgele sayı oluşturma için entropi
  • Değişken olmayan yapılandırma depolama alanı için ayarlar hizmeti
  • OpenThread günlük mesajlarını göndermek için kullanılan günlük kaydı arayüzü
  • Sisteme özgü başlatma rutinleri

Tüm API'ler, temel Donanım Soyutlama Katmanı (HAL) Derleme Destek Paketi (BSP) temel alınarak uygulanmalıdır.

API dosyaları aşağıdaki dizinlere yerleştirilmelidir:

Tür Dizin
Platforma özgü PAL uygulaması /openthread/examples/platforms/platform-name
Başlık dosyaları: Geçici olmayan depolama API'sı /openthread/examples/platforms/utils
Diğer tüm üstbilgi dosyaları /openthread/include/openthread/platform
HAL BSP /openthread/third_party/platform-name

Alarm

API bildirimi:

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

Alarm API, üst katman zamanlayıcı uygulaması için temel zamanlama ve alarm hizmetleri sağlar.

Bir milisaniye ve mikro saniye olmak üzere iki alarm hizmeti türü vardır. Yeni bir donanım platformu için milisaniye gereklidir. Mikrosaniye isteğe bağlıdır.

UART

API bildirimi:

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

UART API, UART arayüzü üzerinden temel seri bağlantı noktası iletişimini uygular.

OpenThread CLI ve NCP eklentileri, ana makine tarafıyla etkileşimde bulunma UART arayüzüne bağlı olsa da UART API desteği isteğe bağlıdır. Ancak, bu eklentileri yeni donanım platformu örneğinizde kullanmayı planlamasanız bile, aşağıdaki nedenlerle destek eklemenizi önemle tavsiye ederiz:

  • KSA, bağlantı noktasının düzgün çalıştığını doğrulamak için kullanışlıdır
  • Harness Automation Tool, test ve sertifikasyon amacıyla OpenThread'i kontrol etmek için UART arayüzünü kullanır

Hedef donanım platformu UART yerine bir USB CDC modülünü destekliyorsa aşağıdakileri yaptığınızdan emin olun:

  • Ana makineye doğru USB CDC sürücüsünü takın
  • UART API'sı uygulamasını, aynı işlev prototiplerini kullanarak OpenThread tarafındaki USB CDC sürücüsüyle (BSP ile birlikte) değiştirin

Radyo

API bildirimi:

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

Radyo API'si, üst IEEE 802.15.4 MAC katmanı tarafından çağrılan gerekli tüm işlevleri tanımlar. Radyo çipi, 2,4 GHz IEEE 802.15.4-2006 spesifikasyonu ile tamamen uyumlu olmalıdır.

Geliştirilmiş düşük güç özelliği nedeniyle OpenThread, varsayılan olarak tüm platformların otomatik çerçeve beklemeyi (dolaylı iletim) uygulamasını gerektirir ve kaynak adres eşleşme tablosu da radio.h kaynak dosyasında uygulanmalıdır.

Ancak yeni donanım platformu örneğiniz kaynak sınırlıysa kaynak adres tablosu sıfır uzunluğunda olarak tanımlanabilir. Daha fazla bilgi için Otomatik Çerçeve Beklemede bölümüne bakın.

Çeşitli/Sıfırla

API bildirimi:

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

Misc/Sıfırlama API'sı, çipteki yazılımı sıfırlamak ve son sıfırlama nedenini sorgulamak için bir yöntem sunar.

Entropi

API bildirimi:

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

Entropy API'si, tüm OpenThread ağı için güvenlik öğelerinin yönetilmesi amacıyla kullanılan üst katman için gerçek bir rastgele sayı oluşturucu (TRNG) sağlar. API, her işlev çağrısı için yeni bir rastgele sayı oluşturulacağını garanti etmelidir. TRNG'den etkilenen güvenlik öğeleri şunlardır:

  • AES CCM tek seferlik
  • Rastgele gecikmeli ses dalgalanması
  • Cihazların genişletilmiş adresi
  • Çalma süresindeki ilk rastgele dönem
  • CoAP jetonu/mesaj kimlikleri

Birçok platformun API'yi BSP paketinde kullanıma sunmak için halihazırda rastgele bir sayı oluşturucu entegre ettiğini unutmayın. Hedef donanım platformunun TRNG'yi desteklememesi durumunda, sabit uzunlukta rastgele sayı oluşturmak için ADC modülü örneklemesinden yararlanabilirsiniz. TRNG gereksinimlerini (uint32_t) karşılamak için gerekliyse birden fazla yineleme üzerinden örnekleyin.

MBEDTLS_ENTROPY_HARDWARE_ALT makrosu 1 olarak ayarlandığında bu API, mbedTLS kitaplığında kullanılan donanım entropisini oluşturmak için de bir yöntem sunmalıdır.

Geçici olmayan depolama alanı

API bildirimleri:

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

veya

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

Geçici olmayan depolama alanı gereksinimi, yukarıda listelenen iki API'den biri uygulanarak karşılanabilir. Flash API'si, bir flash depolama sürücüsü uygularken Ayarlar API'si, bir alt flash uygulamasının temel katmanına uygulanması için işlevler sağlar.

Bu API'ler üst katmanın açığa çıkmasını sağlar:

  • Uygulama verilerini depolamak için kullanılan geçici olmayan boyut depolama alanı (örneğin, aktif/beklemede operasyonel veri kümesi, mevcut ağ parametreleri ve sıfırlama işleminden sonra iş parçacıklarının kimlik bilgileri için kullanılan kimlik bilgileri)
  • Flaş durum işlemlerini okuma, yazma, silme ve sorgulama

Platform örneğinin hangi API'yi kullanması gerektiğini belirtmek için platform örneğinizin çekirdek yapılandırma dosyasında OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE kullanın. 1 olarak ayarlanırsa Flash API uygulanması gerekir. Aksi takdirde, Ayarlar API'si uygulanmalıdır.

Bu işaret, /openthread/examples/platforms/platform-name/openthread-core-platform-name-config.h dosyanızda ayarlanmalıdır.

Günlük Kaydı

API bildirimi:

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

Logging API, birden fazla hata ayıklama çıkışı düzeyiyle birlikte OpenThread'in günlük kaydı ve hata ayıklama işlevini uygular. Yeni donanım platformu örneğinizde OpenThread'in günlük kaydını kullanmayı düşünmüyorsanız bu API isteğe bağlıdır.

En yüksek ve en ayrıntılı düzey, tüm ham paket bilgilerini yazdıran ve seri bağlantı noktalarını seri bağlantı noktasından ya da terminalden kaydeden OPENTHREAD_LOG_LEVEL_DEBG işlemidir. İhtiyaçlarınıza en uygun hata ayıklama seviyesini seçin.

Sisteme özgü

API bildirimi:

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

Sisteme özgü API öncelikli olarak seçilen donanım platformu için ilk kullanıma hazırlama ve ilk kullanıma hazırlama işlemlerini sağlar. Bu API, OpenThread kitaplığı tarafından çağrılmaz ancak sisteminiz/RTOS için yararlı olabilir. Bu kaynak dosyada diğer modüllerin (örneğin UART, Radyo, Rastgele, Çeşitli/Sıfırlama) başlatılmasını da uygulayabilirsiniz.

Bu API'nin uygulanması kullanım alanınıza bağlıdır. Oluşturulan CLI ve NCP uygulamalarını örnek bir platform için kullanmak istiyorsanız bu API'yi uygulamanız gerekir. Aksi takdirde, örnek platform sürücülerini sisteminize/RTOS'a entegre etmek için herhangi bir API uygulanabilir.