Kaynağı GitHub'da görüntüleyin
OpenThread, dar bir Platform Soyutlama Katmanı (PAL) ile işletim sisteminden ve platformdan bağımsızdır. Bu PAL'de şunlar tanımlanır:

- Alarmlı serbest çalışan zamanlayıcı için alarm arayüzü
- CLI ve Spinel mesajlarını iletmek için veri yolu arabirimleri (UART, SPI)
- IEEE 802.15.4-2006 iletişimi için radyo arayüzü
- GCC'ye özgü ilk başlatma rutinleri
- Gerçek rastgele sayı oluşturma için entropi
- Geçici olmayan yapılandırma depolama alanı için ayarlar hizmeti
- OpenThread günlük mesajlarını yayınlamak için günlük kaydı arayüzü
- Sisteme özgü başlatma rutinleri
Tüm API'ler, temel donanım soyutlama katmanı (HAL) derleme destek paketine (BSP) göre uygulanmalıdır.
API dosyaları aşağıdaki dizinlere yerleştirilmelidir:
Tür | Dizin |
---|---|
Platforma özel PAL uygulaması | /openthread/examples/platforms/platform-name |
Üst dosya: Geçici olmayan depolama API'si | /openthread/examples/platforms/utils |
Diğer tüm üst dosya | /openthread/include/openthread/platform |
HAL BSP | /openthread/third_party/platform-name |
Alarm
API beyanı:
/openthread/include/openthread/platform/alarm-milli.h
Alarm API'si, üst katman zamanlayıcı uygulaması için temel zamanlama ve alarm hizmetleri sağlar.
İki alarm hizmeti türü vardır: milisaniye ve mikrosaniye. 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, UART arayüzü üzerinden temel seri bağlantı noktası iletişimini uygular.
OpenThread CLI ve NCP eklentileri, ana makine tarafıyla etkileşimde bulunmak için 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 nedenlerden dolayı destek eklemenizi önemle tavsiye ederiz:
- CLI, bağlantı noktasının düzgün çalıştığını doğrulamak için kullanışlıdır.
- Kablo Bağlantısı Otomasyon Aracı, test ve sertifikalandırma amacıyla OpenThread'i kontrol etmek için UART arayüzünü kullanır.
Hedef donanım platformu UART yerine USB CDC modülü destekliyorsa şunları yapın:
- Ana makine tarafına doğru USB CDC sürücüsünü yükleyin
- UART API uygulamasını, aynı işlev prototiplerini kullanarak OpenThread tarafında USB CDC sürücüsüyle (BSP ile birlikte) değiştirin
Radyo
API beyanı:
/openthread/include/openthread/platform/radio.h
Radyo API'si, ü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 spesifikasyonuna tam olarak uygun olmalıdır.
Gelişmiş düşük güç özelliği nedeniyle OpenThread, tüm platformların varsayılan olarak otomatik çerçeve bekleme (dolaylı aktarım) özelliğini uygulamasını gerektirir. Ayrıca, kaynak adres eşleşme tablosu da radio.h
kaynak dosyasında uygulanmalıdır.
Ancak yeni donanım platformu örneğiniz kaynak açısından sınırlıysa kaynak adres tablosu sıfır uzunlukta olarak tanımlanabilir. Daha fazla bilgi için Otomatik çerçeve beklemede bölümüne bakın.
Çeşitli/Sıfırla
API beyanı:
/openthread/include/openthread/platform/misc.h
Misc/Reset API, çipteki yazılımı sıfırlama 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 oluşturucu, OpenThread ağının tamamı için güvenlik öğelerini korumak amacıyla kullanılır. API, her işlev çağrısı için yeni bir rastgele sayı oluşturulmasını garanti etmelidir. TRNG'den etkilenen güvenlik öğeleri şunlardır:
- AES CCM tek seferlik rastgele sayı
- Rastgele gecikmeli jitter
- Cihazların genişletilmiş adresi
- Damlama zamanlayıcısındaki ilk rastgele dönem
- CoAP jetonu/mesaj kimlikleri
Birçok platformun, API'yi BSP paketinde sunarak rastgele sayı üreteci entegre ettiğini unutmayın. Hedef donanım platformu TRNG'yi desteklemiyorsa sabit uzunlukta rastgele sayı oluşturmak için ADC modülü örneklemesinden yararlanabilirsiniz. TRNG koşullarını (uint32_t) karşılamak için gerekirse birden fazla iterasyonda örnek alın.
MBEDTLS_ENTROPY_HARDWARE_ALT
makrosu 1
olarak ayarlandığında bu API, mbedTLS kitaplığında kullanılan donanım entropisi oluşturmak için bir yöntem de sağlamalıdır.
Geçici olmayan depolama alanı
API beyanları:
/openthread/include/openthread/platform/flash.h
veya
/openthread/include/openthread/platform/settings.h
Verileri kalıcı olarak depolama koşulu, 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 flash işlemi uygulaması için işlevler sağlar.
Bu API'ler üst katmana aşağıdakileri gösterir:
- Uygulama verilerini (ör. etkin/beklemedeki operasyonel veri kümesi, mevcut ağ parametreleri ve sıfırlamadan sonra yeniden bağlanmak için iplik cihazlarının kimlik bilgileri) depolamak için kullanılan, kalıcı olmayan depolama alanı boyutu
- Flash durumu işlemlerini okuma, yazma, silme ve sorgulama
Platform örneğinizin temel yapılandırma dosyasında, platformun hangi API'yi kullanacağını belirtmek için OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE
kullanın. 1
olarak ayarlanırsa Flash API uygulanmalıdır. Aksi takdirde 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, OpenThread'in günlük kaydı ve hata ayıklama işlevini uygular. Birden fazla hata ayıklama çıkışı seviyesi mevcuttur. Yeni donanım platformu örneğinizde OpenThread'in günlük kaydını kullanmayı planlamıyorsanız bu API isteğe bağlıdır.
En yüksek ve en ayrıntılı düzey OPENTHREAD_LOG_LEVEL_DEBG
'tür. Bu düzeyde tüm ham paket bilgileri yazdırılır ve seri bağlantı noktası veya terminal üzerinden satır günlükleri tutulur. İhtiyaçlarınıza en uygun hata ayıklama düzeyini seçin.
Sisteme özgü
API beyanı:
/openthread/examples/platforms/openthread-system.h
Sisteme özgü API, öncelikle seçilen donanım platformu için başlatma ve başlatma silme işlemlerini sağlar. Bu API, OpenThread kitaplığı tarafından çağrılmaz ancak sisteminiz/RTOS'unuz için yararlı olabilir. Bu kaynak dosyada diğer modüllerin (ör. 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ı bir örnek platformda kullanmak istiyorsanız bu API'yi uygulamanız gerekir. Aksi takdirde, örnek platform sürücülerini sisteminize/RTOS'unuza entegre etmek için herhangi bir API uygulanabilir.