Architecture du firmware MeshCore
Comprendre la structure interne: modules, composants, et abstractions hardware
Comment le firmware est structure
Le firmware MeshCore tourne sur plusieurs plateformes (selon support): ESP32, nRF52, STM32. Il doit gerer radio LoRa, interfaces, stockage, et logique applicative.
Une architecture modulaire facilite la maintenance: separer radio, routage, protocole, et UI/IO.
En France, le reseau est en structuration. Pour les devs, une bonne comprehension du firmware aide a produire des fixes utiles et testables.
Modules coeur
Vue simplifiee en 5 familles:
1. Module radio (driver LoRa)
Controle de la puce LoRa (ex: SX1262/SX127x): TX/RX, freq, power, interruptions.
2. Module routage
Decide quand relayer, comment limiter la propagation, et maintient des infos de voisinage/routes.
3. Module protocole
Encodage/decodage des paquets, types de messages, et chiffrement (selon modes).
4. Application
Logique "user": messages, GPS, telemetrie, node info, etc.
5. Interfaces
I/O: BLE, serial/CLI, ecran, boutons, stockage, etc.
Architecture systeme
Souvent event-driven:
Event loop
Boucle principale qui traite: radio RX, BLE events, timers, boutons, etc.
Radio en interruptions
La puce LoRa declenche une interruption sur reception. Le firmware met le paquet en queue pour traitement.
Design non-bloquant
Eviter les operations longues bloquantes. Utiliser taches/queues pour rester reactif.
HAL (Hardware Abstraction Layer)
Abstraire le hardware permet de supporter plusieurs plateformes:
GPIO abstraction
Boutons, LEDs, pins via une API commune.
SPI/I2C abstraction
Acces radio (SPI) et peripheriques (I2C/SPI) via fonctions de bas niveau.
Power management
Sleep, clock scaling, power gating selon plateforme.
File system
Stockage config et etat en flash via une API commune.
Benefices de cette approche
Modularite
Changer un module sans toucher tout le reste (idealement).
Multi-plateformes
Support hardware plus large si HAL est propre.
Extensible
Plugins/modules additionnels possibles (selon support).
Testable
Mieux isoler et tester des briques.
Performance
Event-driven et non-bloquant aident en embarque.
Open source
On peut auditer, comprendre, et contribuer.
FAQ
Langage du firmware ?
Souvent C/C++ en embarque. Les details dependent du repo et des plateformes supportees.
Memoire utilisee ?
Variable selon plateforme, options, et version. Verifiez les builds officiels si vous ciblez un board precis.
Puis-je ajouter un module ?
Oui si l architecture le permet. Gardez un design simple et testable.
Frequence des updates ?
Variable. Suivez la page GitHub Releases pour les versions stables.
Compatibilite ?
Le protocole vise la compatibilite selon versions, mais les details changent. Testez avec votre noyau local.
Comprendre pour mieux contribuer
Si vous voulez contribuer ou debug, comprendre les modules (radio/routing/protocol) est un bon point de depart.