Uruchamianie i konfiguracja Microchip UG0881 PolarFire SoC FPGA
Gwarancja
Microsemi nie udziela żadnych rękojmi, oświadczeń ani gwarancji dotyczących informacji zawartych w niniejszym dokumencie lub przydatności swoich produktów i usług do określonego celu, ani też Microsemi nie przyjmuje żadnej odpowiedzialności wynikającej z zastosowania lub użycia jakiegokolwiek produktu lub obwodu. Produkty sprzedawane poniżej oraz wszelkie inne produkty sprzedawane przez Microsemi zostały poddane ograniczonym testom i nie powinny być używane w połączeniu ze sprzętem lub aplikacjami o znaczeniu krytycznym. Uważa się, że wszelkie specyfikacje wydajności są wiarygodne, ale nie są weryfikowane, a Kupujący musi przeprowadzić i ukończyć wszystkie testy wydajności i inne produkty, samodzielnie oraz razem z produktami końcowymi lub w nich zainstalowanymi. Kupujący nie będzie polegał na żadnych danych i specyfikacjach wydajności ani parametrach dostarczonych przez Microsemi. Obowiązkiem Kupującego jest niezależne określenie przydatności wszelkich produktów oraz ich przetestowanie i weryfikacja. Informacje dostarczone przez Microsemi w ramach niniejszej Umowy są dostarczane „tak jak są, gdzie są” i ze wszystkimi wadami, a całe ryzyko związane z takimi informacjami ponosi wyłącznie Kupujący. Microsemi nie przyznaje, w sposób wyraźny ani pośredni, żadnej stronie żadnych praw patentowych, licencji ani żadnych innych praw własności intelektualnej, czy to w odniesieniu do samych takich informacji, czy czegokolwiek opisanego w takich informacjach. Informacje zawarte w tym dokumencie są własnością firmy Microsemi i Microsemi zastrzega sobie prawo do wprowadzania jakichkolwiek zmian w informacjach zawartych w tym dokumencie lub w dowolnych produktach i usługach w dowolnym momencie i bez powiadomienia.
O Microsemi
Microsemi, spółka zależna należąca w całości do Microchip Technology Inc. (Nasdaq: MCHP), oferuje kompleksowe portfolio rozwiązań półprzewodnikowych i systemowych dla przemysłu lotniczego i obronnego, komunikacji, centrów danych i rynków przemysłowych. Produkty obejmują wysokowydajne i odporne na promieniowanie analogowe układy scalone sygnałów mieszanych, układy FPGA, SoC i ASIC; produkty do zarządzania energią; urządzenia do pomiaru czasu i synchronizacji oraz precyzyjne rozwiązania czasowe, wyznaczające światowy standard czasu; urządzenia do przetwarzania głosu; rozwiązania RF; elementy dyskretne; rozwiązania pamięci masowej i komunikacji dla przedsiębiorstw, technologie bezpieczeństwa i skalowalne zabezpieczenia anty-tamper produkty; rozwiązania Ethernet; Układy scalone Power-over-Ethernet i urządzenia midspan; a także niestandardowe możliwości i usługi projektowe. Dowiedz się więcej na www.microsemi.com.
Uruchamianie i konfiguracja
Układy FPGA PolarFire SoC wykorzystują zaawansowane obwody zasilania, aby zapewnić niezawodne włączanie podczas włączania i resetowania. Po włączeniu zasilania i zresetowaniu sekwencja rozruchu PolarFire SoC FPGA następuje po zresetowaniu po włączeniu zasilania (POR), uruchomieniu urządzenia, inicjalizacji projektu, wstępnym uruchomieniu podsystemu mikrokontrolera (MSS) i uruchomieniu użytkownika MSS. W tym dokumencie opisano wstępne uruchamianie MSS i uruchamianie użytkownika MSS. Informacje na temat POR, uruchamiania urządzenia i inicjalizacji projektu można znaleźć w UG0890: Podręcznik użytkownika dotyczący uruchamiania i resetowania FPGA PolarFire SoC.
Więcej informacji na temat funkcji MSS można znaleźć w UG0880: Podręcznik użytkownika PolarFire SoC MSS.
Sekwencja rozruchowa
Sekwencja rozruchu rozpoczyna się po włączeniu lub zresetowaniu układu PolarFire SoC FPGA. Kończy się, gdy procesor jest gotowy do wykonania programu użytkowego. Ta sekwencja rozruchowa przebiega przez kilka sekundtages zanim rozpocznie wykonywanie programów.
Podczas procesu uruchamiania wykonywany jest zestaw operacji, który obejmuje resetowanie sprzętu po włączeniu zasilania, inicjalizację urządzeń peryferyjnych, inicjalizację pamięci i ładowanie aplikacji zdefiniowanej przez użytkownika z pamięci nieulotnej do pamięci ulotnej w celu wykonania.
Poniższy rysunek przedstawia różne fazy sekwencji rozruchowej.
Rysunek 1 Sekwencja rozruchowa
Przed uruchomieniem MSS
Po pomyślnym zakończeniu inicjalizacji projektu, MSS Pre-boot rozpoczyna wykonywanie. MSS zostaje zwolniony z resetu po zakończeniu wszystkich normalnych procedur uruchamiania. Kontroler systemu zarządza programowaniem, inicjalizacją i konfiguracją urządzeń. Uruchomienie wstępne MSS nie nastąpi, jeśli zaprogramowane urządzenie jest skonfigurowane do trybu wstrzymania kontrolera systemu.
Faza inicjalizacji przed rozruchem MSS jest koordynowana przez oprogramowanie sprzętowe kontrolera systemu, chociaż może wykorzystywać E51 w kompleksie MSS Core do wykonywania pewnych części sekwencji przed rozruchem.
Podczas rozruchu MSS mają miejsce następujące zdarzeniatage:
- Włączenie wbudowanej pamięci nieulotnej MSS (eNVM)
- Inicjowanie naprawy redundancji związanej z pamięcią podręczną L2 MSS Core Complex
- Uwierzytelnianie kodu rozruchowego użytkownika (jeśli włączona jest opcja rozruchu bezpiecznego użytkownika)
- Przekaż operacyjny MSS do kodu startowego użytkownika
MSS Core Complex można uruchomić w jednym z czterech trybów. W poniższej tabeli wymieniono opcje wstępnego rozruchu MSS, które można skonfigurować i zaprogramować w sNVM. Tryb rozruchu jest zdefiniowany przez parametr użytkownika U_MSS_BOOTMODE[1:0]. Dodatkowe dane konfiguracyjne rozruchu zależą od trybu i są definiowane przez parametr użytkownika U_MSS_BOOTCFG (patrz Tabela 3, strona 4 i Tabela 5, strona 6).
Tabela 1 • Złożone tryby rozruchu MSS Core
U_MSS_BOOTMODE[1:0] | Tryb | Opis |
0 | Bezczynny rozruch | MSS Core Complex uruchamia się z rozruchowej pamięci ROM, jeśli MSS nie jest skonfigurowany |
1 | Niezabezpieczony rozruch | MSS Core Complex uruchamia się bezpośrednio z adresu zdefiniowanego przez U_MSS_BOOTADDR |
2 | Bezpieczny rozruch użytkownika | MSS Core Complex uruchamia się z sNVM |
3 | Fabrycznie bezpieczny rozruch | MSS Core Complex uruchamia się przy użyciu fabrycznego protokołu bezpiecznego rozruchu |
Opcja rozruchu jest wybierana w ramach procesu projektowania Libero. Zmiana trybu może być osiągnięta jedynie poprzez wygenerowanie nowego programowania FPGA file.
Rysunek 2 • Przebieg MSS przed uruchomieniem
Bezczynny rozruch
Jeśli MSS nie jest skonfigurowany (npample, puste urządzenie), wówczas MSS Core Complex wykonuje program rozruchowy ROM, który utrzymuje wszystkie procesory w nieskończonej pętli, dopóki debuger nie połączy się z celem. Rejestry wektora rozruchowego zachowują swoją wartość do momentu zresetowania urządzenia lub zaprogramowania nowej konfiguracji trybu rozruchu. W przypadku skonfigurowanych urządzeń tryb ten można zaimplementować za pomocą
U_MSS_BOOTMODE=0 opcja bootowania w konfiguratorze Libero.
Notatka: W tym trybie U_MSS_BOOTCFG nie jest używany.
Poniższy rysunek przedstawia przebieg rozruchu w stanie bezczynności.
Rysunek 3 • Przepływ bezczynnego rozruchu
Niezabezpieczony rozruch
W tym trybie kompleks MSS Core Complex działa z określonego adresu eNVM bez uwierzytelniania. Zapewnia najszybszą opcję rozruchu, ale nie ma uwierzytelnienia obrazu kodu. Adres można określić ustawiając U_MSS_BOOTADDR w konfiguratorze Libero. Tego trybu można również używać do rozruchu z dowolnego zasobu pamięci FPGA Fabric poprzez FIC. Ten tryb jest realizowany za pomocą
U_MSS_BOOTMODE=1 opcja rozruchu.
Kompleks MSS Core jest zwalniany z resetowania za pomocą wektorów rozruchowych zdefiniowanych przez U_MSS_BOOTCFG (jak wymieniono w poniższej tabeli).
Tabela 2 • U_MSS_BOOTCFG Użycie w trybie niezabezpieczonego rozruchu 1
Przesunięcie (bajty) |
Rozmiar (w bajtach) |
Nazwa |
Opis |
0 | 4 | BOOTVEC0 | Wektor rozruchowy dla E51 |
4 | 4 | BOOTVEC1 | Wektor rozruchowy dla U540 |
8 | 4 | BOOTVEC2 | Wektor rozruchowy dla U541 |
16 | 4 | BOOTVEC3 | Wektor rozruchowy dla U542 |
20 | 4 | BOOTVEC4 | Wektor rozruchowy dla U543 |
Poniższy rysunek przedstawia przebieg niezabezpieczonego rozruchu.
Rysunek 4 • Niezabezpieczony przepływ rozruchu
Bezpieczny rozruch użytkownika
Ten tryb umożliwia użytkownikowi wdrożenie własnego, niestandardowego bezpiecznego rozruchu, a kod bezpiecznego rozruchu użytkownika jest umieszczany w sNVM. sNVM to pamięć nieulotna o pojemności 56 KB, która może być chroniona przez wbudowaną funkcję fizycznie nieklonowalną (PUF). Ta metoda rozruchu jest uważana za zabezpieczoną, ponieważ strony sNVM oznaczone jako ROM są niezmienne. Po włączeniu zasilania kontroler systemu kopiuje kod bezpiecznego rozruchu użytkownika z sNVM do pamięci Data Tightly Integrated Memory (DTIM) rdzenia monitora E51. E51 rozpoczyna wykonywanie bezpiecznego kodu rozruchowego użytkownika.
Jeśli rozmiar bezpiecznego kodu rozruchowego użytkownika jest większy niż rozmiar DTIM, użytkownik musi podzielić kod rozruchowy na dwie częścitages. sNVM może zawierać następne stage sekwencji rozruchowej użytkownika, która może przeprowadzić uwierzytelnienie następnego rozruchutage przy użyciu algorytmu uwierzytelniania/deszyfrowania użytkownika.
Jeśli używane są strony uwierzytelnione lub zaszyfrowane, wówczas ten sam klucz USK (tzn.
U_MSS_BOOT_SNVM_USK) musi być używany dla wszystkich uwierzytelnionych/zaszyfrowanych stron.
Jeśli uwierzytelnienie nie powiedzie się, można zresetować kompleks MSS Core i ustawić BOOT_FAIL tampflagę można podnieść. Ten tryb jest realizowany przy użyciu opcji rozruchu U_MSS_BOOTMODE=2.
Tabela 3 • U_MSS_BOOTCFG Użycie w bezpiecznym rozruchu użytkownika
Przesunięcie (bajty) | Rozmiar (w bajtach) | Nazwa | Opis |
0 | 1 | U_MSS_BOOT_SNVM_PAGE | Strona startowa w SNVM |
1 | 3 | SKRYTY | Do wyrównania |
4 | 12 | U_MSS_BOOT_SNVM_USK | W przypadku stron uwierzytelnionych/szyfrowanych |
Poniższy rysunek przedstawia bezpieczny przebieg rozruchu użytkownika.
Rysunek 5 • Bezpieczny przepływ rozruchu użytkownika
Fabrycznie bezpieczny rozruch
W tym trybie kontroler systemu odczytuje certyfikat bezpiecznego rozruchu (SBIC) z eNVM i sprawdza poprawność SBIC. Po pomyślnej weryfikacji kontroler systemu kopiuje fabryczny kod bezpiecznego rozruchu ze swojego prywatnego, bezpiecznego obszaru pamięci i ładuje go do DTIM rdzenia monitora E51. Domyślny bezpieczny rozruch sprawdza podpis na obrazie eNVM przy użyciu kodu SBIC przechowywanego w eNVM. Jeśli nie zostaną zgłoszone żadne błędy, do kompleksu MSS Core zostanie wydany reset. Jeśli zostaną zgłoszone błędy, kompleks MSS Core Complex zostanie zresetowany, a BOOT_FAIL tampflaga jest podniesiona. Następnie sterownik systemu aktywuje się o godzamper, która wysyła sygnał do struktury FPGA w celu podjęcia działań przez użytkownika. Ten tryb jest realizowany przy użyciu opcji rozruchu U_MSS_BOOTMODE=3.
SBIC zawiera adres, rozmiar, skrót i podpis algorytmu podpisu cyfrowego krzywej eliptycznej (ECDSA) chronionego binarnego obiektu BLOB. ECDSA oferuje wariant algorytmu podpisu cyfrowego, który wykorzystuje kryptografię krzywych eliptycznych. Zawiera także wektor resetowania dla każdego sprzętu
wątek/rdzeń/rdzeń procesora (Hart) w systemie.
Tabela 4 • Certyfikat bezpiecznego obrazu rozruchowego (SBIC)
Zrównoważyć | Rozmiar (w bajtach) | Wartość | Opis |
0 | 4 | ADRES OBRAZU | Adres UBL na mapie pamięci MSS |
4 | 4 | OBRAZ | Rozmiar UBL w bajtach |
8 | 4 | BOOTVEC0 | Wektor rozruchowy w UBL dla E51 |
12 | 4 | BOOTVEC1 | Wektor rozruchowy w UBL dla U540 |
16 | 4 | BOOTVEC2 | Wektor rozruchowy w UBL dla U541 |
20 | 4 | BOOTVEC3 | Wektor rozruchowy w UBL dla U542 |
24 | 4 | BOOTVEC4 | Wektor rozruchowy w UBL dla U543 |
28 | 1 | OPCJE[7:0] | Opcje SBI |
28 | 3 | SKRYTY | |
32 | 8 | WERSJA | Wersja SBIC/obrazu |
40 | 16 | DSN | Opcjonalne powiązanie DSN |
56 | 48 | H | Hash SHA-384 obrazu UBL |
104 | 104 | KODESJ | Podpis ECDSA zakodowany w DER |
Całkowity | 208 | Bajty |
DSN
Jeśli pole DSN jest niezerowe, jest ono porównywane z własnym numerem seryjnym urządzenia. Jeśli porównanie się nie powiedzie, boot_fail tamper jest ustawiona i uwierzytelnianie zostaje przerwane.
WERSJA
Jeśli unieważnienie SBIC jest włączone przez U_MSS_REVOCATION_ENABLE, SBIC zostanie odrzucone, chyba że wartość VERSION jest większa lub równa progowi unieważnienia.
OPCJA ODWOŁANIA SBIC
Jeśli unieważnienie SBIC jest włączone przez U_MSS_REVOCATION_ENABLE, a OPTIONS[0] ma wartość „1”, wszystkie wersje SBIC mniejsze niż VERSION zostaną unieważnione po całkowitym uwierzytelnieniu SBIC. Próg unieważnienia pozostaje na nowej wartości, dopóki nie zostanie ponownie zwiększony o przyszły SBIC z OPTIONS[0] = „1” i wyższym polem WERSJA. Próg unieważnienia można zwiększać wyłącznie przy użyciu tego mechanizmu i można go zresetować jedynie za pomocą strumienia bitów.
Gdy próg unieważnienia jest aktualizowany dynamicznie, próg jest przechowywany przy użyciu schematu nadmiarowego przechowywania używanego dla haseł, tak aby awaria zasilania podczas rozruchu urządzenia nie powodowała niepowodzenia kolejnego rozruchu urządzenia. Jeżeli aktualizacja progu unieważnienia nie powiedzie się, gwarantuje się, że wartość progu będzie nową lub poprzednią wartością.
Tabela 5 • U_MSS_BOOTCFG Użycie w trybie fabrycznego modułu ładującego
Przesunięcie (bajty) |
Rozmiar (w bajtach) |
Nazwa |
Opis |
0 | 4 | U_MSS_SBIC_ADDR | Adres SBIC w przestrzeni adresowej MSS |
4 | 4 | U_MSS_REVOCATION_ENABLE | Włącz unieważnianie SBIC, jeśli jest niezerowe |
Poniższy rysunek przedstawia fabrycznie bezpieczny przebieg rozruchu.
Rysunek 6 • Fabrycznie bezpieczny przepływ rozruchu
Rozruch użytkownika MSS
Rozruch użytkownika MSS ma miejsce, gdy kontrola jest przekazywana z kontrolera systemu do MSS Core Complex. Po pomyślnym uruchomieniu wstępnym MSS kontroler systemu zwalnia reset do kompleksu MSS Core. MSS można uruchomić na jeden z następujących sposobów:
- Aplikacja z gołym metalem
- Aplikacja dla Linuksa
- AMP Aplikacja
Aplikacja z gołym metalem
Aplikacje typu bare metal dla PolarFire SoC można opracować za pomocą narzędzia SoftConsole. To narzędzie zapewnia dane wyjściowe files w formie .hex, który może zostać użyty w przepływie Libero i włączony do programowego strumienia bitów file. Tego samego narzędzia można użyć do debugowania aplikacji Bare Metal przy użyciu JTAG
interfejs.
Poniższy rysunek przedstawia aplikację SoftConsole Bare Metal, która ma pięć rdzeni (rdzeni), w tym rdzeń monitora E51.
Rysunek 7 • Projekt SoftConsole
Aplikacja dla Linuksa
W tej sekcji opisano sekwencję rozruchową systemu Linux działającego na wszystkich rdzeniach U54.
Typowy proces uruchamiania składa się z trzech poleceńtages. Pierwsze stagProgram ładujący (FSBL) jest wykonywany z wbudowanej pamięci rozruchowej (eNVM). FSBL ładuje drugie stage moduł ładujący (SSBL) z urządzenia rozruchowego do zewnętrznej pamięci RAM lub pamięci podręcznej. Urządzeniem startowym może być eNVM, mikrokontroler z wbudowaną pamięcią (eMMC) lub zewnętrzny Flash SPI. SSBL ładuje system operacyjny Linux z urządzenia startowego do zewnętrznej pamięci RAM. W trzecim stage, Linux jest wykonywany z zewnętrznej pamięci RAM.
Poniższy rysunek przedstawia przebieg procesu rozruchu systemu Linux.
Rysunek 8 • Typowy przebieg procesu rozruchu systemu Linux
Szczegóły dotyczące FSBL, drzewa urządzeń, Linuksa i kompilacji YOCTO, a także sposobu budowania i konfigurowania Linuksa zostaną podane w przyszłej wersji tego dokumentu.
AMP Aplikacja
Szczegółowy opis Libero MSS Configurator i sposobu debugowania aplikacji wieloprocesorowych przy użyciu SoftConsole zostanie podany w przyszłej wersji tego dokumentu.
Różne źródła uruchamiania
Do aktualizacji w przyszłych wersjach tego dokumentu.
Konfiguracja rozruchu
Do aktualizacji w przyszłych wersjach tego dokumentu.
Akronimy
W tym dokumencie zastosowano następujące akronimy.
Tabela 1 • Lista akronimów
Akronim rozwinięty
- AMP Asymetryczne przetwarzanie wielokrotne
- DTIM Pamięć ściśle zintegrowana z danymi (zwana także SRAM)
- ECDS Elliptic Curve Digital Signature Algorithm
- eNVM wbudowana pamięć nieulotna
- FSBL Pierwszy Stage Program ładujący
- Jeleń Wątek sprzętowy/rdzeń/rdzeń procesora
- Rękopis Podsystem mikroprocesora
- POR Włącz reset
- PUF Funkcja fizycznie nieklonowalna
- ROM Pamięć tylko do odczytu
- SCB Mostek kontrolera systemu
- sNVM Bezpieczna pamięć nieulotna
Historia rewizji
Historia zmian opisuje zmiany, które zostały wprowadzone w dokumencie. Zmiany są wymienione według wersji, począwszy od bieżącej publikacji.
Wersja 2.0
Poniżej znajduje się podsumowanie zmian wprowadzonych w tej wersji.
- Informacje o Factory Secure Boot zostały zaktualizowane.
- Informacje o aplikacji Bare Metal zostały zaktualizowane.
Wersja 1.0
Pierwsza publikacja tego dokumentu.
Siedziba Microsemi
Jedno Przedsiębiorstwo, Aliso Viejo,
CA 92656 Stany Zjednoczone
W USA: +1 800-713-4113
Poza USA: +1 949-380-6100
Obroty: +1 949-380-6136
Faks: +1 949-215-4996
E-mail: sales.support@microsemi.com
www.microsemi.com
©2020 Microsemi, spółka zależna należąca w całości do Microchip Technology Inc. Wszelkie prawa zastrzeżone. Microsemi i logo Microsemi są zastrzeżonymi znakami towarowymi firmy Microsemi Corporation. Wszystkie inne znaki towarowe i znaki usługowe są własnością ich odpowiednich właścicieli.
Dokumenty / Zasoby
![]() |
Uruchamianie i konfiguracja Microchip UG0881 PolarFire SoC FPGA [plik PDF] Instrukcja użytkownika UG0881 Uruchamianie i konfiguracja PolarFire SoC FPGA, UG0881, Uruchamianie i konfiguracja PolarFire SoC FPGA, Uruchamianie i konfiguracja |