To dziwne, że tak wiele osób wydaje się mieć tak wiele problemów. Zaktualizowałem swój model Sorento 2021 do pierwszej wersji oprogramowania, która została wydana, bez żadnych problemów, a następnie pobrałem i zainstalowałem zaktualizowaną wersję, która pojawiła się kilka dni później. Jak dotąd nie wydaje się być żadnych problemów.
Myślę, że przekonasz się, że pod względem aktualizacji oprogramowania jest to zazwyczaj tak: pierwsza ścieżka aktualizacji testowana przez programistów wykorzystuje najnowszą wersję na najnowszym sprzęcie: dzieje się tak dlatego, że priorytetem jest upewnienie się, że wszystkie samochody schodzące z linii produkcyjnej mogą być aktualizowane bez powodowania problemów dla pierwszego klienta.
Niestety, przetestowanie wszystkich innych możliwych ścieżek aktualizacji oznacza więcej czasu i wysiłku, a kolejność jest oparta na kryteriach takich jak: sprzedane jednostki, jak aktualne były aktualizacje sprzętu i wiele innych.
W idealnym świecie powinieneś mieć możliwość aktualizacji i obniżania wersji: z jakiegokolwiek powodu Kia zdecydowała się nie zezwalać na obniżanie wersji.
Może być wiele powodów, a spekulacje zaprowadzą w dół króliczej nory.
Firma, dla której wcześniej pracowałem, produkowała urządzenia bezprzewodowe, które działały na niestandardowym sprzęcie, a obniżanie wersji, choć teoretycznie zawsze możliwe, było dozwolone tylko przy użyciu specjalnego klucza, który nie był udostępniany klientom i wymagał albo zwrotu do nas, albo bezpośredniego bezpiecznego połączenia sieciowego (jeśli w ogóle było to jeszcze opcją w tym momencie).
Jednym z powodów było to, że aktualizacja oprogramowania układowego zmieniłaby wewnętrzny schemat bazy danych: proste obniżenie wersji wymagałoby w najlepszym razie przywrócenia ustawień fabrycznych, aby zapewnić spójność danych ze starym schematem, a w najgorszym przypadku utratę danych, która spowodowałaby wtedy znacznie większe problemy zarówno dla klienta, jak i dla nas.
Alternatywą, z której niektórzy klienci korzystali, była, jak wspomniałem w innym wątku, redundancja: poprosilibyśmy klienta o zakup dodatkowego urządzenia, które działałoby w tym samym czasie co urządzenie główne, ale z wyłączonym modułem radiowym. W przypadku, gdy aktualizacja nie działała zgodnie z oczekiwaniami, urządzenie redunant nadal uruchamiałoby poprzednią wersję i zapewniało rozwiązanie zapasowe z minimalną utratą funkcjonalności.
Utrzymanie tych ścieżek aktualizacji nie było jednak łatwe: z naszej strony włożono dodatkowy wysiłek, aby zachować kompatybilność między dwiema wersjami oprogramowania we wszystkich warstwach stosu.
Inną techniką, której użyliśmy, a którą Tesla wydaje się w pełni wykorzystywać, było użycie flag funkcji.
Klient pobierał i instalował aktualizację, ale nowe ścieżki kodu (z nowymi funkcjami) byłyby aktywne dopiero wtedy, gdy klient był gotowy, aby je wypróbować, lub aktywowaliśmy je dopiero wtedy, gdy były w pełni obsługiwane, z wiadomością do urządzenia przez sieć.
Jeśli nowa funkcja nie działała, mogliśmy wyłączyć nową ścieżkę kodu i wszystko wróciłoby do stanu sprzed.
W świecie oprogramowania wbudowanego nie zawsze jest to jednak możliwe, a standardy testowania i rozwoju muszą być wyższe.