Platform Soyutlama Katmanı API'lerini uygulama

Kaynağı GitHub'da göster

OpenThread, dar bir Platform Soyutlama Katmanı (PAL) ile işletim sistemi ve platform bağımsız. Bu PAL şunları tanımlar:

Taşıma Mimarisi
  • Alarmlı ücretsiz çalışan zamanlayıcı için alarm arayüzü
  • CLI ve Spinel mesajlarını iletmek için otobüs arayüzleri (UART, SPI)
  • IEEE 802.15.4-2006 iletişimi için radyo arayüzü
  • GCC'ye özel başlatma rutinleri
  • Gerçek rastgele sayı oluşturma için entropi
  • Değişmeyen yapılandırma depolama için ayarlar hizmeti
  • OpenThread günlük mesajlarının günlük kaydı arayüzü
  • Sisteme özgü başlatma rutinleri

Tüm API'ler, temel Donanım Soyutlama Katmanı (HAL) Derleme Destek Paketi'ne (BSP) göre uygulanmalıdır.

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

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

Alarm

API beyanı:

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

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

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

UART

API beyanı:

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

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

OpenThread CLI ve NCP eklentileri, ana makine etkileşimi için UART arayüzüne bağlı olsa da UART API'si desteği isteğe bağlıdır. Bununla birlikte, bu eklentileri yeni donanım platformu örneğinizde kullanmayı planlamasanız bile birkaç nedenden dolayı destek eklemenizi önemle tavsiye ederiz:

  • KSA, taşıma işleminin doğru şekilde yapıldığını doğrulamak için yararlıdır
  • Harness Automation Tool, test ve sertifikasyon amacıyla OpenThread'ı kontrol etmek için UART arayüzünü kullanır.

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

  • Ana makine tarafında doğru USB CDC sürücüsünü yükleyin
  • Aynı işlev prototiplerini kullanarak UThread API'yi (BSP ile birlikte) USB CDC sürücüsüyle değiştirin

Radyo

API beyanı:

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

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

Gelişmiş ileti dizisi özelliği nedeniyle OpenThread tüm platformların varsayılan olarak beklemedeki (dolaylı iletim) otomatik çerçeveyi uygulamasını zorunlu kılmaktadır. Kaynak adres eşleştirme tablosu da radio.h kaynak dosyasına uygulanmalıdır.

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

Diğer/Sıfırla

API beyanı:

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

Çeşitli Mix/Sıfırlama API'si, çipteki yazılımı sıfırlamak ve son sıfırlamanın nedenini sorgulamak için bir yöntem sağlar.

Entropi

API beyanı:

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

Entropy API, üst katman için gerçek bir rastgele sayı oluşturucu (TRNG) sağlar. Bu, OpenThread ağının tamamında güvenlik öğelerini korumak için kullanılır. API, her işlev çağrısı için yeni bir rastgele sayı üretileceğini garanti etmelidir. TRNG'den etkilenen güvenlik öğeleri şunlardır:

  • AES CCM tek seferlik
  • Rastgele gecikmeli ses dalgalanması
  • Cihazların genişletilmiş adresi
  • Boşta kalma zamanlayıcısındaki ilk rastgele dönem
  • CoAP jetonu/mesaj kimlikleri

Birçok platformun rastgele bir sayı oluşturma aracını entegre ederek API'yi BSP paketine dahil ettiğini unutmayın. Hedef donanım platformunun TRNG'yi desteklememesi durumunda, sabit uzunlukta rastgele bir sayı oluşturmak için ADC modül örneklemesinden yararlanabilirsiniz. TRNG gereksinimlerini (uint32_t) karşılamak için gerekli olduğu durumlarda birden fazla iterasyondan örnek alın.

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

Değişmeyen depolama alanı

API bildirimleri:

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

veya

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

Değişmeyen depolama alanı gereksinimi, yukarıda listelenen iki API'den biri uygulanarak karşılanabilir. Flash API, bir flash depolama sürücüsü uygularken Settings API, üst katmana temel bir flaş işlemi uygulaması için işlevler sağlar.

Aşağıdaki API'ler üst katmana yol açar:

  • Uygulama verilerini depolamak için kullanılan kalıcı olmayan depolama alanı boyutu (örneğin, sıfırlama işleminden sonra yeniden ekleme için etkin/beklemedeki operasyonel veri kümesi, mevcut ağ parametreleri ve kimlik bilgisi cihazları)
  • Flaş durumu işlemlerini okuyun, yazın, silin ve sorgulayın

Platformunuzun kullanması gereken API'yi belirtmek için platform örneğinizin temel yapılandırma dosyasında OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE kullanın. 1 değerine ayarlanırsa Flash API'nin uygulanması gerekir. Aksi durumda Settings API'nin uygulanması gerekir.

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

Günlük Kaydı

API beyanı:

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

Logging API, birden fazla düzeyde hata ayıklama çıkışıyla birlikte OpenThread'ın günlük kaydı ve hata ayıklama işlevini uygular. Yeni donanım platformu örneğinizde OpenThread'ın 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 olan OPENTHREAD_LOG_LEVEL_DEBG, tüm ham paket bilgilerini ve günlük satırlarını seri bağlantı noktası üzerinden veya terminalden yazdırır. İhtiyaçlarınıza en uygun hata ayıklama düzeyini seçin.

Sisteme özgü

API beyanı:

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

Sisteme özel API, öncelikli olarak seçilen donanım platformu için ilk kullanıma hazırlama ve başlatma işlemleri sağlar. Bu API, OpenThread kitaplığının kendisi tarafından çağrılmaz ancak sisteminiz/RTOS'niz için faydalı olabilir. Ayrıca, bu kaynak dosyasında diğer modüllerin (ör. UART, Radyo, Rastgele, Çeşitli) sıfırlanmasına da uygulayabilirsiniz.

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