Die Rust Embedded-Arbeitsgruppe, die gegründet wurde, um Technologien zur Verbesserung der Qualität und Sicherheit von Anwendungen, Firmware und Treibern für eingebettete Systeme zu entwickeln, hat die erste Version des embedded-hal-Frameworks veröffentlicht, das eine Reihe von Programmierschnittstellen für die Interaktion mit Peripheriegeräten bereitstellt, die üblicherweise mit Mikrokontrollern verwendet werden (z. B. werden Typen für die Arbeit mit GPIO, UART, SPI und I2C bereitgestellt). Die Arbeiten des Projekts sind in der Programmiersprache Rust verfasst und werden unter der Apache-Lizenz 2.0 vertrieben.
Das Paket eignet sich zur Entwicklung universeller Treiber in der Programmiersprache Rust für verschiedene Sensoren, Displays, Antriebe und Netzwerkadapter, die nicht an bestimmte Mikrokontrollermodelle gebunden sind, d. h. ein auf dem embedded_hal basierender Treiber kann mit beliebigen Mikrokontrollern verwendet werden, für die im Paket eine HAL-Schicht bereitgestellt wird. Das Paket bietet außerdem ein flexibles integriertes Fehlermanagementsystem – für jeden Fehlertyp gibt es einen Attributtyp Error, der Werkzeuge für Debugging und Nachverfolgung der Ursachen von Fehlern unterstützt.
Embedded-hal 1.0 wird als die erste stabile Version des Projekts angesehen, die zur Erstellung funktionsfähiger Treiber verwendet werden kann. Die Arbeiten zur Stabilisierung der API dauern seit 2020 an. Neben embedded-hal wurden auch stabile Versionen von Hilfspaketen wie embedded-hal-async mit Komponenten zur Erstellung asynchroner Handler und embedded-hal-nb mit der Implementierung eines Polling-Zustandsmodells erstellt. Zusätzlich wurden Pakete wie embedded-hal-bus mit Werkzeugen zur Arbeit mit den Bussen SPI und I2C, embedded-can mit Unterstützung für den CAN-Bus (Controller Area Network) und embedded-io mit Implementierungen von Typen für byteorientierte Ein- und Ausgabe, die für UART geeignet sind, angeboten.
Quelle: opennet.ru
