MeshCore architektura oprogramowania sprzętowego
Techniczne wyjaśnienie oprogramowania sprzętowego MeshCore: moduły, komponenty i architektura wewnętrzna dla programistów
MeshCore oprogramowanie sprzętowe: jak to działa?
Oprogramowanie sprzętowe MeshCore to oprogramowanie działające na chipsetach ESP32, nRF52 i STM32. Jest napisany w języku C/C++ i składa się z wielu modułowych komponentów, które współpracują ze sobą, aby zapewnić funkcjonowanie sieci kratowej.
Architektura oprogramowania sprzętowego została zaprojektowana z myślą o modularności i abstrakcji sprzętu. Dzięki temu możliwe jest użycie tej samej bazy kodu dla różnych platform sprzętowych bez większych dostosowań.
Na tej stronie wyjaśniono wewnętrzną strukturę oprogramowania sprzętowego, dostępne moduły i sposób ich współpracy.
Podstawowe moduły oprogramowania sprzętowego
Oprogramowanie MeshCore składa się z 5 głównych modułów:
1. Moduł radiowy (sterownik LoRa)
Zarządza układem radiowym LoRa (SX1262, SX1276 itp.). Zapewnia transmisję, odbiór, przeskakiwanie częstotliwości i zarządzanie energią.
2. Moduł routingu siatki
Implementuje algorytm routingu siatki. Określa, które komunikaty mają być przekazywane dalej, utrzymuje listę sąsiadów i zarządza tablicą routingu.
3. Moduł protokołu
Implementuje protokół MeshCore: kodowanie/dekodowanie pakietów, typy wiadomości, szyfrowanie/deszyfrowanie za pomocą AES-256.
4.Moduł aplikacji
Zawiera logikę aplikacji: wiadomości tekstowe, GPS, telemetrię, informacje o węźle. To właśnie widzi i wykorzystuje użytkownik.
5. Moduł interfejsu
Zarządza komunikacją z interfejsami zewnętrznymi: Bluetooth (smartfon), Szeregowy (CLI), Ekran (OLED/TFT), Przyciski.
Architektura systemu
Moduły współpracują ze sobą w architekturze sterowanej zdarzeniami:
Bieg wydarzenia
Oprogramowanie sprzętowe uruchamia główną pętlę zdarzeń, która stale sprawdza zdarzenia: przychodzący pakiet radiowy, komunikat Bluetooth, naciśnięcie przycisku, upłynął czas timera. Każde zdarzenie wyzwala odpowiedni moduł.
Radio sterowane przerwaniami
Układ LoRa wyzwala przerwanie sprzętowe po odebraniu pakietu. Moduł radiowy umieszcza pakiet w kolejce, która jest przetwarzana w pętli zdarzeń.
Konstrukcja nieblokująca
Wszystkie operacje nie blokują się. Długie zadania (takie jak szyfrowanie lub poprawka GPS) wykorzystują zadania w tle lub są podzielone na mniejsze kroki, aby zapewnić responsywność pętli zdarzeń.
Warstwa abstrakcji sprzętu (HAL)
HAL umożliwia uruchamianie tego samego oprogramowania sprzętowego na różnych urządzeniach:
Abstrakcja GPIO
Sterowanie przyciskami, diodami LED i innymi pinami GPIO odbywa się za pośrednictwem interfejsu HAL. Każdy wariant sprzętu posiada plik konfiguracyjny z mapowaniem pinów.
Abstrakcja SPI/I2C
Komunikacja z układem LoRa (SPI) i wyświetlaczami (I2C/SPI) odbywa się za pośrednictwem funkcji HAL, które są implementowane w różny sposób w zależności od platformy.
Zarządzanie energią
Głębokie uśpienie, skalowanie częstotliwości procesora i kontrola mocy peryferyjnej są specyficzne dla platformy i są pobierane przez HAL.
System plików
Konfiguracja i komunikaty są przechowywane w pamięci flash. ESP32 używa LittleFS, nRF52 używa innej implementacji, ale tej samej HAL API.
Zalety tej architektury
Modułowość
Moduły są luźno połączone. Możesz zaktualizować moduł routingu bez dotykania modułu radiowego.
Wiele platform
Dzięki HAL ten sam kod działa na ESP32, nRF52 i STM32.
Rozszerzalność
Nowe funkcje można łatwo dodać jako dodatkowe moduły.
Testowalność
Moduły można testować indywidualnie. Testy jednostkowe na moduł.
Wydajność
Konstrukcja sterowana zdarzeniami i nieblokująca zapewnia małe opóźnienia i dobrą responsywność.
Często zadawane pytania
W jakim języku programowania jest napisane oprogramowanie sprzętowe?
Oprogramowanie sprzętowe MeshCore jest napisane w C++ (dla większości modułów) i C (dla niskopoziomowego HAL). Wykorzystuje framework Arduino dla ESP32 i Nordic SDK dla nRF52.
Ile pamięci zużywa oprogramowanie sprzętowe?
W dniu ESP32 oprogramowanie sprzętowe wykorzystuje ~200-300 KB pamięci flash i ~40-60 KB pamięci RAM. Pozostawia to dużo miejsca na przechowywanie wiadomości i przyszłe funkcje.
Czy mogę dodać własne moduły?
Tak, architektura modułowa ułatwia dodawanie własnych modułów. Na przykład: dodatkowy moduł czujnika, niestandardowa logika routingu lub nowy interfejs.
Jak często następuje aktualizacja oprogramowania sprzętowego?
MeshCore aktywnie się rozwija, wydając co 2-3 miesiące. Poprawki błędów pojawiają się szybciej, nowe funkcje w głównych wersjach.
Czy oprogramowanie jest kompatybilne wstecz?
Tak, protokół jest wstecznie kompatybilny w głównych wersjach. Węzeł w wersji 2.3 może komunikować się z węzłami w wersji 2.1. Może się to zmienić wraz z większą aktualizacją (v3.0).
Zanurz się w oprogramowaniu sprzętowym MeshCore
Teraz, gdy znasz już architekturę oprogramowania sprzętowego, możesz zapoznać się z kodem źródłowym, przyczynić się do rozwoju lub wprowadzić własne modyfikacje.