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?
źródło
Odpowiedzi:
Odpowiem tylko na tę część, ponieważ nie znam systemu „out of the box” dla nieznanego firwmare.
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:
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.
źródło
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.
źródło
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.
źródło
Możesz rzucić okiem na Particle (IoT) . Nie jestem pewien, czy obsługują Arduino, ale same oferują kilka tanich wbudowanych płyt.
źródło
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.
źródło