Automatisches Zurückspulen für tägliche NuttX-Tests

2025-02-08
Automatisches Zurückspulen für tägliche NuttX-Tests

Um Fehler in Apache NuttX RTOS frühzeitig zu erkennen und zu beheben, wurde ein automatisiertes Rückspul-Testsystem entwickelt. Dieses System baut und testet NuttX täglich. Schlägt ein Test fehl, spult es zu vorherigen Commits zurück, baut diese neu und testet sie erneut, bis der fehlerhafte Commit gefunden ist. Anschließend wird eine Mastodon-Benachrichtigung und eine höfliche Mitteilung an den entsprechenden NuttX-Entwickler gesendet. GitLab-Snippets und eine Prometheus-Datenbank verfolgen und analysieren die Ergebnisse, die in einem NuttX-Dashboard mit dem Build-Verlauf visualisiert werden.

Mehr lesen
Entwicklung Automatisierte Tests

Rust Standardbibliothek auf Apache NuttX RTOS: LED-Blinken und mehr

2025-01-27
Rust Standardbibliothek auf Apache NuttX RTOS: LED-Blinken und mehr

Dieser Artikel beschreibt die Erstellung von Anwendungen mit der Rust-Standardbibliothek auf dem Echtzeitbetriebssystem Apache NuttX. Er behandelt die JSON-Verarbeitung mit Serde, asynchrone Funktionen mit Tokio und die LED-Steuerung mit dem Nix-Krate. Der Autor erklärt den Unterschied zwischen eigenen und rohen Dateideskriptoren in Rust und vergleicht die POSIX-Bindungskrates Nix und Rustix. Detaillierte Schritte zum Erstellen und Ausführen von Rust-Anwendungen auf NuttX sowie Tipps zur Fehlerbehebung werden bereitgestellt.

Mehr lesen
Entwicklung

Behebung eines heimtückischen uname-Bugs in Apache NuttX RTOS: Statische Variablen schlagen zurück

2025-01-21
Behebung eines heimtückischen uname-Bugs in Apache NuttX RTOS: Statische Variablen schlagen zurück

Dieser Beitrag beschreibt die Fehlersuche bei einem scheinbar kleinen Bug im uname-Befehl von Apache NuttX RTOS. Das ursprüngliche Problem: Der Commit-Hash fehlte in der Ausgabe. Die Untersuchung führte zu einer tiefgehenden Analyse, einschließlich der Inspektion des Kernel-Images, des Aufrufs von uname beim Kernel-Start und der Disassemblierung der Anwendung. Der Übeltäter? Eine beschädigte statische Variable (g_version), die für die Speicherung des Commit-Hashes in NuttX-Anwendungen verantwortlich ist. Dieses unerwartete Verhalten unterstreicht die Bedeutung eines gründlichen Debuggens in Embedded-Systemen und betont, dass selbst kleine Anomalien auf tiefere, schwerwiegendere Probleme hinweisen können.

Mehr lesen
Entwicklung Bugfix