Czy są jakieś gotowe usługi w chmurze lub ramy do aktualizacji oprogramowania układowego drogą bezprzewodową?

9

Mam prototyp ograniczonego zasobu urządzenia (8-bitowy MCU z oprogramowaniem wewnętrznym bez systemu operacyjnego), współdziałającego z serwerem WWW. Zastanawiam się, czy istnieją jakieś rozwiązania, frameworki lub usługi w chmurze do aktualizacji oprogramowania układowego mojego urządzenia z Internetu. Z moich badań wynika, że ​​Microsoft IoT Hub, ale obawiam się, że to nie pasuje do urządzeń o ograniczonych zasobach. Znalazłem jeszcze jedno rozwiązanie - portal mbed Cloud, ale nie jestem pewien, jak to działa. Czy ktoś może mi pomóc za pośrednictwem jakiejkolwiek porady, może istnieją pewne najlepsze praktyki dotyczące wdrażania aktualizacji oprogramowania układowego bezprzewodowo dla urządzeń wbudowanych w bezpieczny i niezawodny sposób?

Vadimchik
źródło
Obecnie nie ma takich usług. Implementacja jednego z nich jest bardzo żmudna, można zaimplementować usługi ukierunkowane na określony typ urządzenia.
brawokeyl
Istnieje mender.io , który jest w przybliżeniu tym, czego chcesz. Uważam jednak, że jest przeznaczony dla urządzeń wbudowanych „high end” i dla 8-bitowych węzłów.
mat

Odpowiedzi:

4

Odpowiem tylko na tę część, ponieważ nie znam systemu „out of the box” dla nieznanego firwmare.

może istnieją jakieś najlepsze praktyki wdrażania bezprzewodowego uaktualnienia oprogramowania dla urządzeń wbudowanych w bezpieczny i solidny sposób?

W ramach praktyki postąpiłbym następująco:

1) Mają bardzo minimalny moduł ładujący, coś tak głupiego, jak to tylko możliwe, odpowiedzialne tylko za załadowanie oprogramowania układowego z następującymi ograniczeniami:

  • Możliwość rejestrowania ostatniego sukcesu / niepowodzenia ostatniego rozruchu (w przypadku awarii można przywrócić do działającej wersji)
  • Jakiś awaryjny proces akceptacji nowego oprogramowania układowego w przypadku katastrofalnej awarii (opcjonalnie, można go uniknąć, jeśli dopuszczalne jest urządzenie „zamurowane”)

2) Ustaw pamięć masową tak, aby miała dwa „banki rozruchowe” o rozsądnej wielkości do obsługi przyszłej ewolucji i rozwoju oprogramowania układowego.

3) Suma kontrolna obrazu oprogramowania układowego po pobraniu, aby upewnić się, że jest poprawna przed nagraniem, suma kontrolna banku docelowego po nagraniu, aby upewnić się, że gdzieś nie zabraknie rozruchu z powodu brakującego bitu.

Punkt przeoczony jest zazwyczaj sumą kontrolną pobranego obrazu przed i po nagraniu, co powoduje uszkodzenie systemu zapisanego na urządzeniu. Korzystanie z dwóch banków i naprzemienne zwykle ułatwiają proces aktualizacji.

Tensibai
źródło
5

mbed cloud oferuje pełną funkcjonalność aktualizacji oprogramowania, ale myślę, że miałbyś problemy z przeniesieniem go na platformę, jeśli pracujesz bez systemu operacyjnego. Nie sądzę, że źródło jest dzisiaj otwarte, więc nie możesz nawet użyć go w celach informacyjnych. Nie jestem też pewien, jakie są teraz kryteria uzyskania dostępu.

Musisz pomyśleć o potrzebnych funkcjach - czy jest to wdrożenie na dużą skalę, w którym musisz mieć możliwość wdrażania etapowego wdrażania oprogramowania układowego, zależy ci na podpisaniu oprogramowania układowego, czy też Twoja platforma jest całkowicie otwarta dla każdego, kto ma fizyczny dostęp? Jak bardzo zależy Ci na możliwości odzyskania zamurowanego urządzenia bez JTAG?

Realistycznie, funkcje takie jak aktualizacje OTA są prawdopodobnie czymś, co decyduje o wyborze systemu operacyjnego i urządzenia - po uwzględnieniu kosztów rozwoju.

Sean Houlihane
źródło
5

Sprawdź OTA, które jest skrótem Over The Air. Arduino ma tę właściwość .

Możesz dokonać aktualizacji za pomocą Arduino IDE, przeglądarki internetowej lub serwera HTTP.

Opcja Arduino IDE przeznaczona jest przede wszystkim do fazy tworzenia oprogramowania. Dwie pozostałe opcje byłyby bardziej przydatne po wdrożeniu, aby zapewnić modułowi aktualizacje aplikacji ręcznie za pomocą przeglądarki internetowej lub automatycznie przy użyciu serwera http.

mico
źródło
Jedną z najbardziej nieprzyjemnych rzeczy w tej bibliotece i Arduino w ogóle jest brak bezpieczeństwa. To rozwiązanie nadaje się do majsterkowania lub projektów szkolnych, ale nie do urządzeń komercyjnych. Szczególną rzeczą, która mi się nie podoba, jest brak uwierzytelnienia: nie jest chroniony przed zastąpieniem oprogramowania układowego złośliwym, mając poprawne podsumowanie MD5.
Vadimchik,
4

Możesz rzucić okiem na Particle (IoT) . Nie jestem pewien, czy obsługują Arduino, ale same oferują kilka tanich wbudowanych płyt.

Jeroen Jacobs
źródło
3

Kolejną interesującą platformą, którą odkryłem, jest DeviceDrive . Oto wideo wyjaśniające, jak to działa. Ich system OTA wydaje się dość elastyczny.

Vadimchik
źródło