Erweiterte Funktionen implementieren

<ph type="x-smartling-placeholder"></ph> Quelle auf GitHub ansehen

Einige erweiterte Funktionen sind optional, je nachdem, die auf der Zielhardwareplattform unterstützt wird.

Automatischer Bildausschnitt ausstehend

IEEE 802.15.4 definiert zwei Arten von Datenübertragungsmethoden zwischen übergeordnetem Kind: direkte Übertragung und indirekte Übertragung. Letzteres ist so konzipiert, vor allem für Sleepy End Devices, SEDs, die die meiste Zeit schlafen. Sie werden regelmäßig im Ruhemodus, um die übergeordneten Elemente nach Daten in der Warteschlange abzufragen.

  • Direkte Übertragung: Das übergeordnete Element sendet einen Dataframe direkt an das Endgerät. Direkte Übertragung

  • Indirekte Übertragung – übergeordneter Partner speichert Daten, bis sie vom vorgesehenen Endgerät angefordert werden. Direkte Übertragung

Im indirekten Fall muss ein untergeordnetes Endgerät zuerst das übergeordnete Endgerät abfragen, um festzustellen, ob Daten dafür verfügbar sind. Dazu sendet das Kind eine Daten- , die vom übergeordneten Element bestätigt wird. Das übergeordnete Element bestimmt dann, Daten für das Gerät des Kindes enthält; wird in diesem Fall ein Datenpaket an das untergeordnete Gerät, das den Empfang der Daten bestätigt.

Unterstützt das Radio das dynamische Einstellen des Bits "Frame Pending" (Frame steht aus) in ausgehenden Danksagung an die SEDs müssen Fahrer die Übereinstimmung mit Quelladresse um diese Funktion zu aktivieren. OpenThread verwendet diese API, um dem Radio mitzuteilen, SEDs, für die das Bit „Frame ausstehend“ gesetzt werden soll.

Wenn das Radio das dynamische Festlegen des Bits „Frame Pending“ (Ausstehender Frame) nicht unterstützt, wird der Radio kann die Quelladresse-Übereinstimmungs-API streuen, um die Daten zurückzugeben, OT_ERROR_NOT_IMPLEMENTED

Energy Scan/Detect mit Funk

Für die Funktion „Energiescan/Erkennung“ muss der Funkchip Energie erfassen Präsentation auf ausgewählten Kanälen und setzen den erkannten Energiewert auf den im oberen Layer.

Wenn diese Funktion nicht implementiert ist, ist die IEEE 802.15.4-MAC-Ebene sendet/empfängt ein Beacon-Anfrage-/Antwort-Paket, um den aktuellen auf dem Kanal zu erzielen.

Wenn der Funkchip „Energy Scan/Detect“ unterstützt, musst du die Software deaktivieren Energy-Scan-Logik durch Festlegen des Makros OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0

Hardwarebeschleunigung für mbedTLS

mbedTLS definiert mehrere Makros in der Header-Hauptdatei der Konfiguration. mbedtls-config.h, damit Nutzer alternative Implementierungen von AES, SHA1, SHA2 und andere Module sowie einzelne Funktionen für die elliptische Kurve Cryptography (ECC) über das GF(p)-Modul Weitere Informationen finden Sie unter mbedTLS Hardwarebeschleunigung .

OpenThread aktiviert diese Makros nicht, daher ist die symmetrische Verschlüsselung Algorithmen, Hash-Algorithmen und ECC-Funktionen Implementierung. Diese Implementierungen erfordern viel Arbeitsspeicher und Rechenressourcen. Für optimale Leistung und eine bessere Nutzererfahrung empfehlen wir die Hardwarebeschleunigung statt der Software, um die oben genannten Vorgänge zu implementieren.

Um die Hardwarebeschleunigung in OpenThread zu aktivieren, wird die folgende mbedTLS-Bibliothek Konfigurationsheaderdateien sollten der Kompilierung ot-config hinzugefügt werden Definitionen in den CMake-Dateien der Plattform:

  • Hauptkonfiguration, die alle erforderlichen Makros definiert, die in OpenThread verwendet werden: /openthread/third-party/mbedtls/mbedtls-config.h
  • Nutzerspezifische Konfiguration, die alternative Implementierungen von Module und Funktionen: src/platform-name-mbedtls-config.h

Beispiel aus nrf52811.cmake:

target_compile_definitions(ot-config INTERFACE
    "MBEDTLS_USER_CONFIG_FILE=\"nrf52811-mbedtls-config.h\""
)

Die in mbedtls-config.h kommentierten Makros sind nicht obligatorisch und können aktiviert werden in die nutzerspezifische Konfiguration des Headers zur Hardwarebeschleunigung.

Ein vollständiges Beispiel für eine nutzerspezifische Konfiguration finden Sie in der mbedtls_config_autogen.h in ot-efr32.

AES-Modul

OpenThread Security wendet AES CCM-Kryptografie (Zähler mit CBC-MAC) auf IEEE 802.15.4- oder MLE-Nachrichten verschlüsseln/entschlüsseln und die Nachricht validieren Integrationscode. Die Hardwarebeschleunigung sollte mindestens den einfachen AES-ECB unterstützen Modus (Electronic Codebook Book) für den einfachen Funktionsaufruf AES CCM.

So verwenden Sie eine alternative AES-Modulimplementierung:

  1. Definieren Sie das MBEDTLS_AES_ALT-Makro im nutzerspezifischen mbedTLS-Element. Konfigurationsheaderdatei
  2. Geben Sie den Pfad der Datei aes_alt.h mithilfe der MBEDTLS_CPPFLAGS an. Variable

SHA256-Modul

OpenThread Security wendet HMAC- und SHA256-Hash-Algorithmen an, um Hash-Wert für die Verwaltung von Netzwerkschlüsseln und die PSKc-Generierung gemäß Thread Spezifikation.

So verwenden Sie eine alternative grundlegende SHA256-Modulimplementierung:

  1. Definieren Sie das MBEDTLS_SHA256_ALT-Makro im nutzerspezifischen mbedTLS-Element. Konfigurationsheaderdatei
  2. Geben Sie den Pfad der Datei sha256_alt.h mithilfe der MBEDTLS_CPPFLAGS an. Variable

ECC-Funktionen

Da mbedTLS derzeit nur die Hardwarebeschleunigung für Teile des ECC unterstützt -Funktionen anstatt des gesamten Moduls, können Sie einige Funktionen definiert in path-to-mbedtls/library/ecp.c zur Beschleunigung des ECC der Punktmultiplikation.

Die Kurve secp256r1 wird im Schlüsselaustauschalgorithmus des ECJPAKE-Entwurf Daher Die Hardwarebeschleunigung sollte mindestens die Kurzform secp256r1 unterstützen Kurvenoperation. Siehe SiLabs CRYPTO-Hardwarebeschleunigung für mbedTLS finden Sie ein Beispiel.