Współczesne rozwiązania embedded, od trackerów IoT po zaawansowane przemysłowe systemy wbudowane, w coraz większym stopniu polegają na oprogramowaniu. Wprowadzenie funkcji umożliwiających aktualizację oprogramowania przez użytkownika po wyprodukowaniu urządzenia stało się standardem, który przynosi ogromne korzyści biznesowe i technologiczne. Dla producentów nowych urządzeń embedded wdrożenie odpowiednich mechanizmów aktualizacji może być decydującym czynnikiem przewagi konkurencyjnej.
Możliwość zdalnej naprawy oprogramowania znacząco zmniejsza ryzyko związane z dostarczeniem klientowi urządzenia z błędem w oprogramowaniu. Eliminuje to konieczność przeprowadzania akcji serwisowej lub wysyłania serwisanta do klienta. To znacząco redukuje koszty wsparcia technicznego i zwiększa satysfakcję użytkowników.
Na przykład wiele nowoczesnych urządzeń jest dostarczanych z aplikacją mobilną, która przeprowadza aktualizację oprogramowania podczas pierwszego uruchomienia urządzenia po wyjęciu z pudełka, tak zwanego provisioningu. Dzięki temu użytkownik od razu otrzymuje pełnowartościowy sprzęt z usuniętymi wszystkimi dotychczas znanymi błędami, pomimo że urządzenie mogło być wyprodukowane wiele miesięcy przed pierwszym użyciem.
Zdalne aktualizacje umożliwiają wprowadzanie nowych funkcjonalności do już wyprodukowanych i sprzedanych urządzeń, co może przyciągnąć nowych klientów lub zwiększyć zadowolenie obecnych użytkowników. To również doskonała okazja do sprzedaży płatnych aktualizacji i uzyskania dodatkowego źródła przychodów.
Dodatkowo, łatwa, szybka i wygodna ścieżka aktualizacji oprogramowania zachęca użytkowników do korzystania z najnowszej wersji. Nowe funkcjonalności oraz poprawa jakości istniejących funkcji również przekonują użytkowników do samodzielnego aktualizowania urządzeń. Dzięki temu większa część sprzętu działa na najnowszej, najbardziej dopracowanej wersji, co obniża koszty wsparcia i utrzymania starszych wersji.
Dzięki możliwości automatycznej aktualizacji zdalnej lub wykonywanej przez użytkownika możliwe jest zlecenie produkcji urządzeń bez konieczności ukończenia finalnej wersji oprogramowania. Wystarczy, że oprogramowanie będzie wystarczająco rozwinięte, aby umożliwić aktualizację do pożądanej wersji przed pierwszym użyciem przez użytkownika.
Proces produkcji i dystrybucji urządzeń zwykle trwa nawet kilka miesięcy, a w tradycyjnym podejściu te dwa kroki muszą odbywać się w odpowiedniej kolejności. Wykorzystanie możliwości przeprowadzenia aktualizacji po wyprodukowaniu urządzenia pozwala zrównoleglić cały proces. Zyskany czas można przeznaczyć na skrócenie czasu wprowadzenia produktu na rynek (time to market) lub na rozwój dodatkowych funkcjonalności.
Klasyczne podejście do wgrywania oprogramowania do pamięci mikrokontrolera polega na programowaniu z użyciem dedykowanego programatora. Takie rozwiązanie znajduje zastosowanie głównie na etapie produkcji oraz podczas developmentu. Zaletą tego podejścia jest również możliwość naprawienia urządzenia z uszkodzoną pamięcią, czyli tak zwanego "zbrickowanego".
Niestety, ze względu na konieczność użycia specjalistycznego sprzętu, metoda ta nie jest praktyczna, gdy operatorem ma być sam użytkownik. Dlatego w praktyce stosuje się inne, bardziej dostępne rozwiązania.
Jednym z najprostszych rozwiązań jest aktualizacja przewodowa, która zazwyczaj umożliwia przeprowadzenie procesu przez port szeregowy lub port USB. Dzięki temu użytkownik może wykonać operację z użyciem swojego własnego sprzętu. Czasami spotyka się również rozwiązanie wykorzystujące pamięci USB, takie jak pendrive.
Zaletą tego rodzaju rozwiązań jest niski dodatkowy koszt implementacji, szczególnie w sytuacjach, gdy urządzenie nie ma innego interfejsu komunikacyjnego, który mógłby zostać wykorzystany do aktualizacji. Jedynym narzędziem, jakiego potrzebuje użytkownik do przeprowadzenia aktualizacji, jest komputer z gniazdem USB.
Jeżeli urządzenie dysponuje łącznością bezprzewodową, można wykorzystać ten kanał komunikacji do przeprowadzenia aktualizacji oprogramowania. Zwykle jest to sposób najwygodniejszy dla użytkownika.
Dla urządzeń wyposażonych w Bluetooth dobrym rozwiązaniem jest dodanie funkcjonalności aktualizacji oprogramowania do towarzyszącej aplikacji mobilnej. Takie podejście daje duże możliwości poprawy doświadczenia użytkownika (UX). Aplikacja, nad którą kontrolę ma producent urządzenia, pozwala zautomatyzować proces pobierania najnowszej wersji oprogramowania z serwerów oraz umożliwia wygodne powiadamianie użytkownika o dostępności nowej aktualizacji. Pasek postępu, szacunkowy czas do zakończenia oraz zawartość marketingowa to dodatkowe elementy, które mogą wzbogacić aplikację mobilną.
Urządzenia bezpośrednio łączące się z internetem, np. poprzez WiFi, LTE, LoRa i inne, umożliwiają przeprowadzenie aktualizacji zupełnie automatycznie, bez udziału użytkownika. Jest to bardzo dobre rozwiązanie dla aplikacji działających w trudno dostępnych lub odległych miejscach, takich jak farmy wiatrowe czy stacje pogodowe.
Niektóre zaawansowane protokoły komunikacji bezprzewodowej umożliwiają przeprowadzenie bardzo ciekawych procedur aktualizacji urządzeń, które są do nich podłączone. Jednym z takich rozwiązań jest Bluetooth Mesh, w którym urządzenia przekazują nową wersję oprogramowania między sobą, bez konieczności łączenia się z centralnym urządzeniem. Dzięki temu nowe oprogramowanie może dotrzeć do każdego węzła w sieci, nawet tych znajdujących się poza bezpośrednim zasięgiem.
Proces zaczyna się od przesłania informacji o dostępnej aktualizacji, którą urządzenia sprawdzają pod kątem zgodności i potrzeby instalacji. Firmware jest następnie rozsyłany w małych fragmentach, które przemieszczają się przez całą sieć dzięki pośrednictwu innych urządzeń. Gdy wszystkie fragmenty dotrą do odbiorcy, oprogramowanie jest składane w całość, sprawdzane pod kątem poprawności i instalowane. Największym atutem takiego rozwiązania jest jego skalowalność. Dzięki propagacji przez całą sieć możliwe jest zaktualizowanie tysięcy urządzeń jednocześnie, bez obciążania jednego punktu.
DFU (Device Firmware Update) - Proces aktualizacji firmware'u urządzenia, który zazwyczaj odbywa się z pomocą bootloadera i umożliwia instalację nowego oprogramowania bez konieczności programowania urządzenia od podstaw.
OTA (Over-the-Air) - Aktualizacja oprogramowania urządzenia przez sieć bezprzewodową, bez konieczności fizycznego podłączenia, np. przez Wi-Fi, Bluetooth lub sieci komórkowe.
OTAU (Over-the-Air Update) - Rozszerzenie pojęcia OTA, podkreślające, że chodzi o pełny proces aktualizacji oprogramowania, od przesłania nowej wersji do instalacji na urządzeniu.
FOTA (Firmware Over-the-Air) - Specyficzny rodzaj OTA, dotyczący wyłącznie firmware'u - podstawowego oprogramowania kontrolującego działanie sprzętu.
Zasada działania aktualizacji oprogramowania jest podobna dla wszystkich mikrokontrolerów, które umożliwiają uruchamianie jedynie aplikacji bare-metal lub systemu RTOS. Przykładowymi rodzinami takich urządzeń są: Nordic nRF, STM32, ESP32 i inne. Ze względu na brak systemu operacyjnego, odpowiedzialność za przeprowadzenie procesu bezpośrednio w pamięci urządzenia spoczywa na programiście.
Do przeprowadzenia aktualizacji firmware'u niezbędny jest bootloader. Jest to specjalny program, który uruchamia się podczas startu urządzenia, a następnie inicjuje właściwą aplikację. Bootloader jest osobną aplikacją przechowywaną w pamięci urządzenia.
Zazwyczaj bootloader nie może zostać zaktualizowany, ponieważ po zapisaniu na urządzeniu przez producenta staje się niezmienialny. Dzięki tej właściwości można w nim bezpiecznie przechowywać klucze kryptograficzne. Bootloader może być wykorzystywany do weryfikacji podpisu cyfrowego aplikacji za pomocą kryptografii klucza publicznego.
Podpis cyfrowy służy do weryfikacji pochodzenia aplikacji na urządzeniu. Aby umożliwić aktualizację z podpisem cyfrowym, producent generuje klucz prywatny, z którego powstaje powiązany klucz publiczny. Podczas produkcji klucz publiczny jest wgrywany do bootloadera, natomiast aktualizacje są podpisywane kluczem prywatnym. Gdy urządzenie otrzyma aktualizację, bootloader może zweryfikować jej autentyczność, sprawdzając zgodność podpisu z kluczem publicznym zapisanym w urządzeniu. Takie zabezpieczenie jest kluczowe ze względu na ryzyko podmiany aplikacji podczas procesu aktualizacji.
Bootloader może oferować również inne zabezpieczenia, np. uniemożliwiać uruchomienie starszej wersji oprogramowania niż obecnie zainstalowana na urządzeniu.
W przypadku nieplanowanego przerwania aktualizacji podczas jej trwania lub omyłkowego wgrania nieprawidłowego obrazu aplikacji, może dojść do zablokowania urządzenia, uniemożliwiając odbiór kolejnego obrazu. Aby zapewnić niezawodność procesu oraz umożliwić pobieranie aktualizacji firmware'u podczas działania aplikacji, pamięć urządzenia jest dzielona na sloty, w których przechowywane są aktualny i nowy obraz aplikacji. Jeżeli po pobraniu aplikacji okaże się, że podpis jest nieprawidłowy, obraz jest uszkodzony lub aplikacja nie uruchamia się, wciąż możliwy jest powrót do poprzedniego obrazu.
Zastosowanie mechanizmu z dwoma slotami powoduje, że ilość pamięci dostępnej na aplikację w urządzeniu spada o połowę. Jeśli okaże się, że ilość dostępnej pamięci jest zbyt mała, możliwe jest zastosowanie kompresji jednego z obrazów lub dynamicznego partycjonowania pamięci urządzenia. W przypadku, gdy cała pamięć mikrokontrolera musi zostać wykorzystana na aplikację, możliwe jest również przechowywanie nowego obrazu w zewnętrznej pamięci FLASH.
Różne konfiguracje procesu umożliwiają przeprowadzenie aktualizacji w skomplikowanych przypadkach. Możliwe jest odebranie aktualizacji dla innych mikrokontrolerów poprzez wybrany kanał za pośrednictwem głównego mikrokontrolera. Obrazy mogą być również wykorzystywane do aktualizacji modemu lub kodeka audio, a także mogą zawierać inne dane, np. informacje dotyczące tłumaczenia aplikacji.
Jeżeli urządzenie nie ma możliwości pobrania aktualizacji bezpośrednio z internetu, ale jest wyposażone w Bluetooth, możliwe jest przeprowadzenie bezprzewodowej aktualizacji firmware'u za pomocą aplikacji mobilnej producenta urządzenia. W aplikacji mogą zostać zaimplementowane różne dodatkowe funkcjonalności wspomagające użytkownika, takie jak automatyczne pobieranie aktualizacji i powiadomienia. Możliwe jest również uzależnienie możliwości aktualizacji od rozliczenia z użytkownikiem.
Aktualizacja jest możliwa zarówno z urządzeń z Androidem, jak i ze sprzętu Apple. Pomimo że obie platformy wymagają osobnej implementacji, zazwyczaj nie jest konieczne tworzenie osobnych aplikacji na iOS i Androida. Możliwe jest stworzenie aplikacji hybrydowej, w której większość kodu będzie współdzielona między platformami. Przykładami technologii aplikacji hybrydowych są Flutter i React Native.
Część aplikacji, która działa na serwerze producenta urządzenia to backend. Kolejne wersje oprogramowania muszą być udostępniane online. Możliwe jest również zbieranie statystyk dotyczących procesu aktualizacji wszystkich wyprodukowanych urządzeń. Jeżeli do przeprowadzenia aktualizacji niezbędna jest autoryzacja użytkownika, backend odpowiada również za przechowywanie danych kont użytkowników oraz rozliczenia.
Infrastruktura, na której działa aplikacja serwerowa, może być utrzymywana jako fizyczny serwer w siedzibie producenta lub na wirtualnym serwerze u dowolnego dostawcy usług chmurowych. Oznacza to, że w zależności od potrzeb możliwe jest tanie utrzymywanie niewielkiego serwera lub szybkie skalowanie rozwiązania do całego klastra w przypadku konieczności obsługi bardzo dużego ruchu.
Wykonywanie zdalnych aktualizacji oprogramowania wymaga szczególnej uwagi od zespołu developerskiego. Podjęcie decyzji o wysłaniu aktualizacji do użytkownika wiąże się z koniecznością przetestowania, czy aktualizacja nie pogorszy działania docelowego urządzenia. Niezbędne jest również przeprowadzenie wielu innych powtarzalnych czynności, takich jak udostępnienie nowego obrazu aplikacji.
Aby zapobiec błędom i obniżyć koszty przeprowadzania aktualizacji, konfigurujemy system Continuous Integration i Continuous Delivery (CI/CD). Zbiór skryptów automatyzujących różne zadania, testy automatyczne oraz odpowiednia organizacja pracy zapewniają, że aplikacja działa poprawnie po każdej aktualizacji i umożliwiają częste wydawanie kolejnych wersji oprogramowania.
Specjalizujemy się w budowaniu rozwiązań mobilnych i embedded, które pokrywają cały zakres zaawanasowanych projektów. Dzięki kompleksowemu podejściu i opracowaniu całego stosu technologicznego do standardowego podejścia "fullstack" udało nam się dopisać rozwiązania embedded. Nie tracimy czasu na komunikację pomiędzy zespołami, a każdy element systemu powstaje z uzględnieniem wszystkich innych.
Z nami skonsultujesz cały projekt od wyboru mikrokontrolera do wdrożenia backendu u dostawcy rozwiązań chmurowych typu AWS, a implementacją będzie zajmował się zgrany zespół specjalistów nastawiony na optymalizację procesu.
W Blues Brackets zajmujemy się rozwiązywaniem prawdziwych problemów za pomocą najnowszych technologii.
Agile Software Development Polska
Usługi tworzenia oprogramowania metodą Agile
Usługi Tworzenia Chatbotów AI
Animowane Strony Internetowe | Profesjonalne Usługi
Eksperci w Embedded Android i Bluetooth
Aplikacje webowe vs desktopowe | bluesBrackets
Aplikacje webowe czy mobilne? Fullstack & UX/UI
Ekspercka firma tworząca aplikacje iOS w Polsce
Tworzenie oprogramowania medycznego
Aplikacje mobilne dla biznesu | bluesBrackets
Profesjonalny rozwój projektów Arduino
Polski Software House | UI/UX, Fullstack, Mobile, IoT
Automatyczne testy regresji i kompleksowy development
Dedykowane oprogramowanie na zamówienie
Body leasing React Native i embedded
Rozwój aplikacji cross-platform (wieloplatformowych)
Nowoczesny software house: Dyrektor IT jako usługa (CTO as a Service), DevOps, UX/UI
DevOps jako Usługa | Doradztwo AWS Cloud
Polski Software House: Agile & UI/UX
Tworzenie oprogramowania zgodnego z EAA
Edge Computer Vision i Embedded | bluesBrackets
Skalowalne aplikacje desktopowe i embedded – bluesBrackets
Firma konsultingowa DevOps | bluesBrackets
Rozwiązania AI szyte na miarę dla biznesu
Migracje Data Center i IT – Bezpieczne Usługi
Konsulting migracji do chmury – bluesBrackets
Tworzenie aplikacji Flutter | bluesBrackets
Usługi Rozwoju Aplikacji Flutter
Outsourcing IT i AI dla branży medycznej
Usługi tworzenia aplikacji hybrydowych
Integracje systemów i wdrożenia ChatGPT
Bezpieczne testy systemowe i integracja
Usługi integracji systemów IT
Oprogramowanie IoT i Smart City | bluesBrackets
Usługi inżynierii oprogramowania embedded | bluesBrackets
Tworzenie oprogramowania IoT dla przemysłu
IoT MQTT Dashboardy i rozwiązania embedded
IIoT i Przemysł 4.0 – oprogramowanie na miarę
Polski Software House | Rozwiązania IoT i Embedded
Tworzenie produktów IoT | Embedded & Fullstack Software House
Rozwój IoT i Wearable | bluesBrackets
Oprogramowanie IoT dla handlu, wearables, nieruchomości
Platforma zarządzania IoT i dedykowane rozwiązania
Usługi backend i JavaScript | bluesBrackets
Konsultacje Machine Learning i Rozwój Oprogramowania | UI/UX, Fullstack, Mobile, Embedded
Koszty wdrożenia i rozwoju sklepu online
Eksperckie rozwiązania embedded i mikrokontrolerów
Ekspercka migracja oprogramowania | bluesBrackets
Mikroserwisy czy Monolit: Ekspercka Architektura
Modernizacja aplikacji legacy dla firm
Usługi rozwoju MVP | Firma tworząca MVP dla startupów
Dedykowane MVP i oprogramowanie szyte na miarę
Tworzenie MVP oprogramowania | Wdrażanie MVP i POC
Eksperci IoT i Embedded | bluesBrackets
NB-IoT, systemy wbudowane i zwinne IT
IT Nearshoring i rozwój oprogramowania Polska
Usługi Next.js i WordPress
Dedykowane CMS i oprogramowanie na miarę
Tworzenie dedykowanych aplikacji webowych | bluesBrackets
Aplikacje webowe & AI szyte na miarę
Systemy Zarządzania i Oprogramowanie AI
Node.js, React i Next.js Polska – bluesBrackets
Firma Node.js – zaufane usługi i rozwój
Rozliczenie ryczałtowe czy T&M – co wybrać?
Business Intelligence dla firm | bluesBrackets
Tworzenie oprogramowania dla branży turystycznej
Tworzenie oprogramowania dla nieruchomości
Profesjonalne prototypowanie oprogramowania
Dedykowane rozwiązania IT dla firm i startupów
Outsourcing inżynierii oprogramowania Polska
Outsourcing Python – Polska firma offshore
Firma outsourcingowa IT — Polska
Polska firma outsourcingu IT
Eksperci embedded i bare metal | bluesBrackets
Zaufana firma offshore software development w Polsce
Ekspercka firma projektowa sprzętu | Własna elektronika
Usługi Proof of Concept i Proof of Principle
Proof of Concept a Prototyp – Agile Software
Tworzenie aplikacji webowych ReactJS
Rozszerzanie zespołów IT dla startupów i firm
Kompleksowe rozwiązania IT | Software House Polska
Języki i usługi tworzenia aplikacji mobilnych
Tworzenie aplikacji mobilnych na Androida i iOS
Usługi Rozwoju Aplikacji React
Rozwój produktów IoT i dedykowane oprogramowanie
Oprogramowanie Embedded i IoT | bluesBrackets
Agencja wdrożeń LLM | bluesBrackets
Tworzenie progresywnych aplikacji webowych | bluesBrackets Polska
Eksperckie usługi hardware | bluesBrackets
Usługi rozwoju systemów wbudowanych
Rozwiązania embedded z RTOS
Rozwój oprogramowania SaaS: chmura zgodna z RODO
saas_chmurowe_rozwi
Rozwój oprogramowania SaaS: chmura zgodna z RODO
Skalowanie aplikacji dla startupów — rozwiązania skalowalne
Oprogramowanie SLA & usługi zarządzane Polska
Firmy programistyczne | Rozwiązania na miarę
Software House Polska | Tworzenie Aplikacji i Systemów Wbudowanych
Expert Software Migration Services | bluesBrackets
Specjalistyczne usługi inżynierii oprogramowania
Rozwój aplikacji dla sportu i ochrony zdrowia
Staff Augmentation | Rozszerzenie zespołu IT
Modernizacja systemów IT i dedykowane oprogramowanie
Rozwiązania IT dla magazynowania energii i IoT
Usługi testowania jakości | bluesBrackets
Testy i integracja systemów IT end-to-end
Tworzenie aplikacji PWA | iOS i Android
Tworzenie PWA na iOS – Aplikacje mobilne
Uczenie maszynowe w analizie predykcyjnej
Rozwiązania ML dla łańcucha dostaw
Dedykowane usługi IT i outsourcing w Polsce
Rozwiązania AI Chatbot dla Firm
Usługi inżynierii danych i wizualizacji
Dedykowane usługi IT na żądanie | bluesBrackets
Rozwój aplikacji chmurowych | Polska firma IT
Usługi rozwoju IoT | Internet rzeczy IoT
Usługi rozwoju oprogramowania | bluesBrackets
Usługi tworzenia oprogramowania na zamówienie — bluesBrackets
Zdalne wsparcie IT i utrzymanie aplikacji
Utrzymanie oprogramowania i modernizacja | bluesBrackets
Profesjonalne usługi UX/UI design
Staff augmentation czy usługi zarządzane?
Warsztaty Product Discovery dla startupów i firm
Usługi chmury i transformacji cyfrowej
Usługi tworzenia aplikacji webowych od bluesBrackets
Eksperci white label dla aplikacji i IoT
Dedykowane systemy do zarządzania projektami
Liderzy Java w Polsce – zatrudnij ekspertów
Zatrudnij dedykowany zespół IT w Polsce
Zatrudnij dedykowany zespół IT w Polsce
Dedykowane zespoły programistyczne w Europie