Specyfikacja protokołu aktualizacji składnika oprogramowania układowego (CFU)
Ta specyfikacja opisuje ogólny protokół HID do aktualizowania oprogramowania układowego dla składników znajdujących się na komputerze lub akcesoriach. Specyfikacja umożliwia składnikowi akceptowanie oprogramowania układowego bez przerywania operacji urządzenia podczas pobierania. Specyfikacja obsługuje konfiguracje, w których składnik akceptujący oprogramowanie układowe może mieć podskładniki, które wymagają oddzielnych obrazów oprogramowania układowego. Specyfikacja umożliwia osobie odpowiedzialnej za komponent podjęcie decyzji, czy zaakceptować oprogramowanie układowe. Działa również jako optymalizacja, ponieważ obraz firmware'u jest wysyłany tylko do składnika, jeśli może go zaakceptować lub jest na to gotowy.
Notatka
CfU jest dostępny w systemie Windows 10 w wersji 2004 (Windows 10 maj 2020 Update) i nowszych wersjach.
Treść
- 1 Wprowadzenie
- 2 obsługiwana architektura sprzętowa
- wymagania wstępne protokołu
3 -
4 Omówienie protokołu CFU
-
4.1 Sekwencja Poleceń Programowania Aktualizacji Oprogramowania Sprzętowego
- stan 4.1.1: zainicjowane powiadomienie hosta
- Stan: 4.1.2 OFFER_INFO_START_OFFER_LIST Powiadomienie
- Stan 4.1.3: Wysyłanie polecenia FIRMWARE_UPDATE_OFFER
- stan 4.1.4: wysyłanie oprogramowania układowego
- 4.1.5 Stan decyzji: Czy jest więcej ofert
- Stan 4.1.6: OFFER_INFO_END_OFFER_LIST Powiadomienie
- 4.1.7 Stan decyzji: Lista ofert odtwarzania
- stan 4.1.8: Urządzenie jest zajęte
-
4.1 Sekwencja Poleceń Programowania Aktualizacji Oprogramowania Sprzętowego
-
5 format pakietów protokołu CFU
-
5.1 POBIERZ_WERSJĘ_OPROGRAMOWANIA_UKŁADOWEGO
- 5.1.1 polecenia
- 5.1.2 odpowiedź
- mapowanie do 5.1.3 HID
- 5.2 FIRMWARE_UPDATE_OFFER
- 5.3 FIRMWARE_UPDATE_OFFER — informacje
- Rozszerzona oferta aktualizacji firmware'u 5.4 —
- 5.5 ZAWARTOŚĆ_AKTUALIZACJI_OPROGRAMOWANIA
-
5.1 POBIERZ_WERSJĘ_OPROGRAMOWANIA_UKŁADOWEGO
- 6 Dodatek 1: Przykład programowania sekwencji poleceń aktualizacji oprogramowania układowego
Tabele
Tabela 5.1–1 Układ odpowiedzi na GET_FIRMWARE_VERSION
Tabela 5.1–2 Odpowiedź GET_FIRMWARE_VERSION — układ nagłówka
Tabela 5.1–3, odpowiedź „GET_FIRMWARE_VERSION” — nagłówkowe bity
Tabela 5.1-4: Odpowiedź GET_FIRMWARE_VERSION — wersja składnika i układ właściwości
Tabela 5.1-5 - Odpowiedź GET_FIRMWARE_VERSION - wersja komponentu i bity właściwości
Tabela 5.2-1 Układ polecenia FIRMWARE_UPDATE_OFFER
polecenie Table 5.2-2 FIRMWARE_UPDATE_OFFER — układ informacji o składniku
Polecenie Tabela 5.2-3 FIRMWARE_UPDATE_OFFER — bity informacji o składnikach
Tabela 5.2-4 Polecenie FIRMWARE_UPDATE_OFFER — układ wersji oprogramowania układowego
Table 5.2-5 FIRMWARE_UPDATE_OFFER Command — Bity wersji oprogramowania układowego
polecenie Table 5.2-6 FIRMWARE_UPDATE_OFFER — układ specyficzny dla dostawcy
polecenie Tabela 5.2-7 FIRMWARE_UPDATE_OFFER — różne tematy i wersja protokołu
Tabela 5.2-8 FIRMWARE_UPDATE_OFFER Układ tokenu odpowiedzi
Tabela 5.2-9 Odpowiedź FIRMWARE_UPDATE_OFFER — Układ tokenu
Odpowiedź Tabeli 5.2-10 FIRMWARE_UPDATE_OFFER — bity tokenu
Układ powodu odrzucenia odpowiedzi Tabela 5.2-11 FIRMWARE_UPDATE_OFFER
Tabela 5.2–12 FIRMWARE_UPDATE_OFFER — Bity Powodu Odrzucenia
Tabela 5.2-13 Odpowiedź FIRMWARE_UPDATE_OFFER wartości kodu RR
Tabela 5.2-14 FIRMWARE_UPDATE_OFFER Układ statusu odpowiedzi
Odpowiedź Table 5.2-15 FIRMWARE_UPDATE_OFFER — bity stanu
tabela 5.2–16 FIRMWARE_UPDATE_OFFER wartości stanu odpowiedzi
Tabela 5.3-1 FIRMWARE_UPDATE_OFFER — układ poleceń informacji
Table 5.3-2 FIRMWARE_UPDATE_OFFER — Information Command — Component Layout
Table 5.3-3 FIRMWARE_UPDATE_OFFER — Information Command — Component Bits
Tabela 5.3-4 FIRMWARE_UPDATE_OFFER — polecenie informacyjne — wartości kodu informacji
Tabela 5.3–5 FIRMWARE_UPDATE_OFFER — układ odpowiedzi na informacje
tabela 5.3-6 FIRMWARE_UPDATE_OFFER — układ tokenu odpowiedzi pakietu informacyjnego
Tabela 5.3-7 FIRMWARE_UPDATE_OFFER — informacyjna odpowiedź — bity tokenu
Tabela 5.3-8 FIRMWARE_UPDATE_OFFER — Odpowiedź na informacje — układ kodu RR
Tabela 5.3-9 FIRMWARE_UPDATE_OFFER — odpowiedź na informacje o ofercie — bity kodu RR
Tabela 5.3-10 FIRMWARE_UPDATE_OFFER — Informacyjna odpowiedź — Wartości kodu RR
Tabela 5.3-11 FIRMWARE_UPDATE_OFFER — format statusu odpowiedzi dotyczącej informacji o ofercie
Tabela 5.3-12 FIRMWARE_UPDATE_OFFER — Informacje o Ofercie — Bity Stanu Odpowiedzi
Tabela 5.4-1 FIRMWARE_UPDATE_OFFER — rozszerzony układ poleceń
Table 5.4-2 FIRMWARE_UPDATE_OFFER — rozszerzony pakiet poleceń — polecenie — układ składników
Tabela 5.4-3 FIRMWARE_UPDATE_OFFER — Rozszerzone polecenie — bity składników
Tabela 5.4-4 FIRMWARE_UPDATE_OFFER — rozszerzone polecenie — wartości kodu polecenia
Tabela 5.4-5 FIRMWARE_UPDATE_OFFER — rozszerzony układ odpowiedzi pakietów poleceń
Tabela 5.4-6 FIRMWARE_UPDATE_OFFER — oferowanie odpowiedzi na pakiety poleceń — układ tokenu
Tabela 5.4-7 FIRMWARE_UPDATE_OFFER — odpowiedź na polecenie oferty — bity tokena
Tabela 5.4-8 FIRMWARE_UPDATE_OFFER — układ odpowiedzi RR na pakiet informacyjny
Tabela 5.4-9 FIRMWARE_UPDATE_OFFER — odpowiedź na polecenie oferty — kod RR
Tabela 5.4-10 FIRMWARE_UPDATE_OFFER — Pakiet poleceń oferty — Wartości kodu RR
Tabela 5.4-11 FIRMWARE_UPDATE_OFFER - Układ Statusu Odpowiedzi Pakietu Polecenia Oferty
Tabela 5.4-12 FIRMWARE_UPDATE_OFFER — kod RR odpowiedzi na polecenie oferowania pakietu
Tabela 5.5-1 FIRMWARE_UPDATE_CONTENT Układ poleceń
Tabela 5.5-2 FIRMWARE_UPDATE_CONTENT Układ nagłówka komendy
Tabela 5.5-3 Bity nagłówka FIRMWARE_UPDATE_CONTENT
Tabela 5.5-4 FIRMWARE_UPDATE_OFFER — pakiet poleceń oferty — wartości flagi
Tabela 5.5-5 FIRMWARE_UPDATE_CONTENT Układ danych poleceń
Tabela 5.5-6 Bity danych polecenia FIRMWARE_UPDATE_CONTENT
Tabela 5.5-7 FIRMWARE_UPDATE_CONTENT Układ odpowiedzi polecenia
Tabela 5.5-8 Odpowiedź FIRMWARE_UPDATE_CONTENT — numer sekwencji
Tabela 5.5-9 FIRMWARE_UPDATE_CONTENT — polecenie — bity odpowiedzi
Tabela 5.5-10 FIRMWARE_UPDATE_CONTENT Układ stanu odpowiedzi
Tabela 5.5-11 FIRMWARE_UPDATE_OFFER — Odpowiedź — Bity stanu
tabela 5.5-12 FIRMWARE_UPDATE_OFFER — odpowiedź — wartości kodu stanu
1 Wprowadzenie
Dzisiejsze komputery i akcesoria mają składniki wewnętrzne, które wykonują złożone operacje. Aby zapewnić jakość produktu, należy często aktualizować zachowanie tych urządzeń w późniejszych etapach opracowywania lub po ich wysłaniu do klientów. Aktualizacja może rozwiązać zidentyfikowane problemy z funkcjonalnością lub zabezpieczeniami lub konieczność dodania nowych funkcji. Duża część złożonej logiki znajduje się w oprogramowaniu układowym uruchomionym na urządzeniu, które można aktualizować.
Ta specyfikacja opisuje ogólny protokół HID w celu zaktualizowania oprogramowania układowego dla składników znajdujących się na komputerze lub jego akcesoriach. Implementacja HID wykracza poza zakres specyfikacji.
Oto niektóre funkcje protokołu:
Protokół jest oparty na protokole HID — wszechobecny i ma obsługę w pudełku systemu Windows w różnych magistralach połączeń, takich jak USB i I2C. W związku z tym można użyć tego samego rozwiązania oprogramowania (sterownika), aby zaktualizować oprogramowanie układowe dla wszystkich składników.
Notatka
Ponieważ specyfikacja jest oparta na pakietach, proste jest dostosowanie jej do scenariuszy innych niż HID.
Specyfikacja umożliwia składnikowi akceptowanie oprogramowania układowego bez przerywania operacji urządzenia podczas pobierania. Umożliwia to użytkownikom lepsze środowisko pracy, ponieważ nie muszą czekać na ukończenie procesu aktualizacji oprogramowania układowego, zanim będą mogli wznowić inne zadania. Nowe oprogramowanie układowe może być wywoływane w jednej nieprzerwanej operacji w momencie, który minimalnie wpływa na użytkownika.
Specyfikacja obsługuje konfiguracje, w których składnik akceptujący oprogramowanie układowe może mieć podskładniki, które wymagają oddzielnych obrazów oprogramowania układowego.
Nota
Proces przekazywania oprogramowania układowego do podskładniku wykracza poza zakres tej specyfikacji.
Specyfikacja obsługuje koncepcję oferty i polega na komponencie odpowiedzialnym za decyzję, czy zaakceptować "firmware". Decyzja o zaakceptowaniu nowego oprogramowania układowego nie jest banalna. Mogą istnieć zależności między typem oprogramowania układowego i/lub wersją oraz bazowym typem/wersją sprzętu, do którego stosuje się nowe oprogramowanie układowe. Oferta działa również jako mechanizm optymalizacji, ponieważ obraz oprogramowania układowego jest wysyłany do składnika tylko wtedy, gdy jest w stanie lub gotowy go zaakceptować.
1.1 Słownik
Termin | Opis |
---|---|
Identyfikator składnika | W urządzeniu z wieloma składnikami identyfikator składnika jednoznacznie identyfikuje każdy składnik. |
CRC | Sprawdzanie nadmiarowości cyklicznej Niekryptograficzny algorytm haszujący używany do tworzenia skrótu lub odcisku palca bloku danych. CRC jest używany jako kontrola w celu zapewnienia, że blok danych nie uległ zmianie od czasu obliczenia CRC. CRC nie jest niezawodny, ale daje pewność, że dane zostały odebrane poprawnie. |
Urządzenie | Kolekcja składników (jeden składnik podstawowy i zero lub więcej podskładników). Urządzenie jest widoczne dla systemu operacyjnego jako pojedyncza jednostka. Host wchodzi w interakcję z urządzeniem, który jest zazwyczaj składnikiem podstawowym. Na komputerze może znajdować się wiele urządzeń. W odniesieniu do tej specyfikacji komunikacja z 2 różnymi urządzeniami jest całkowicie niezależna. |
Kierowca | Sterownik napisany przy użyciu struktury Windows Driver Foundation (WDF). |
Oprogramowanie układowe | Kod uruchomiony na sprzęcie fizycznym. Oprogramowanie układowe można aktualizować i zwykle znajduje się w programowalnej pamięci skojarzonej ze sprzętem. |
Sprzęt | Fizyczny kawałek krzemu na komputerze. |
Składnik podstawowy | Element sprzętowy w komputerze i oprogramowanie układowe dla niego. W kontekście tej specyfikacji składnik jest jednostką, która potrzebuje i akceptuje aktualizację oprogramowania układowego. |
Segment | Obraz oprogramowania układowego składnika może być podzielony na mniejsze segmenty. Każdy segment to mały obraz oprogramowania układowego. |
Identyfikator segmentu | Jeśli oprogramowanie układowe składnika jest podzielone na mniejsze segmenty, ID segmentu jest jego unikatowym identyfikatorem. |
Podpis | Kryptograficzny sposób określania, czy obraz oprogramowania układowego został zmieniony w sposób nieautoryzowany. Podpisy są opcjonalne, ale zalecane i wykraczają poza zakres tej specyfikacji. |
Podskładnik | W zależności od architektury sprzętu nie wszystkie składniki mogą być widoczne dla systemu operacyjnego, ponieważ mogą być połączone podrzędnie składnika widocznego dla systemu. Te składniki są określane jako podskładniki w tej specyfikacji. |
TLC | Kolekcja HID najwyższego poziomu. |
Żeton | Identyfikator sesji hosta. Host tworzy token i wysyła go w poleceniach, a urządzenie zwraca je w odpowiedzi. Tokeny mogą służyć do serializacji niektórych transakcji lub identyfikowania, że sesja została utracona, a inna rozpoczęta. |
Zakres 1.2
1.2.1 Cele
Rozwiązanie niezależne od magistrali jest wymagane, aby uniknąć nowego protokołu dla każdego typu magistrali. HID jest wszechobecny i odpowiada na to wymaganie.
Możliwość obsługi aktualizacji oprogramowania układowego dla urządzenia wieloskładnikowego, w którym jeden składnik działa jako składnik podstawowy, a inne są podskładnikami połączonymi ze składnikiem podstawowym. Każdy składnik wymaga własnego oprogramowania układowego z nietrygalnymi zależnościami między sobą.
Wspólny model sterowników do pobierania obrazu oprogramowania układowego do składnika. Następnie składnik posiada algorytmy przekazywania specyficzne dla podskładników. Podskładniki mogą również przeprowadzać kontrole poprawności oprogramowania układowego i przekazywać wyniki z powrotem do podstawowego składnika.
Możliwość obsługi aktualizacji oprogramowania układowego, gdy trwa operacja urządzenia.
Możliwość aktualizacji lub wycofywania oprogramowania układowego na urządzeniach produkcyjnych za pomocą autoryzowanych narzędzi, oraz aktualizacji urządzeń użytkowych za pośrednictwem usługi Windows Update.
Elastyczność wspierania oprogramowania układowego w trakcie rozwoju/oprogramowania układowego obecnego na rynku.
Możliwość segmentowania dużego obrazu oprogramowania układowego w mniejsze segmenty, aby ułatwić składnikowi akceptowanie obrazu oprogramowania układowego.
1.2.2 Cele wykluczone
Określ wewnętrzny format obrazu oprogramowania układowego: dla hosta obraz oprogramowania układowego jest zestawem wpisów adresowych i dotyczących zawartości.
Podpisywanie/szyfrowanie/weryfikowanie zaakceptowanego oprogramowania układowego: ta specyfikacja nie opisuje sposobu podpisywania i szyfrowania obrazów oprogramowania układowego. Wymagane jest, aby oczekiwane bieżące oprogramowanie układowe uruchomione w składniku weryfikowało pobierane oprogramowanie układowe.
Zdefiniuj mechanizm interakcji składnika z podskładnikami: Host współdziała z urządzeniem jako pojedynczą jednostką, zazwyczaj podstawowym składnikiem. Składnik musi działać jako mostek do komunikacji związanej z oprogramowaniem układowym podskładnikowym.
2 Obsługiwane architektury sprzętowe
Aby obsługiwać elastyczny projekt sprzętu, protokół obsługuje urządzenie wieloskładnikowe, w którym każdy składnik wymaga własnego obrazu oprogramowania układowego. W projekcie jeden składnik jest składnikiem podstawowym, a zależne podskładniki są połączone z tym składnikiem podstawowym. Każdy składnik jest jednoznacznie opisany przez identyfikator składnika.
Urządzenie wieloskładnikowe jest widoczne dla systemu operacyjnego jako pojedyncza jednostka. Host wchodzi w interakcję tylko z urządzeniem, zazwyczaj głównym komponentem, przy wykorzystaniu tego protokołu CFU. Komunikacja między składnikiem a jego podskładnikami wykracza poza zakres tej specyfikacji.
Na komputerze może istnieć wiele różnych urządzeń (gdzie urządzenie może mieć co najmniej jeden składnik). W kontekście tego protokołu komunikacja z każdym urządzeniem jest niezależna. Każde urządzenie ma odpowiednie wystąpienie hosta.
3 Wymagania wstępne protokołu
W tej sekcji wymieniono wymagania wstępne i najlepsze praktyki, które należy zaimplementować w celu wykorzystania tego protokołu.
Użycie obrazu atomowego
Obraz oprogramowania układowego składnika nie jest używany, dopóki nie zostanie pomyślnie pobrany w całości. Jeśli oprogramowanie układowe jest podzielone na wiele segmentów, obraz nie może być używany do momentu odebrania końcowego segmentu od nadawcy. Należy przeprowadzić kontrole integralności na końcowym obrazie. Zaleca się, aby transport, używany do dostarczania obrazu oprogramowania układowego, miał mechanizmy poprawiania błędów i ponawiania prób, aby uniknąć powtarzania pobierania w przypadku błędów transportu.
Aktualizacja oprogramowania układowego nie może przerywać operacji urządzenia
Urządzenie akceptujące obraz oprogramowania układowego musi być w stanie działać podczas aktualizacji. Urządzenie musi mieć dodatkową pamięć do przechowywania i weryfikowania przychodzącego oprogramowania układowego, bez zastępowania jego bieżącego oprogramowania układowego.
Uwierzytelnianie i integralność
Implementator decyduje, jakie czynniki tworzą oryginalny obraz oprogramowania układowego. Zaleca się, aby bieżące oprogramowanie układowe składnika przynajmniej zweryfikowało CRC przychodzącego obrazu oprogramowania układowego. Bieżące oprogramowanie układowe powinno również używać podpisu cyfrowego lub innych algorytmów wykrywania błędów. Jeśli walidacja zakończy się niepowodzeniem, oprogramowanie układowe odrzuci aktualizację. Odzyskiwanie po awarii
Jeśli obraz oprogramowania układowego zostanie pobrany i nie powiedzie się, urządzenie nie może wywołać nowego oprogramowania układowego i kontynuować pracę z istniejącym oprogramowaniem układowym. Host może ponowić próbę aktualizacji. Częstotliwość ponawiania jest specyficzna dla implementacji.
Poufność
Fakultatywny. Segment oprogramowania układowego może być zaszyfrowany. Techniki szyfrowania i odszyfrowywania wykraczają poza zakres tej specyfikacji. Ta specyfikacja traktuje ładunek oprogramowania układowego jako strumień danych, niezależnie od tego, czy jest zaszyfrowany.
Ochrona wycofywania
Zasady wycofywania są wymuszane przez składnik podstawowy i są specyficzne dla implementacji. Bieżące oprogramowanie układowe w składniku weryfikuje przychodzące obrazy oprogramowania układowego względem zasad wewnętrznych, takich jak konieczność nowszego numeru wersji czy brak możliwości zmiany typu wydania z release na debug itd. Protokół zezwala na przesyłanie komunikatów, aby wskazać, że aktualizacja jest akceptowana, nawet jeśli narusza zasady wycofywania.
4 Omówienie protokołu CFU
Protokół CFU to zestaw poleceń i odpowiedzi, które są wymagane do wysyłania nowych obrazów oprogramowania układowego z hosta do urządzenia, dla którego jest przeznaczone oprogramowanie układowe.
Na poziomie ogólnym protokół iteruje przez wszystkie pliki oprogramowania układowego przeznaczone do wysłania do urządzenia. Dla każdego obrazu oprogramowania układowego host oferuje do wysłania pliku na urządzenie. Tylko wtedy, gdy urządzenie zaakceptuje ofertę, host wyśle plik.
W przypadku obsługi przypadków, w których kolejność aktualizacji urządzenia ma zależności, urządzenie może nie akceptować niektórych ofert w pierwszym przebiegu, dlatego protokół umożliwia hostowi ponowne wysyłanie wszystkich ofert oprogramowania układowego do urządzenia do momentu rozwiązania wszystkich zależności.
4.1. Sekwencja poleceń programowania aktualizacji oprogramowania układowego
Oto sekwencja poleceń CFU do aktualizowania obrazu oprogramowania układowego.
4.1.1 Stan: Powiadomienie zainicjowane przez hosta
Po zainicjowaniu hosta i zidentyfikowaniu zestawu ofert, które musi wysłać do urządzenia, host wydaje polecenie OFFER_INFO_START_ENTIRE_TRANSACTION, aby wskazać składnikowi, że host jest teraz zainicjowany. Celem tego polecenia jest powiadomienie bieżącego oprogramowania układowego urządzenia o dostępności nowej instancji hosta. To powiadomienie jest przydatne, gdy poprzednie wystąpienie hosta zostanie nieoczekiwanie zakończone. Urządzenie musi pomyślnie ukończyć to polecenie.
4.1.2 Stan: OFFER_INFO_START_OFFER_LIST Powiadomienie
W tym stanie host wysyła polecenie OFFER_INFO_START_OFFER_LIST, aby wskazać, że jest gotowy do wysłania ofert(y) do oprogramowania układowego aktualnego urządzenia. Podstawowy składnik urządzenia musi ukończyć tę komendę z powodzeniem.
To polecenie jest przydatne, ponieważ host może wysyłać wszystkie oferty do urządzenia więcej niż raz.
4.1.3 Stan: Wyślij polecenie FIRMWARE_UPDATE_OFFER
Host wysyła ofertę do składnika podstawowego (lub jego podskładnika), aby sprawdzić, czy składnik chce zaakceptować/odrzucić oprogramowanie układowe. Oferta zawiera wszystkie niezbędne metadane dotyczące obrazu oprogramowania układowego, dzięki czemu bieżące oprogramowanie na składniku może zdecydować, czy zaakceptować, wstrzymać, pominąć lub odrzucić ofertę.
Oferta może być dla podstawowego składnika lub podskładniku. Jeśli składnik może zaakceptować ofertę, przygotowuje się do otrzymania oprogramowania układowego. Może to obejmować przygotowanie banku pamięci do odbierania przychodzącego obrazu oprogramowania układowego. Składnik może nie zaakceptować oferty, na przykład składnik może mieć już nowszą (lub tę samą) wersję oprogramowania układowego, którą ma wysłać host. Po więcej informacji, patrz przykłady opisane w Dodatku 1: Przykład sekwencji poleceń programowania aktualizacji oprogramowania układowego.
Nawet jeśli oferta zostanie zaakceptowana, główna jednostka może nadal odrzucić obraz oprogramowania układowego po pobraniu z powodu niepowodzenia weryfikacji integralności i/lub kontroli cofnięcia względem rzeczywiście odebranego obrazu. Składnik musi sprawdzić każdą właściwość obrazu firmware niezależnie od informacji zawartych w ofercie.
Host wysyła polecenie FIRMWARE_UPDATE_OFFER w celu powiadomienia głównego składnika o obrazie oprogramowania układowego, który host ma wysłać.
Jeśli składnik akceptuje ofertę, zmienia swój status na FIRMWARE_UPDATE_OFFER_ACCEPT, tym samym akceptując ofertę.
Jeśli oprogramowanie układowe urządzenia jest zajęte i podstawowy składnik nie może aktualnie zaakceptować tej ani następnej oferty, wysyła odpowiedź zajętościową ze stanem FIRMWARE_UPDATE_OFFER_BUSY.
Jeśli bieżące oprogramowanie układowe jest zainteresowane ofertą, jednak nie może zaakceptować oferty (na przykład ze względu na zależność od brakującej aktualizacji dla podskładnika) odpowiada z FIRMWARE_UPDATE_OFFER_SKIP wskazującą, że jest zainteresowany tym oprogramowaniem układowym, ale nie może go zaakceptować. Następnie host przechodzi do następnej oferty i musi zaoferować ponownie to firmware później.
Jeśli bieżące oprogramowanie układowe nie jest zainteresowane ofertą (na przykład jest to starsza wersja), odpowiada za pomocą stanu FIRMWARE_UPDATE_OFFER_REJECT, podając odpowiedni powód odrzucenia. Ten stan nie wskazuje, że host nie może ponownie wysłać tej oferty w przyszłości. Host zazwyczaj wysyła każdą ofertę za każdym razem, gdy inicjuje lub ponownie wysyła listę ofert do urządzenia (zobacz Stan: OFFER_INFO_START_OFFER_LIST Powiadomienie).
4.1.4 Stan: Wyślij oprogramowanie układowe
W tym stanie host rozpoczyna wysyłanie obrazu oprogramowania układowego do podstawowego składnika, dla którego składnik wcześniej zaakceptował ofertę.
Ponieważ zawartość obrazu oprogramowania układowego prawdopodobnie przekracza limity ładowności pojedynczego polecenia, host dzieli obrazy oprogramowania układowego na pakiety. Host wysyła każdy pakiet sekwencyjnie w osobnym poleceniu FIRMWARE_UPDATE CONTENT. Składnik podstawowy musi wygenerować pakiet odpowiedzi dla każdego polecenia.
Każde polecenie FIRMWARE_UPDATE CONTENT opisuje adres przesunięcia zawierający częściowy ładunek oprogramowania układowego. Składnik używa przesunięcia, aby określić adres, w którym musi być przechowywany częściowy ładunek oprogramowania układowego. Urządzenie zapisuje zawartość w odpowiedniej lokalizacji i potwierdza polecenie, wysyłając odpowiedź.
W przypadku pierwszego pakietu wysyłanego przez hosta ustawia flagę FIRMWARE_UPDATE_FLAG_FIRST_BLOCK wskazującą na urządzenie, że jest to pierwszy pakiet obrazu oprogramowania układowego. Jeśli urządzenie nie zostało jeszcze przygotowane do odbierania oprogramowania układowego, może to zrobić w tej chwili.
Dla ostatniego pakietu host wysyła go i ustawia flagę FIRMWARE_UPDATE_FLAG_LAST_BLOCK.
Po zapisaniu na urządzeniu bieżącego oprogramowania układowego częściowego ładunku oprogramowania układowego zawartego w tym poleceniu musi przeprowadzić sprawdzanie poprawności i uwierzytelniania na przychodzącym obrazie oprogramowania układowego przed wysłaniem odpowiedzi. Obejmuje to co najmniej:
Sprawdzanie CRC w celu zweryfikowania integralności całego obrazu oprogramowania układowego.
Jeśli sprawdzanie CRC powiedzie się, opcjonalna weryfikacja podpisu obrazu przychodzącego.
Po opcjonalnym sprawdzeniu podpisu należy przeprowadzić kontrolę wersji, aby upewnić się, że nowa wersja oprogramowania układowego jest taka sama lub nowsza niż istniejąca wersja.
W przypadku, gdy przychodzący obraz oprogramowania układowego został podzielony na mniejsze segmenty, do bieżącego oprogramowania układowego należy określić, czy jest to ostatni segment obrazu oprogramowania układowego, a następnie dołącz wszystkie segmenty w ramach walidacji.
Jeśli powyższe testy przejdą, bieżące oprogramowanie układowe może skonfigurować urządzenie do zamiany na nowy obraz przy następnym zresetowaniu i zgłosi powodzenie na hoście. Zazwyczaj składnik nie inicjuje samodzielnego resetowania. Ma to na celu zapobieganie zakłóceniom w dowolnym oprogramowaniu, oprogramowaniu układowym, jednostkach sprzętowych, z którymi współdziała składnik. Nie jest to jednak wymagane i może się różnić w zależności od implementacji.
Jeśli kroki weryfikacji nie powiodą się, oprogramowanie układowe nie powinno skonfigurować zamiany podczas następnego resetowania i musi wskazać błąd odpowiedzi do hosta.
4.1.5 Stan decyzji: Czy jest więcej ofert
W tym stanie host określa, czy istnieją jeszcze oferty do wysłania do urządzenia.
4.1.6 Stan: OFFER_INFO_END_OFFER_LIST Powiadomienie
Ten stan jest osiągany, gdy host wysłał wszystkie oferty do podstawowego składnika w bieżącym oprogramowaniu układowym urządzenia. Serwer wysyła polecenie OFFER_INFO_END_OFFER_LIST, aby wskazać, że wysłał wszystkie oferty do komponentu.
Urządzenie musi ukończyć to polecenie z powodzeniem.
4.1.7 Stan decyzji: Lista ofert odtwarzania
Host określa, czy musi ponownie wysłać wszystkie oferty. Ten przypadek może wystąpić, jeśli wcześniej podstawowy składnik pominął niektóre oferty i zaakceptował niektóre oferty. Gospodarz musi ponownie odtworzyć listę ofert.
Może istnieć inna logika specyficzna dla implementacji, która może spowodować decyzję o ponownym odtworzeniu listy ofert.
4.1.8 Stan: Urządzenie jest zajęte
Ten stan oznacza, że urządzenie zwróciło zajętą odpowiedź na ofertę.
Host wysyła polecenie OFFER_NOTIFY_ON_READY, do którego urządzenie nie odpowiada z akceptacją, dopóki urządzenie nie będzie wolne.
5 Format pakietów protokołu CFU
Protokół CFU jest implementowany jako zestaw poleceń i odpowiedzi. Protokół jest sekwencyjny w naturze. Dla każdego polecenia, które host wysyła do składnika, oczekuje się, że składnik odpowie (chyba że jawnie określono inaczej w tej specyfikacji). Host nie wysyła kolejnego polecenia, dopóki nie zostanie odebrana prawidłowa odpowiedź dla poprzedniego wysłanego polecenia.
Jeśli składnik nie odpowiada w danym okresie lub wysyła nieprawidłową odpowiedź, host może ponownie uruchomić proces od początku. Ten protokół nie definiuje określonej wartości limitu czasu.
Istnieją polecenia umożliwiające uzyskanie informacji o wersji bieżącego oprogramowania układowego w składniku, wysłanie oferty i przesłanie obrazu oprogramowania układowego.
Jednak gospodarz systemu nie musi wstrzymać oferty na podstawie odpowiedzi otrzymanej od głównego składnika na temat informacji o wersji, o którą zapytano. Informacje te są wykrywalne na potrzeby rejestrowania lub innych celów.
5.1 POBIERZ_WERSJĘ_FIRMWARE
Pobiera bieżące wersje oprogramowania układowego podstawowego składnika (i jego podskładniki). Polecenie nie ma żadnych argumentów.
5.1.1 Polecenie
To polecenie jest wysyłane przez hosta w celu uzyskania informacji o wersjach aktualnego oprogramowania układowego w składniku podstawowym (i jego podskładnikach). Host może używać go do potwierdzenia, czy oprogramowanie układowe zostało pomyślnie zaktualizowane. Po otrzymaniu tego polecenia podstawowy składnik odpowiada wersją oprogramowania układowego dla siebie i wszystkich podkomponentów.
5.1.2 Odpowiedź
Składnik odpowiada, podając wersję oprogramowania układowego zarówno podstawowego składnika, jak i podskładników. Rozmiar odpowiedzi to 60 bajtów, co umożliwia uzyskanie informacji o wersji dla maksymalnie siedmiu składników (jeden podstawowy i maksymalnie sześć podskładników).
Tabela 5.1–1 GET_FIRMWARE_VERSION Układ odpowiedzi
Nagłówek 5.1.2.1
Tabela 5.1–2 odpowiedź GET_FIRMWARE_VERSION — układ nagłówka
Nagłówek odpowiedzi zawiera następujące informacje.
Tabela 5.1-3: Odpowiedź GET_FIRMWARE_VERSION — bity nagłówka
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Liczba składników | 8 | Liczba składników do pobrania zarządzanych za pomocą tego mechanizmu dla tego składnika. Liczba składników określa maksymalny rozmiar tabeli. Obecnie obsługiwane są maksymalnie 7 składników, aby upewnić się, że odpowiedź może mieścić się w dozwolonych 60 bajtach. |
8 | Rsvd | 16 | Pola zarezerwowane. Nadawca musi ustawić te wartości na 0. Odbiorca musi zignorować tę wartość. |
24 | Wersja protokołu | 4 | Bity rewizji aktualizacji oprogramowania układowego reprezentują rewizję protokołu aktualizacji oprogramowania układowego, która jest obecnie używana w transporcie. W przypadku interfejsu zdefiniowanego w niniejszym dokumencie wersja aktualizacji FW musi być 0010b. |
28 | Rsvd | 3 | Pola zarezerwowane. Nadawca musi ustawić te wartości na 0. Odbiorca musi zignorować tę wartość. |
31 | E | 1 | Flaga rozszerzenia to przyszły punkt zaczepienia protokołu umożliwiający raportowanie dodatkowych składników. |
5.1.2.2, wersja i właściwości składnika
Dla każdego składnika używa się dwóch DWORD-ów do opisania jego właściwości, przy maksymalnie 7 składnikach. Jeśli liczba składników w nagłówku jest mniejsza niż 7, nieużywane DWORDS na końcu odpowiedzi musi być ustawiona na 0.
Tabela 5.1–4, odpowiedź na GET_FIRMWARE_VERSION — układ wersji i właściwości składnika
Informacje specyficzne dla każdego składnika są opisane w dwóch DWORDach w następujący sposób:
Tabela 5.1–5 odpowiedź GET_FIRMWARE_VERSION — wersje składników i bity właściwości
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Wersja oprogramowania układowego | 32 | Zwraca wersję bieżącego oprogramowania układowego dla tego składnika. Ta specyfikacja nie nakazuje żadnego określonego formatu dla wersji oprogramowania układowego. Zobacz sekcję Wersja firmware dla wskazówek. |
32 | Bank | 2 | Fakultatywny. W zależności od architektury, komponenty sprzętowe mogą mieć wiele banków, w których może być przechowywane oprogramowanie układowe. W zależności od implementacji nadawca może określić bank, w którym obecnie istnieje oprogramowanie układowe. To pole jest obowiązkowe warunkowo — wsparcie jest opcjonalne, ale nie może być używane do żadnego innego celu. |
34 | Zastrzeżony | 2 | Pola zarezerwowane. Nadawca musi ustawić je na 0. Odbiorca musi zignorować tę wartość. |
36 | Specyficzne dla dostawcy | 4 | Pole specyficzne dla dostawcy, które może być używane w sposób specyficzny dla implementacji. Dostawca może użyć tych bitów do zakodowania informacji, takich jak: - Typ oprogramowania układowego: Wersja wstępna/samodzielna/produkcja; debugowanie/sprzedaż detaliczna - Faza programowania — Identyfikator produktu, aby uniemożliwić składnikom odbieranie oprogramowania układowego dla innych produktów przy użyciu tego samego protokołu aktualizacji. |
40 | Identyfikator składnika | 8 | Unikatowy identyfikator składnika. |
48 | Specyficzne dla dostawcy | 16 | Pole specyficzne dla dostawcy, które może być używane w sposób specyficzny dla implementacji. |
5.1.3 Mapowanie na HID
Jest to realizowane jako żądanie HID Get Feature z rozmiarem odpowiedzi wynoszącym 60 bajtów, oprócz identyfikatora raportu. Długość raportu funkcji uwzględnia całą odpowiedź GET_FIRMWARE_VERSION. Brak danych skojarzonych z żądaniem Pobierania funkcji z hosta.
5.2 OFERTA_AKTUALIZACJI_FIRMWARE
Określa, czy podstawowy składnik akceptuje lub odrzuca oprogramowanie układowe.
5.2.1 Polecenie
Host wysyła to polecenie do składnika, aby określić, czy akceptuje lub odrzuca oprogramowanie układowe. Host musi wysłać ofertę, a składnik musi zaakceptować ofertę, zanim host będzie mógł wysłać oprogramowanie układowe.
Pakiet polecenia FIRMWARE_UPDATE_OFFER jest zdefiniowany w następujący sposób.
Tabela 5.2-1 FIRMWARE_UPDATE_OFFER Układ poleceń
5.2.1.1 Informacje o składniku
Tabela 5.2–2 — polecenie FIRMWARE_UPDATE_OFFER — układ informacji o składniku
Bity bajtu Informacje o składniku zostały opisane w tej tabeli.
Tabela 5.2-3 polecenie FIRMWARE_UPDATE_OFFER — bity informacji dotyczące składnika
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Numer segmentu | 8 | To pole jest używane w przypadku, gdy oprogramowanie układowe składnika jest podzielone na mniejsze segmenty. Jeśli jest używana, ta wartość wskazuje segment, który znajduje się w kolejnym pakiecie ładunku. Na przykład — jeśli obraz układowego oprogramowania składnika jest bardzo duży, a podstawowy składnik może przetwarzać tylko mniejsze części obrazu naraz, to pole może służyć do wskazania, że ta oferta dotyczy -tego i-szego segmentu kompletnego obrazu. Oddzielna oferta może zostać wysłana do głównego komponentu zawierającego ioraz kolejny segment obrazu, itd. |
8 | Zastrzeżony | 6 | Pola zarezerwowane. Nadawca musi ustawić te wartości na 0. Odbiorca musi zignorować tę wartość. |
14 | Ja | 1 | Wymuś natychmiastowe resetowanie (I) — Ta wartość bitowa służy do wskazania komponentowi, aby natychmiast zresetować się po zakończeniu pobierania oprogramowania układowego i jego weryfikacji, aby bez zwłoki je uruchomić. — Ta flaga jest przeznaczona do fazy opracowywania. |
15 | V | 1 | Wymuszanie ignorowania wersji (V) — Ta flaga jest przeznaczona dla obrazu wstępnego wydania lub debugowania oprogramowania układowego. Zaleca, aby składnik nie odrzucał oprogramowania układowego ze względu na jego wersję. — Ta flaga jest przeznaczona do fazy opracowywania. Może służyć do celowego wycofywania do wcześniejszej wersji oprogramowania układowego. — Ta flaga powinna być ignorowana przez oprogramowanie układowe produkcyjne. |
16 | Identyfikator składnika | 8 | Ten bajt jest używany w scenariuszach obejmujących wiele składników. To pole może służyć do identyfikowania podskładu, dla którego jest przeznaczona oferta. Jeśli wartość nie jest używana, powinna wynosić 0. Możliwe wartości identyfikatorów składników są następujące: 1 — 0xDF: Prawidłowe 0xE0 — 0xFD: zarezerwowane. Nie używaj. 0xFF: Oferta jest specjalnym pakietem informacyjnym dotyczącym oferty specjalnej. Aby uzyskać szczegółowe informacje, zobacz informacje o FIRMWARE_UPDATE_OFFER. 0xFE: Jest to specjalny pakiet poleceń ofertowych. Aby uzyskać szczegółowe informacje, zobacz sekcję rozszerzoną FIRMWARE_UPDATE_OFFER. |
24 | Żeton | 8 | Host wstawia unikatowy token w pakiecie oferty dla składnika. Ten token musi zostać zwrócony przez składnik w odpowiedzi na ofertę. Jest to przydatne, jeśli istnieje potrzeba, aby składnik rozróżniał różne hosty/typy hostów. Dokładne wartości do użycia są specyficzne dla implementacji. Na przykład jedna wartość może być używana dla sterownika i innej dla aplikacji. Dzięki temu bieżące oprogramowanie układowe urządzenia może uwzględniać potencjalnych nadawców poleceń CFU. Jedną z możliwych implementacji może być zaakceptowanie pierwszego polecenia CFU i odrzucenie wszystkich innych poleceń z różnymi tokenami do momentu ukończenia pierwszych transakcji CFU. |
5.2.1.2 Wersja oprogramowania układowego
Te cztery bajty reprezentują 32-bitową wersję oprogramowania układowego. Format wersji oprogramowania układowego nie jest wymagany przez tę specyfikację. Zalecane jest wykonanie poniższych czynności.
Tabela 5.2-4 — polecenie FIRMWARE_UPDATE_OFFER — schemat wersji firmware'u
Format wersji oprogramowania układowego nie jest wymagany przez tę specyfikację, jednak poniżej przedstawiono zalecane wytyczne.
Tabela 5.2-5 polecenie FIRMWARE_UPDATE_OFFER – bity wersji firmware’u
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Wariant | 8 | To pole można opisać, aby odróżniać wersję firmware przedpremierową od wersji produkcyjnej firmware. Może to wskazywać typ podpisu używanego do podpisywania oprogramowania układowego. |
8 | Wersja pomocnicza | 16 | Ta wartość pola powinna być aktualizowana dla każdej kompilacji oprogramowania układowego. Ta wartość pola powinna być aktualizowana dla każdej kompilacji oprogramowania układowego. |
24 | Wersja główna | 8 | To pole jest główną wersją obrazu oprogramowania układowego. To pole powinno zostać zaktualizowane podczas wysyłania nowej linii produktu, głównych nowych aktualizacji oprogramowania układowego itd. |
5.2.1.3 Specyficzny dla dostawcy
Te cztery bajty mogą służyć do kodowania dowolnych informacji niestandardowych w ofercie specyficznej dla implementacji dostawcy.
5.2.1.4 Różne i wersja protokołu
Te cztery bajty mogą służyć do kodowania dowolnych informacji niestandardowych w ofercie specyficznej dla implementacji dostawcy.
Tabela 5.2-6 polecenie FIRMWARE_UPDATE_OFFER — układ specyficzny dla dostawcy
Bity bajtu specyficznego dla dostawcy zostały opisane w tej tabeli.
Table 5.2-7 FIRMWARE_UPDATE_OFFER Command — Różne i wersja protokołu
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Wersja protokołu | 4 | To pole musi być ustawione na 0010b wskazujące, że host/oferta odpowiada wersji 2 protokołu CFU. |
4 | Zastrzeżony | 4 | Zastrzeżony. Nie używaj. |
8 | Zastrzeżony | 8 | Zastrzeżony. Nie używaj. |
16 | Specyficzne dla dostawcy | 16 | To pole może służyć do kodowania dowolnych informacji niestandardowych w ofercie specyficznej dla implementacji dostawcy. |
5.2.2 Odpowiedź
Pakiet odpowiedzi FIRMWARE_UPDATE_OFFER jest zdefiniowany w następujący sposób.
Tabela 5.2-8 FIRMWARE_UPDATE_OFFER Układ tokenu odpowiedzi
5.2.2.1 Token
Tabela 5.2–9 Odpowiedź FIRMWARE_UPDATE_OFFER — układ tokenu
Bity bajtu tokenu zostały opisane w tej tabeli.
Tabela 5.2-10: odpowiedź FIRMWARE_UPDATE_OFFER – bity tokenu
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Zastrzeżony | 8 | Zastrzeżony. Nie używaj. |
8 | Zastrzeżony | 8 | Zastrzeżony. Nie używaj. |
16 | Zastrzeżony | 8 | Zastrzeżony. Nie używaj. |
24 | Żeton | 8 | Token do identyfikowania hosta. |
5.2.2.2 Zarezerwowane (B7 - B4)
Zastrzeżony. Nie używaj.
5.2.2.3 Przyczyna odrzucenia (RR)
Tabela 5.2–11 odpowiedź FIRMWARE_UPDATE_OFFER — układ przyczyny odrzucenia
Tabela 5.2–12 odpowiedź FIRMWARE_UPDATE_OFFER — odrzucanie bitów przyczyny
Bity bajtu Przyczyna odrzucenia zostały opisane w tej tabeli.
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Kod RR | 8 | Kod przyczyny odrzucenia wskazujący przyczynę podaną przez składnik dotyczącą odrzucenia oferty. Ta wartość zależy od pola Stan. Aby uzyskać mapowanie stanu na kod RR, zobacz Tabela 5.2-13. |
8 | Zastrzeżony | 24 | Zastrzeżony. Nie używaj. |
Tabela 5.2–13 Wartości kodu RR odpowiedzi FIRMWARE_UPDATE_OFFER
Możliwe wartości bajtu kodu RR są opisane w tej tabeli.
Kod RR | Nazwa | Opis |
---|---|---|
0x00 | Odrzuć ofertę aktualizacji starego oprogramowania układowego | Oferta została odrzucona, ponieważ wersja oferowanego oprogramowania układowego jest starsza lub taka sama jak bieżące oprogramowanie układowe. |
0x01 | ODRZUCENIE_OFERTY_FIRMWARE_DLA_KOMPONENTU | Oferta została odrzucona, ponieważ oferowane oprogramowanie układowe nie ma zastosowania do platformy produktu. Może to być spowodowane nieobsługiwanym identyfikatorem składnika albo tym, że dostarczony obraz nie jest zgodny ze sprzętem komputerowym. |
0x02 | Propozycja aktualizacji oprogramowania układowego, wymiana oczekująca. | Oprogramowanie układowe składnika zostało zaktualizowane, jednak zamiana na nowe oprogramowanie jest oczekiwana. Nie można kontynuować przetwarzania aktualizacji firmware’u do czasu zakończenia operacji zamiany, zazwyczaj przez zresetowanie. |
0x03 — 0x08 | (Zarezerwowane) | Zastrzeżony. Nie używaj. |
0x09 — 0xDF | (Zarezerwowane) | Zastrzeżony. Nie używaj. |
0xE0 — 0xFF | (Specyficzne dla dostawcy) | Te wartości są używane przez projektantów protokołu, a znaczenie jest specyficzne dla dostawcy. |
5.2.2.4 Stan
Tabela 5.2-14 FIRMWARE_UPDATE_OFFER układ stanu odpowiedzi
Bity bajtu Stan zostały opisane w tej tabeli.
Tabela 5.2-15 Odpowiedź na FIRMWARE_UPDATE_OFFER - Bity stanu
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Status | 8 | Wartość ta wskazuje decyzję komponentu o zaakceptowaniu, zawieszeniu, pominięciu lub odrzuceniu oferty. Składnik udostępnia przyczynę w wartości pola Kod RR. Aby uzyskać mapowanie stanu na kod RR, patrz tabela 5.2-16. |
8 | Zastrzeżony | 24 | Zastrzeżony. Nie używaj. |
Możliwe wartości bajtów stanu zostały opisane w tej tabeli.
Tabela 5.2–16 FIRMWARE_UPDATE_OFFER wartości stanu odpowiedzi
Stan | Nazwa | Opis |
---|---|---|
0x00 | Pomijanie_oferty_aktualizacji_firmware'u | Podmiot postanowił pominąć ofertę. Gospodarz musi zaoferować to ponownie później. |
0x01 | AKCEPTUJ OFERTĘ AKTUALIZACJI OPROGRAMOWANIA | Komponent zdecydował się zaakceptować ofertę. |
0x02 | Odrzuć ofertę aktualizacji oprogramowania | Komponent postanowił odrzucić ofertę. |
0x03 | Oferta aktualizacji oprogramowania układowego zajęta | Urządzenie jest zajęte, a host musi czekać, aż urządzenie będzie gotowe. |
0x04 | POLECENIE_OFERTY_AKTUALIZACJI_FIRMWARE | Używany, gdy identyfikator składnika w bajtach informacji o składniku (zobacz informacje o składniku 5.1.2.1.1) jest ustawiony na wartość 0xFE. W przypadku kodu polecenia ustawionego na żądanie typu OFFER_NOTIFY_ON_READY, wskazuje, że akcesorium jest gotowe do akceptowania dodatkowych ofert. |
0xFF | Polecenie aktualizacji oprogramowania układowego nie jest obsługiwane | Żądanie oferty nie jest rozpoznawane. |
5.2.3 Mapowanie na protokół HID
Komunikat jest wysyłany do składnika za pomocą mechanizmu raportu wyjściowego HID , przy użyciu dedykowanego identyfikatora raportu HID dla aktualizacji oprogramowania. Narzędzie HID TLC do użycia jest opisane w dodatku.
5.3 FIRMWARE_UPDATE_OFFER — informacje
Jeśli identyfikator składnika w bajtach informacji o składniku (zobacz Informacje o składniku) jest ustawiony na 0xFF, bity (15 bajtów) są ponownie definiowane, aby wskazać tylko informacje o ofercie, od hosta do składnika. Ten mechanizm umożliwia rozszerzalność i sposób przekazywania przez hosta określonych informacji do urządzenia, takich jak Lista ofert startowych, Lista ofert końcowych, Rozpocznij całą transakcję. Pakiety informacji o ofercie są zawsze natychmiast akceptowane przez składnik.
5.3.1 Polecenie
Pakiet polecenia FIRMWARE_UPDATE_OFFER -Information jest zdefiniowany w następujący sposób:
Tabela 5.3-1 FIRMWARE_UPDATE_OFFER — układ poleceń informacji
Składnik 5.3.1.1
Tabela 5.3-2 FIRMWARE_UPDATE_OFFER — polecenie informacyjne — rozmieszczenie komponentu
Bity bajtu Komponentu opisane są w tej tabeli.
Tabela 5.3-3 FIRMWARE_UPDATE_OFFER — polecenie informacyjne — bity składników
Offset bitowy | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Kod informacyjny | 8 | Ta wartość wskazuje typ informacji. Ta wartość nie jest maską bitową i może być tylko jedną z możliwych wartości opisanych w tabeli 5.3-4. |
8 | Zastrzeżony. | 8 | Zastrzeżony. Nie używaj. |
16 | Identyfikator składnika | 8 | Ustaw wartość na 0xFF. |
24 | Żeton | Host wstawia unikatowy token w pakiecie oferty dla składnika. Ten token musi zostać zwrócony przez komponent w odpowiedzi na ofertę. |
Tabela 5.3-4 FIRMWARE_UPDATE_OFFER — Komenda Informacyjna — Wartości Kodu Informacji
Stan | Nazwa | Opis |
---|---|---|
0x00 | POCZĄTEK_INFORMACJI_O_OFERCIE_CAŁA_TRANZAKCJA | Wskazuje, że host jest nowy, lub został ponownie załadowany, a całe przetwarzanie oferty jest (ponownie) uruchamiane. |
0x01 | OFFER_INFO_START_OFFER_LIST | Wskazuje początek listy ofert na hoście, jeśli akcesorium ma reguły pobierania skojarzone z zapewnieniem, że jeden podskładnik jest aktualizowany przed innym podskładnikiem w systemie. |
0x02 | OFFER_INFO_END_OFFER_LIST | Wskazuje koniec listy ofert od hosta. |
5.3.1.2 Zarezerwowane B7 - B4
Zastrzeżony. Nie używaj.
5.3.1.3 Zarezerwowane B11 - B8
Zastrzeżony. Nie używaj.
5.3.1.4 Zarezerwowane B15 - B12
Zastrzeżony. Nie używaj.
5.3.2 Odpowiedź
Odpowiedź pakietu FIRMWARE_UPDATE_OFFER — informacje dotyczące oferty jest zdefiniowana w następujący sposób.
Tabela 5.3-5 FIRMWARE_UPDATE_OFFER — układ odpowiedzi informacyjnej
5.3.2.1 Token
Tabela 5.3-6 FIRMWARE_UPDATE_OFFER — układ tokenu odpowiedzi pakietu informacyjnego
Bity bajtu tokenu zostały opisane w tej tabeli.
Tabela 5.3-7 FIRMWARE_UPDATE_OFFER — Informacja zwrotna — bity tokenu
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Zastrzeżony | 8 | Zastrzeżony. Nie używaj. |
8 | Zastrzeżony | 8 | Zastrzeżony. Nie używaj. |
16 | Zastrzeżony | 8 | Zastrzeżony. Nie używaj. |
24 | Żeton | 8 | Token do identyfikowania hosta |
5.3.2.2 Zarezerwowane B7 - B4
Zastrzeżony. Nie używaj.
5.3.2.3 Przyczyna odrzucenia (RR)
Tabela 5.3-8 FIRMWARE_UPDATE_OFFER — odpowiedź na informacje — układ kodu RR
Bity bajtu Przyczyna odrzucenia zostały opisane w tej tabeli.
Tabela 5.3-9 FIRMWARE_UPDATE_OFFER — odpowiedź na informacje o ofercie — bity kodu RR
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Kod RR | 8 | Kod przyczyny odrzucenia wskazujący powód podany przez komponent dla odrzucenia oferty. Możliwe wartości są opisane w tabeli 5.3-10. Ta wartość zależy od pola statusu. |
8 | Zastrzeżony | 24 | Zastrzeżony. Nie używaj. |
Możliwe wartości bajtu kodu RR są opisane w tej tabeli.
Tabela 5.3-10 FIRMWARE_UPDATE_OFFER — Informacyjna odpowiedź — wartości kodu RR
Kod RR | Nazwa | Opis |
---|---|---|
0x00 | FIRMWARE_OFFER_REJECT_OLD_FW | Oferta została odrzucona, ponieważ wersja oferowanego oprogramowania układowego jest starsza lub taka sama jak bieżące oprogramowanie układowe. |
0x01 | Odrzuć Niewłaściwą Ofertę Komponentów Firmware | Oferta została odrzucona, ponieważ oferowane oprogramowanie układowe nie ma zastosowania do platformy produktu. Powodem tego może być nieobsługiwany identyfikator składnika lub oferowany obraz, który nie jest zgodny ze sprzętem systemu. |
0x02 | OFERTA_AKTUALIZACJI_FIRMWARE ZAMIANA_OCZEKUJĄCA | Oprogramowanie układowe składnika zostało zaktualizowane, jednak oczekuje zamiana na nowe oprogramowanie układowe. Nie można kontynuować przetwarzania aktualizacji firmware'u do momentu zakończenia zamiany, co zazwyczaj następuje po zresetowaniu. |
0x03 — 0x08 | (Zarezerwowane) | Zastrzeżony. Nie używaj. |
0x09 — 0xDF | (Zarezerwowane) | Zastrzeżony. Nie używaj. |
0xE0 — 0xFF | (Specyficzne dla dostawcy) | Te wartości są używane przez projektantów protokołu, a znaczenie jest specyficzne dla dostawcy. |
5.3.2.4 Status
Tabela 5.3-11 FIRMWARE_UPDATE_OFFER — Struktura informacji o stanie odpowiedzi oferty
Bity bajtu Stan zostały opisane w tej tabeli.
Tabela 5.3-12 FIRMWARE_UPDATE_OFFER — Informacje o Ofercie — Bity Stanu Odpowiedzi
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Stan | 8 | To pole musi być ustawione na wartość FIRMWARE_UPDATE_OFFER_ACCEPT. Oznacza to, że składnik zdecydował się zaakceptować ofertę. |
8 | Zastrzeżony. | 24 | Zastrzeżony. Nie używaj. |
5.4 FIRMWARE_UPDATE_OFFER — rozszerzone
Jeśli identyfikator składnika w bajtach informacji o składniku jest ustawiony na 0xFE, bity (15 bajtów) są ponownie definiowane, aby wskazać polecenie oferty z hosta do oprogramowania układowego urządzenia. Ten mechanizm umożliwia rozszerzalność i sposób przekazywania przez hosta określonych informacji do urządzenia. Pakiety poleceń oferty są zwracane, gdy składnik jest gotowy do odpowiedzi "Zaakceptowane".
5.4.1 Polecenie
Jeśli identyfikator składnika w bajtach informacji o składniku jest ustawiony na 0xFE, cztery DWORD są ponownie zdefiniowane w następujący sposób:
Tabela 5.4-1 FIRMWARE_UPDATE_OFFER — rozszerzony układ poleceń
Składnik 5.4.1.1
Tabela 5.4-2 FIRMWARE_UPDATE_OFFER — rozszerzony pakiet poleceń — polecenie — układ komponentu
Bity bajtu komponentu są opisane w tej tabeli.
Tabela 5.4-3 FIRMWARE_UPDATE_OFFER — rozszerzone polecenie — bity komponentów
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Kod polecenia | 8 | Ta wartość wskazuje typ polecenia. Ta wartość nie jest maską bitową i może być tylko jedną z możliwych wartości opisanych w tabeli 5.4-4. |
8 | Zastrzeżony. | 8 | Zastrzeżony. Nie używaj. |
16 | Identyfikator składnika | 8 | Ustaw wartość 0xFE. |
24 | Żeton | Host wstawia unikatowy token w pakiecie oferty dla składnika. Ten token musi zostać zwrócony przez składnik w odpowiedzi na ofertę. |
Tabela 5.4-4 FIRMWARE_UPDATE_OFFER — rozszerzone polecenie — wartości kodu polecenia
Stan | Nazwa | Opis |
---|---|---|
0x01 | POWIADOMIENIE_OFERTA_W_GOTOWOŚCI | Wysłane przez hosta, jeśli oferta już wcześniej została odrzucona przez składnik. |
0x02 — 0xFF | Zastrzeżony | Zastrzeżony |
5.4.1.2 Zarezerwowane B7 - B4
Zastrzeżony. Nie używaj.
5.4.1.3 Zarezerwowane B11 - B8
Zastrzeżony. Nie używaj.
5.4.1.4 Zarezerwowane B15 - B12
Zastrzeżony. Nie używaj.
5.4.2 Odpowiedź
Odpowiedź urządzenia na komendę FIRMWARE_UPDATE_OFFER może nie zostać odebrana natychmiast. Odpowiedź jest zdefiniowana w następujący sposób.
Tabela 5.4-5 FIRMWARE_UPDATE_OFFER — rozszerzony układ odpowiedzi pakietu poleceń
5.4.2.1 Token
Tabela 5.4-6 FIRMWARE_UPDATE_OFFER — oferowanie odpowiedzi na pakiety poleceń — układ tokenu
Bity bajtu tokenu zostały opisane w tej tabeli.
Tabela 5.4-7 FIRMWARE_UPDATE_OFFER — oferowanie odpowiedzi polecenia — bity tokenu
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Zastrzeżony | 8 | Zastrzeżony. Nie używaj. |
8 | Zastrzeżony | 8 | Zastrzeżony. Nie używaj. |
16 | Zastrzeżony | 8 | Zastrzeżony. Nie używaj. |
24 | Żeton | 8 | Token do identyfikowania hosta. |
5.4.2.2 Zarezerwowane B7 - B4
Zastrzeżony. Nie używaj.
5.4.2.3 Powód odrzucenia
Tabela 5.4-8 FIRMWARE_UPDATE_OFFER — schemat RR odpowiedzi na ofertę pakietu informacyjnego
Bity bajtu Przyczyna odrzucenia zostały opisane w tej tabeli.
Tabela 5.4-9 FIRMWARE_UPDATE_OFFER — odpowiedź na polecenie oferty — kod RR
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Kod RR | 8 | Ta wartość zależy od pola Stan. Aby uzyskać informacje o możliwych wartościach kodu RR, zobacz Tabela 5.4-10. |
8 | Zastrzeżony | 24 | Zastrzeżony. Nie używaj. |
Możliwe wartości bajtu kodu RR są opisane w tej tabeli.
Tabela 5.4-10 FIRMWARE_UPDATE_OFFER — pakiet poleceń oferty — wartości kodu RR
Kod RR | Nazwa | Opis |
---|---|---|
0x00 | ODRZUCENIE_OFERTY_STAREGO_FIRMWARE | Oferta została odrzucona, ponieważ wersja oferowanego oprogramowania układowego jest starsza lub taka sama jak bieżące oprogramowanie układowe. |
0x01 | OFERTA_OPROGRAMOWANIA_ODRZUĆ_NW_KOMPONENT | Oferta została odrzucona, ponieważ oferowane oprogramowanie układowe nie ma zastosowania do platformy produktu. Może to być spowodowane nieobsługiwanym identyfikatorem składnika lub oferowany obraz systemowy nie jest zgodny ze sprzętem systemowym. |
0x02 | OFERTA_AKTUALIZACJI_FIRMWARE WYMIANA_OCZEKUJĄCA | Oprogramowanie układowe składnika zostało zaktualizowane, jednak jego zamiana na nowe jest w trakcie oczekiwania. Nie można kontynuować przetwarzania aktualizacji firmware do momentu zakończenia zamiany, co zazwyczaj odbywa się przez zresetowanie. |
0x03 — 0x08 | (Zarezerwowane) | Zastrzeżony. Nie używaj. |
0x09 — 0xDF | (Zarezerwowane) | Zastrzeżony. Nie używaj. |
0xE0 — 0xFF | (Specyficzne dla dostawcy) | Te wartości są używane przez projektantów protokołu, a znaczenie jest specyficzne dla dostawcy. |
5.4.2.4 Stan
Tabela 5.4-11 FIRMWARE_UPDATE_OFFER — układ statusu odpowiedzi pakietu polecenia oferty
Bity bajtu Stan zostały opisane w tej tabeli.
Tabela 5.4-12 FIRMWARE_UPDATE_OFFER — kod RR odpowiedzi na pakiety poleceń
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Stan | 8 | To pole musi być ustawione na wartość FIRMWARE_UPDATE_OFFER_ACCEPT. Oznacza to, że składnik zdecydował się zaakceptować ofertę. |
8 | Zastrzeżony. | 24 | Zastrzeżony. Nie używaj. |
5.5 AKTUALIZACJA OPROGRAMOWANIA UKŁADOWEGO ZAWARTOŚĆ
Host wysyła to polecenie do oprogramowania układowego urządzenia w celu udostępnienia zawartości oprogramowania układowego (czyli obrazu oprogramowania układowego). Cały plik obrazu nie powinien mieścić się w jednym poleceniu. Host musi podzielić obraz na mniejsze bloki, a każde polecenie wysyła jeden blok obrazu naraz.
Przy każdym poleceniu host wskazuje dodatkowe informacje — czy jest to pierwszy blok, ostatni blok itd. oprogramowania układowego. Podstawowy składnik oprogramowania układowego urządzenia akceptuje każdy blok obrazu przychodzącego oprogramowania układowego, przechowuje go w pamięci i musi odpowiadać na każde polecenie indywidualnie.
Gdy składnik podstawowy odbierze ostatni blok, składnik weryfikuje cały obraz oprogramowania układowego (sprawdzanie CRC, walidacja podpisu). Na podstawie wyników tych testów zwraca odpowiednią odpowiedź (niepowodzenie lub powodzenie) dla ostatniego bloku.
5.5.1 Polecenie
Układ polecenia FIRMWARE_UPDATE_CONTENT w tabeli 5.5-1
Nagłówek 5.5.1.1 (B7– B0)
Tabela 5.5-2 FIRMWARE_UPDATE_CONTENT Układ nagłówka polecenia
Bity nagłówka FIRMWARE_UPDATE_CONTENT są opisane w tej tabeli.
Bity nagłówka tabeli 5.5–3 FIRMWARE_UPDATE_CONTENT
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Flagi | 8 | To pole zawiera dodatkowe informacje o poleceniu. Ta wartość to maska flag do użycia na potrzeby transferów danych. Możliwe wartości są opisane w tabeli 5.5-4. |
8 | Długość danych | 8 | Długość pola danych określającego liczbę bajtów do zapisania. Biorąc pod uwagę rozmiar tego polecenia, maksymalna dozwolona wartość długości wynosi 52 bajty. |
16 | Numer sekwencji | 16 | Ta wartość jest tworzona przez hosta i jest unikatowa dla każdego wystawionego pakietu zawartości. Składnik musi zwrócić numer sekwencji w odpowiedzi na to żądanie. |
32 | Adres oprogramowania układowego | 32 | Little Endian (LSB First) Adres do zapisu danych. Adres jest oparty na 0. Oprogramowanie układowe używa tego jako wartości przesunięcia, aby określić potrzebny adres pamięci podczas umieszczania obrazu w pamięci. |
Możliwe wartości bajtu Flags zostały opisane w tej tabeli.
Tabela 5.5-4 FIRMWARE_UPDATE_OFFER — pakiet komendy oferty — wartości flagi
Flaga | Nazwa | Opis |
---|---|---|
0x80 | FIRMWARE_UPDATE_FLAG_FIRST_BLOCK | Ta flaga wskazuje, że jest to pierwszy blok obrazu oprogramowania układowego. |
0x40 | FIRMWARE_UPDATE_FLAG_LAST_BLOCK (flaga związana z ostatnim blokiem aktualizacji oprogramowania) | Ta flaga wskazuje, że jest to ostatni blok obrazu oprogramowania układowego i że obraz jest gotowy do zweryfikowania. Ważne jest, aby bieżące oprogramowanie układowe składnika przeprowadzało walidację całego pobranego obrazu po zapisaniu tego bloku w pamięci nietrwałej. |
5.5.1.2 Dane
Tabela 5.5-5 FIRMWARE_UPDATE_CONTENT Układ danych poleceń
Bity danych FIRMWARE_UPDATE_CONTENT zostały opisane w tej tabeli.
Bity danych polecenia w tabeli 5.5-6 FIRMWARE_UPDATE_CONTENT
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
64 | Dane | Maksymalnie 52. | Tablica bajtów do zapisu. Host zwykle wysyła bloki o 4 bajty w oparciu o architekturę produktu. Nieużywane bajty na końcu muszą być wypełnione zerami. |
5.5.2 Odpowiedź
Tabela 5.5-7 FIRMWARE_UPDATE_CONTENT układ odpowiedzi polecenia
5.5.2.1 Numer sekwencji
Tabela 5.5-8 Odpowiedź FIRMWARE_UPDATE_CONTENT — numer sekwencji
Bity odpowiedzi FIRMWARE_UPDATE_CONTENT (3-0) zostały opisane w tej tabeli.
Tabela 5.5-9 FIRMWARE_UPDATE_CONTENT — polecenie — bity odpowiedzi
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Numer sekwencji | 16 | To pole to numer sekwencji, który został wysłany przez hosta w żądaniu. |
16 | Zastrzeżony | 16 | Zastrzeżony. Nie używaj. |
5.5.2.2 Stan
Tabela 5.5-10 FIRMWARE_UPDATE_CONTENT układ stanu odpowiedzi
Bity odpowiedzi FIRMWARE_UPDATE_CONTENT (7–4) zostały opisane w tej tabeli.
Tabela 5.5-11 FIRMWARE_UPDATE_OFFER — odpowiedź — bity stanu
Przesunięcie bitowe | Pole | Rozmiar | Opis |
---|---|---|---|
0 | Stan | 8 | Ta wartość wskazuje kod stanu zwrócony przez składnik urządzenia. Nie jest to bitowe i może być jedną z wartości opisanych w tabeli 5.5-12. |
8 | Zastrzeżony | 24 | Zastrzeżony. Nie używaj. |
Możliwe wartości bajtów stanu zostały opisane w tej tabeli.
Tabela 5.5-12 FIRMWARE_UPDATE_OFFER — Odpowiedź — wartości kodu stanu
Flaga | Nazwa | Opis |
---|---|---|
0x00 | Aktualizacja oprogramowania zakończona sukcesem | Żądanie zostało ukończone pomyślnie. |
0x01 | BŁĄD_AKTUALIZACJI_FIRMWARE_PRZYGOTUJ | Składnik nie był przygotowany do odbierania zawartości oprogramowania układowego. W przypadku użycia ten kod jest zwykle używany w odpowiedzi na pierwszy blok. Na przykład usunięcie błędu na pamięci flash. |
0x02 | BŁĄD_AKTUALIZACJI_OPROGRAMOWANIA_WRITE | Żądanie nie może zapisać bajtów. |
0x03 | BŁĄD_AKTUALIZACJI_FIRMWARE_ZAKOŃCZONY | Żądanie nie może skonfigurować zamiany w odpowiedzi na FIRMWARE_UPDATE_FLAG_LAST_BLOCK. |
0x04 | BŁĄD_AKTUALIZACJI_OPROGRAMOWANIA_WERYFIKACJA | Weryfikacja DWORD nie powiodła się w odpowiedzi na FIRMWARE_UPDATE_FLAG_VERIFY. |
0x05 | FIRMWARE_UPDATE_ERROR_CRC | CRC obrazu oprogramowania układowego nie powiodło się w odpowiedzi na FIRMWARE_UPDATE_FLAG_LAST_BLOCK. |
0x06 | BŁĄD WERYFIKACJI AKTUALIZACJI OPROGRAMOWANIA UKŁADOWEGO | Weryfikacja podpisu oprogramowania układowego nie powiodła się w odpowiedzi na flagę aktualizacji oprogramowania układowego oznaczającą ostatni blok (FIRMWARE_UPDATE_FLAG_LAST_BLOCK). |
0x07 | BŁĄD_AKTUALIZACJI_FIRMWARE_WERSJA | Weryfikacja wersji oprogramowania układowego nie powiodła się w odpowiedzi na FIRMWARE_UPDATE_FLAG_LAST_BLOCK. |
0x08 | Aktualizacja oprogramowania - zamiana oczekująca | Oprogramowanie układowe zostało już zaktualizowane i trwa oczekiwanie na zamianę. Nie można zaakceptować żadnych dalszych poleceń aktualizacji oprogramowania układowego do czasu zresetowania akcesorium. |
0x09 | BŁĄD_AKTUALIZACJI_FIRMWARE_NIEPRAWIDŁOWY_ADRES | Oprogramowanie układowe wykryło nieprawidłowy adres docelowy w zawartości danych komunikatu. |
0x0A | BŁĄD_AKTUALIZACJI_OPROGRAMOWANIA_BRAK_OFERTY | Polecenie FIRMWARE_UPDATE_OFFER zostało odebrane bez uprzedniego otrzymania prawidłowej i zaakceptowanej oferty aktualizacji oprogramowania układowego. |
0x0B | BŁĄD_AKTUALIZACJI_FIRMWARE_NIEPRAWIDŁOWY | Błąd ogólny polecenia FIRMWARE_UPDATE_OFFER, taki jak nieprawidłowa odpowiednia długość danych. |
5.5.2.3 Zarezerwowane B8 - B11
Zastrzeżony. Nie używaj.
5.5.2.4 Zarezerwowane B12 - B15
Zastrzeżony. Nie używaj.
6 Dodatek 1: Przykładowa sekwencja poleceń programowania aktualizacji oprogramowania układowego
6.1 Przykład 1
Rozważ następujące oprogramowanie układowe urządzenia:
Składnik podstawowy — identyfikator składnika 1 — bieżące oprogramowanie układowe w wersji 7.0.1
Podskładnik — identyfikator składnika 2 — bieżące oprogramowanie układowe w wersji 12.4.54
Podskładnik — identyfikator składnika 3 — bieżące oprogramowanie układowe w wersji 4.4.2
Podskładnik — identyfikator składnika 4 — bieżąca wersja oprogramowania układowego 23.32.9
Host ma te trzy obrazy oprogramowania układowego:
Identyfikator składnika 1 — oprogramowanie układowe w wersji 7.1.3
Identyfikator komponentu 2 — oprogramowanie układowe w wersji 12.4.54
Identyfikator składnika 3 — wersja oprogramowania układowego 4.5.0
Sekwencja będzie:
Oferty hosta: Identyfikator składnika 1 — Wersja firmware 7.1.3
Składnik podstawowy akceptuje ofertę
Host wysyła obraz oprogramowania układowego
Składnik podstawowy akceptuje oprogramowanie układowe, weryfikuje go
Host oferuje: Identyfikator składnika 2 — wersja oprogramowania układowego 12.4.54
Składnik podstawowy odrzuca ofertę
Oferty hostów: Identyfikator składnika 3 — oprogramowanie układowe w wersji 4.5.0
Składnik podstawowy akceptuje ofertę
Host wysyła obraz oprogramowania układowego
Składnik podstawowy akceptuje oprogramowanie układowe, weryfikuje go
Ponieważ wszystkie oferty nie zostały odrzucone, gospodarz odtwarza wszystkie oferty:
Oferty hosta: Identyfikator składnika 1 — wersja oprogramowania układowego 7.1.3
Składnik odrzuca
Oferty hostów: Identyfikator składnika 2 — oprogramowanie układowe w wersji 12.4.54
Odrzucone składniki
Oferty hostów: Identyfikator składnika 3 — oprogramowanie układowe w wersji 4.5.0
Odrzucone składniki
6.2 Przykład 2
Rozważ następujące oprogramowanie układowe urządzenia:
Składnik podstawowy — identyfikator składnika 1 — bieżące oprogramowanie układowe w wersji 7.0.1
Podskładnik — identyfikator składnika 2 — bieżące oprogramowanie układowe w wersji 12.4.54
Podskładnik — identyfikator składnika 3 — bieżące oprogramowanie układowe w wersji 7.4.2
Podskładnik — identyfikator komponentu 4 — bieżąca wersja oprogramowania układowego: 23.32.9
Host ma te trzy obrazy firmware:
Identyfikator składnika 1 — oprogramowanie układowe w wersji 8.0.0
Identyfikator składnika 2 — firmware w wersji 12.4.54
Identyfikator składnika 3 – wersja oprogramowania układowego 9.0.0
Ponadto implementacja wymaga, aby wersja oprogramowania układowego podskładników nie może być mniejsza niż wersja oprogramowania układowego uruchomiona w składniku podstawowym. Host nie jest świadomy tego wymagania i up-to jest podstawowym składnikiem w celu zapewnienia tej reguły.
Sekwencja będzie:
Oferty hostów: Identyfikator składnika 1 — oprogramowanie układowe w wersji 8.0.0
Składnik podstawowy odrzuca (ponieważ identyfikator składnika 3 nie został jeszcze zaktualizowany)
Oferty hostów: Identyfikator składnika 2 — wersja oprogramowania układowego 12.4.54
Składnik podstawowy odrzuca
Oferty hostów: Identyfikator składnika 3 — oprogramowanie układowe w wersji 9.0.0
Podstawowy składnik akceptuje ofertę
Host wysyła obraz oprogramowania układowego
Składnik podstawowy akceptuje oprogramowanie układowe, weryfikuje go
Ponieważ wszystkie oferty nie zostały odrzucone, gospodarz odtwarza wszystkie oferty
Host oferuje: Identyfikator składnika 1 — wersja oprogramowania układowego 8.0.0
Podstawowy składnik akceptuje ofertę
Host wysyła obraz oprogramowania układowego
Składnik podstawowy akceptuje oprogramowanie układowe, weryfikuje go
Oferty hostów: Identyfikator składnika 2 — oprogramowanie układowe w wersji 12.4.54
Główny składnik odrzuca coś
Oferty hostów: Identyfikator składnika 3 — oprogramowanie układowe w wersji 9.0.0
Składnik podstawowy odrzuca