<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.
Indirekte Übertragung – übergeordneter Partner speichert Daten, bis sie vom vorgesehenen Endgerät angefordert werden.
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:
- Definieren Sie das
MBEDTLS_AES_ALT
-Makro im nutzerspezifischen mbedTLS-Element. Konfigurationsheaderdatei - Geben Sie den Pfad der Datei
aes_alt.h
mithilfe derMBEDTLS_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:
- Definieren Sie das
MBEDTLS_SHA256_ALT
-Makro im nutzerspezifischen mbedTLS-Element. Konfigurationsheaderdatei - Geben Sie den Pfad der Datei
sha256_alt.h
mithilfe derMBEDTLS_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.