MeshCore Firmware-Architektur
Technische Erklärung der MeshCore Firmware: Module, Komponenten und interne Architektur für Entwickler
MeshCore Firmware: Wie funktioniert sie?
Die MeshCore Firmware ist die Software, die auf ESP32, nRF52 und STM32 Chipsets läuft. Sie ist in C/C++ geschrieben und besteht aus mehreren modularen Komponenten, die zusammenarbeiten, um das Mesh-Netzwerk funktionieren zu lassen.
Die Firmware-Architektur ist mit Modularität und Hardware-Abstraktion im Sinn konzipiert. Dies ermöglicht es, dieselbe Codebasis für verschiedene Hardware-Plattformen ohne große Anpassungen zu verwenden.
Diese Seite erklärt, wie die Firmware intern strukturiert ist, welche Module es gibt und wie sie zusammenarbeiten.
Kern-Firmware-Module
Die MeshCore Firmware besteht aus 5 Hauptmodulen:
1. Radio-Modul (LoRa-Treiber)
Verwaltet den LoRa-Funkchip (SX1262, SX1276, etc.). Zuständig für Übertragung, Empfang, Frequency Hopping und Power Management.
2. Mesh-Routing-Modul
Implementiert den Mesh-Routing-Algorithmus. Bestimmt, welche Nachrichten weitergeleitet werden sollen, führt eine Nachbarliste und verwaltet die Routing-Tabelle.
3. Protokoll-Modul
Implementiert das MeshCore-Protokoll: Paket-Encoding/Decoding, Nachrichtentypen, Verschlüsselung/Entschlüsselung mit AES-256.
4. Anwendungs-Modul
Enthält die Anwendungslogik: Textnachrichten, GPS, Telemetrie, Node-Info. Das ist es, was der Benutzer sieht und verwendet.
5. Interface-Modul
Verwaltet die Kommunikation mit externen Schnittstellen: Bluetooth (Smartphone), Serial (CLI), Screen (OLED/TFT), Buttons.
System-Architektur
Die Module arbeiten in einer ereignisgesteuerten Architektur zusammen:
Event Loop
Die Firmware führt eine Haupt-Event-Loop aus, die kontinuierlich auf Events prüft: eingehendes Radio-Paket, Bluetooth-Nachricht, Button-Druck, Timer abgelaufen. Jedes Event triggert das entsprechende Modul.
Interrupt-gesteuertes Radio
Der LoRa-Chip triggert einen Hardware-Interrupt, wenn ein Paket empfangen wird. Das Radio-Modul platziert das Paket in einer Queue, die in der Event Loop verarbeitet wird.
Non-Blocking Design
Alle Operationen sind non-blocking. Lange Aufgaben (wie Verschlüsselung oder GPS-Fix) verwenden Background-Tasks oder werden in kleinere Schritte aufgeteilt, um die Event Loop reaktionsfähig zu halten.
Hardware Abstraction Layer (HAL)
Die HAL ermöglicht es, dieselbe Firmware auf verschiedener Hardware auszuführen:
GPIO-Abstraktion
Buttons, LEDs und andere GPIO-Pins werden über eine HAL-Schnittstelle angesteuert. Jede Hardware-Variante hat eine Config-Datei mit Pin-Mappings.
SPI/I2C-Abstraktion
Kommunikation mit LoRa-Chip (SPI) und Displays (I2C/SPI) erfolgt über HAL-Funktionen, die pro Plattform unterschiedlich implementiert sind.
Power Management
Deep Sleep, CPU-Frequenzskalierung und Peripheral Power Control sind plattformspezifisch und werden über HAL abstrahiert.
Dateisystem
Konfiguration und Nachrichten werden im Flash gespeichert. ESP32 verwendet LittleFS, nRF52 eine andere Implementierung, aber dieselbe HAL-API.
Vorteile dieser Architektur
Modularität
Module sind lose gekoppelt. Sie können das Routing-Modul aktualisieren, ohne das Radio-Modul zu beeinflussen.
Multi-Plattform
Dank HAL funktioniert dieselbe Codebasis auf ESP32, nRF52 und STM32.
Erweiterbarkeit
Neue Features können einfach als zusätzliche Module hinzugefügt werden.
Testbarkeit
Module können separat getestet werden. Unit-Tests pro Modul.
Performance
Ereignisgesteuertes und non-blocking Design sorgt für niedrige Latenz und gute Reaktionsfähigkeit.
Open Source
Die gesamte Firmware ist Open Source. Sie können den Code lesen, anpassen und beitragen.
Häufig gestellte Fragen
In welcher Programmiersprache ist die Firmware geschrieben?
Die MeshCore Firmware ist in C++ (für die meisten Module) und C (für Low-Level HAL) geschrieben. Sie verwendet das Arduino Framework für ESP32 und Nordic SDK für nRF52.
Wie viel Speicher verwendet die Firmware?
Auf ESP32 verwendet die Firmware ~200-300 KB Flash und ~40-60 KB RAM. Das lässt genug Platz für Nachrichtenspeicher und zukünftige Features.
Kann ich eigene Module hinzufügen?
Ja, die modulare Architektur macht es einfach, eigene Module hinzuzufügen. Zum Beispiel: ein zusätzliches Sensor-Modul, benutzerdefinierte Routing-Logik oder eine neue Schnittstelle.
Wie oft kommt ein Firmware-Update?
MeshCore wird aktiv entwickelt mit Releases alle 2-3 Monate. Bugfixes kommen schneller, neue Features in Major-Releases.
Ist die Firmware abwärtskompatibel?
Ja, das Protokoll ist innerhalb von Major-Versionen abwärtskompatibel. Ein v2.3 Node kann mit v2.1 Nodes kommunizieren. Bei einem Major-Update (v3.0) kann sich dies ändern.
Tauchen Sie ein in die MeshCore Firmware
Jetzt, da Sie die Firmware-Architektur verstehen, können Sie den Quellcode erkunden, zur Entwicklung beitragen oder eigene Modifikationen vornehmen.