Mikrosemi-LGOO

Microchip UG0881 PolarFire SoC FPGA bootování a konfigurace

Microchip-UG0881-PolarFire-SoC-FPGA-Booting-and-Configuration-product

Záruka

Microsemi neposkytuje žádnou záruku, prohlášení ani záruku týkající se informací zde obsažených nebo vhodnosti svých produktů a služeb pro jakýkoli konkrétní účel, ani nepřebírá žádnou odpovědnost vyplývající z použití nebo použití jakéhokoli produktu nebo okruhu. Zde prodávané produkty a jakékoli další produkty prodávané společností Microsemi byly podrobeny omezenému testování a neměly by být používány ve spojení s kritickými zařízeními nebo aplikacemi. Jakékoli výkonnostní specifikace jsou považovány za spolehlivé, ale nejsou ověřeny, a Kupující musí provést a dokončit veškeré výkonnostní a další testování produktů, a to samostatně a společně s jakýmikoli koncovými produkty nebo v nich instalované. Kupující se nebude spoléhat na žádná data a výkonové specifikace nebo parametry poskytnuté společností Microsemi. Je odpovědností kupujícího nezávisle určit vhodnost jakýchkoli produktů a testovat a ověřit je. Informace poskytované společností Microsemi níže jsou poskytovány „tak, jak jsou, kde jsou“ a se všemi chybami a veškerá rizika spojená s těmito informacemi nese výhradně Kupující. Microsemi neuděluje, explicitně ani implicitně, žádné straně žádná patentová práva, licence nebo jakákoli jiná práva duševního vlastnictví, ať už s ohledem na takové informace samotné nebo cokoli popsaného v těchto informacích. Informace uvedené v tomto dokumentu jsou majetkem společnosti Microsemi a společnost Microsemi si vyhrazuje právo provádět jakékoli změny informací v tomto dokumentu nebo jakýchkoli produktů a služeb kdykoli bez upozornění.

O Microsemi

Microsemi, XNUMX% dceřiná společnost Microchip Technology Inc. (Nasdaq: MCHP), nabízí komplexní portfolio polovodičových a systémových řešení pro letectví a obranu, komunikace, datová centra a průmyslové trhy. Produkty zahrnují vysoce výkonné a radiací zesílené analogové integrované obvody se smíšeným signálem, FPGA, SoC a ASIC; produkty pro řízení spotřeby; časovací a synchronizační zařízení a přesná časová řešení, stanovující světový standard pro čas; Zařízení pro zpracování hlasu; RF řešení; diskrétní součásti; podniková úložiště a komunikační řešení, bezpečnostní technologie a škálovatelný anti-tamper produkty; Ethernetová řešení; Integrované obvody Power-over-Ethernet a střední rozpětí; stejně jako možnosti a služby vlastního návrhu. Více se dozvíte na www.microsemi.com.

Bootování a konfigurace

PolarFire SoC FPGA využívají pokročilé zapínací obvody k zajištění spolehlivého zapnutí při zapnutí a resetu. Při zapnutí a resetu následuje spouštěcí sekvence PolarFire SoC FPGA po resetu při zapnutí (POR), spuštění zařízení, inicializaci návrhu, před spuštěním mikrokontrolérového subsystému (MSS) a zavedení uživatele MSS. Tento dokument popisuje MSS pre-boot a MSS User Boot. Informace o POR, spouštění zařízení a inicializaci návrhu naleznete v uživatelské příručce UG0890: PolarFire SoC FPGA Power-Up and Resets.
Další informace o funkcích MSS najdete v UG0880: Uživatelská příručka PolarFire SoC MSS.

Spouštěcí sekvence
Spouštěcí sekvence začíná, když je PolarFire SoC FPGA zapnuto nebo resetováno. Končí, když je procesor připraven ke spuštění aplikačního programu. Tato zaváděcí sekvence probíhá několik sekundtages před zahájením provádění programů.
Během procesu spouštění se provádí sada operací, které zahrnují resetování hardwaru po zapnutí, inicializaci periferií, inicializaci paměti a načtení uživatelem definované aplikace z energeticky nezávislé paměti do energeticky nezávislé paměti pro provedení.

Následující obrázek ukazuje různé fáze spouštěcí sekvence.

Obrázek 1  Spouštěcí sekvenceMicrochip-UG0881-PolarFire-SoC-FPGA-Bootování-A-Konfigurace-obr 1

Před spuštěním MSS

Po úspěšném dokončení inicializace návrhu se spustí MSS Pre-boot. MSS se uvolní z resetu po dokončení všech běžných spouštěcích procedur. Řadič systému řídí programování, inicializaci a konfiguraci zařízení. MSS Pre-boot nenastane, pokud je naprogramované zařízení nakonfigurováno pro režim pozastavení řadiče systému.
Fáze inicializace MSS před spuštěním je koordinována firmwarem řadiče systému, i když může využít E51 v MSS Core Complex k provedení určitých částí sekvence před spuštěním.
Následující události nastanou během MSS před spuštěnímtage:

  • Zapnutí energeticky nezávislé paměti vestavěné MSS (eNVM)
  • Inicializace opravy redundance spojené s mezipamětí MSS Core Complex L2
  • Ověření spouštěcího kódu uživatele (pokud je povolena možnost User Secure boot)
  • Předání funkčního MSS spouštěcímu kódu uživatele

MSS Core Complex lze spustit v jednom ze čtyř režimů. V následující tabulce jsou uvedeny možnosti MSS před spuštěním, které lze nakonfigurovat a naprogramovat do sNVM. Režim bootování je definován uživatelským parametrem U_MSS_BOOTMODE[1:0]. Další konfigurační data spouštění jsou závislá na režimu a jsou definována uživatelským parametrem U_MSS_BOOTCFG (viz Tabulka 3, strana 4 a Tabulka 5, strana 6).

Tabulka 1 • Komplexní spouštěcí režimy MSS Core

U_MSS_BOOTMODE[1:0] Režim Popis
0 Idle boot MSS Core Complex se spouští z boot ROM, pokud MSS není nakonfigurován
1 Nezabezpečené spouštění MSS Core Complex se spouští přímo z adresy definované v U_MSS_BOOTADDR
2 Uživatelsky zabezpečené spouštění Boty MSS Core Complex od sNVM
3 Továrně zabezpečené bootování MSS Core Complex se spouští pomocí továrního zabezpečeného spouštěcího protokolu

Volba botičky je vybrána jako součást návrhu Libero. Změnu režimu lze dosáhnout pouze vytvořením nového programování FPGA file.

Obrázek 2 • Tok MSS před spuštěním Microchip-UG0881-PolarFire-SoC-FPGA-Bootování-A-Konfigurace-obr 2

Idle Boot

Pokud není MSS nakonfigurováno (napřample, prázdné zařízení), pak MSS Core Complex spustí boot ROM program, který udržuje všechny procesory v nekonečné smyčce, dokud se k cíli nepřipojí debugger. Registry spouštěcích vektorů si zachovají svou hodnotu, dokud není zařízení resetováno nebo dokud není naprogramována nová konfigurace režimu spouštění. U nakonfigurovaných zařízení lze tento režim implementovat pomocí
U_MSS_BOOTMODE=0 možnost bootování v konfigurátoru Libero.

Poznámka: V tomto režimu se nepoužívá U_MSS_BOOTCFG.

Následující obrázek ukazuje průběh spouštění při nečinnosti.
Obrázek 3 • Idle Boot FlowMicrochip-UG0881-PolarFire-SoC-FPGA-Bootování-A-Konfigurace-obr 3

Nezabezpečené spouštění

V tomto režimu se MSS Core Complex spouští ze zadané adresy eNVM bez ověřování. Poskytuje nejrychlejší možnost spouštění, ale nedochází k ověřování obrazu kódu. Adresu lze zadat nastavením U_MSS_BOOTADDR v konfigurátoru Libero. Tento režim lze také použít ke spuštění z libovolného paměťového prostředku FPGA Fabric prostřednictvím FIC. Tento režim je implementován pomocí
U_MSS_BOOTMODE=1 možnost spouštění.
MSS Core Complex se uvolní z resetu se zaváděcími vektory definovanými U_MSS_BOOTCFG (jak je uvedeno v následující tabulce).

Tabulka 2 • U_MSS_BOOTCFG Použití v režimu nezabezpečeného spouštění 1

Offset (bajty)  

Velikost (bajty)

 

Jméno

 

Popis

0 4 BOOTVEC0 Spouštěcí vektor pro E51
4 4 BOOTVEC1 Spouštěcí vektor pro U540
8 4 BOOTVEC2 Spouštěcí vektor pro U541
16 4 BOOTVEC3 Spouštěcí vektor pro U542
20 4 BOOTVEC4 Spouštěcí vektor pro U543

Následující obrázek ukazuje nezabezpečený tok spouštění.
Obrázek 4 • Nezabezpečený Boot FlowMicrochip-UG0881-PolarFire-SoC-FPGA-Bootování-A-Konfigurace-obr 4

Uživatelem zabezpečené spouštění
Tento režim umožňuje uživateli implementovat vlastní bezpečné spouštění a kód bezpečného spouštění uživatele je umístěn do sNVM. sNVM je 56 KB energeticky nezávislá paměť, kterou lze chránit vestavěnou funkcí PUF (Physically Unclonable Function). Tato metoda spouštění je považována za zabezpečenou, protože stránky sNVM označené jako ROM jsou neměnné. Při zapnutí systémový řadič zkopíruje uživatelský bezpečný spouštěcí kód z sNVM do Data Tightly Integrated Memory (DTIM) jádra monitoru E51. E51 zahájí provádění uživatelského zabezpečeného spouštěcího kódu.
Pokud je velikost uživatelského zabezpečeného spouštěcího kódu větší než velikost DTIM, musí uživatel spouštěcí kód rozdělit na dvětages. sNVM může obsahovat další stage uživatelské spouštěcí sekvence, která může provést ověření dalšího spouštěnítage pomocí algoritmu ověřování/dešifrování uživatele.
Pokud jsou použity ověřené nebo šifrované stránky, pak stejný klíč USK (tj.
U_MSS_BOOT_SNVM_USK) musí být použit pro všechny ověřené/šifrované stránky.
Pokud autentizace selže, MSS Core Complex může být resetován a BOOT_FAIL tampvlajka může být vztyčena. Tento režim je implementován pomocí spouštěcí možnosti U_MSS_BOOTMODE=2.

Tabulka 3 •  U_MSS_BOOTCFG Použití v User Secure Boot

Offset (bajty) Velikost (bajty) Jméno Popis
0 1 U_MSS_BOOT_SNVM_PAGE Úvodní stránka v SNVM
1 3 REZERVOVÁNO Pro zarovnání
4 12 U_MSS_BOOT_SNVM_USK Pro ověřené/šifrované stránky

Následující obrázek ukazuje uživatelský bezpečný tok spouštění.
Obrázek 5 • Uživatelský bezpečný tok spouštěníMicrochip-UG0881-PolarFire-SoC-FPGA-Bootování-A-Konfigurace-obr 5

Tovární bezpečné spouštění
V tomto režimu systémový řadič čte Secure Boot Image Certificate (SBIC) z eNVM a ověřuje SBIC. Po úspěšném ověření systémový ovladač zkopíruje tovární zabezpečený spouštěcí kód ze své soukromé, zabezpečené oblasti paměti a načte jej do DTIM jádra monitoru E51. Výchozí zabezpečené spouštění provádí kontrolu podpisu obrazu eNVM pomocí SBIC, který je uložen v eNVM. Pokud nejsou hlášeny žádné chyby, reset je uvolněn do MSS Core Complex. Pokud jsou hlášeny chyby, MSS Core Complex se resetuje a BOOT_FAIL tampje vztyčena vlajka. Poté se systémový ovladač aktivuje přiamper flag, který prosazuje signál do struktury FPGA pro akci uživatele. Tento režim je implementován pomocí spouštěcí možnosti U_MSS_BOOTMODE=3.

SBIC obsahuje adresu, velikost, hash a podpis algoritmu digitálního podpisu eliptické křivky (ECDSA) chráněného binárního blobu. ECDSA nabízí variantu algoritmu Digital Signature Algorithm, který využívá kryptografii eliptických křivek. Obsahuje také vektor resetování pro každý hardware
vlákno/jádro/jádro procesoru (Hart) v systému.

Tabulka 4 •  Secure Boot Image Certificate (SBIC)

Offset Velikost (bajty) Hodnota Popis
0 4 IMAGEADDR Adresa UBL v mapě paměti MSS
4 4 IMAGELEN Velikost UBL v bajtech
8 4 BOOTVEC0 Spouštěcí vektor v UBL pro E51
12 4 BOOTVEC1 Spouštěcí vektor v UBL pro U540
16 4 BOOTVEC2 Spouštěcí vektor v UBL pro U541
20 4 BOOTVEC3 Spouštěcí vektor v UBL pro U542
24 4 BOOTVEC4 Spouštěcí vektor v UBL pro U543
28 1 MOŽNOSTI[7:0] Možnosti SBIC
28 3 REZERVOVÁNO  
32 8 VERZE Verze SBIC/obrázku
40 16 DSN Volitelná vazba DSN
56 48 H UBL image SHA-384 hash
104 104 KÓDESIG Podpis ECDSA s kódováním DER
Celkový 208 Bajtů  

DSN
Pokud je pole DSN nenulové, porovnává se s vlastním sériovým číslem zařízení. Pokud se porovnání nezdaří, pak boot_fail tampje nastaven příznak a ověřování je přerušeno.

VERZE
Pokud je odvolání SBIC povoleno pomocí U_MSS_REVOCATION_ENABLE, SBIC je odmítnuto, pokud hodnota VERSION není větší nebo rovna prahové hodnotě pro odvolání.

MOŽNOST ZRUŠENÍ SBIC
Pokud je odvolání SBIC povoleno pomocí U_MSS_REVOCATION_ENABLE a OPTIONS[0] je '1', všechny verze SBIC nižší než VERSION jsou odvolány po úplné autentizaci SBIC. Práh odvolání zůstává na nové hodnotě, dokud se znovu nezvýší o budoucí SBIC s ​​OPTIONS[0] = '1' a vyšším polem VERZE. Práh odvolání může být zvýšen pouze pomocí tohoto mechanismu a může být resetován pouze bitovým tokem.
Když je práh odvolání aktualizován dynamicky, je tento práh uložen pomocí schématu redundantního úložiště používaného pro přístupové kódy, takže výpadek napájení během spouštění zařízení nezpůsobí selhání následného spouštění zařízení. Pokud se aktualizace prahu odvolání nezdaří, je zaručeno, že prahová hodnota je buď nová, nebo předchozí.

Tabulka 5 • U_MSS_BOOTCFG Použití v režimu Factory Boot Loader

Offset (bajty)  

Velikost (bajty)

 

Jméno

 

Popis

0 4 U_MSS_SBIC_ADDR Adresa SBIC v adresním prostoru MSS
4 4 U_MSS_REVOCATION_ENABLE Povolit odvolání SBIC, pokud není nulové

Následující obrázek ukazuje bezpečný tok spouštění z výroby.
Obrázek 6 • Factory Secure Boot FlowMicrochip-UG0881-PolarFire-SoC-FPGA-Bootování-A-Konfigurace-obr 6 Microchip-UG0881-PolarFire-SoC-FPGA-Bootování-A-Konfigurace-obr 7

Zavedení uživatele MSS 

Zavedení uživatele MSS probíhá, když je řízení předáno z řadiče systému MSS Core Complex. Po úspěšném předbootování MSS systémový řadič uvolní reset na MSS Core Complex. MSS lze spustit jedním z následujících způsobů:

  • Aplikace na holý kov
  • Aplikace pro Linux
  • AMP Aplikace

Aplikace na holý kov

Aplikace holého kovu pro SoC PolarFire lze vyvíjet pomocí nástroje SoftConsole. Tento nástroj poskytuje výstup files ve tvaru .hex, který lze použít v toku Libero k zahrnutí do programovacího bitového toku file. Stejný nástroj lze použít k ladění aplikací Bare Metal pomocí JTAG
rozhraní.
Následující obrázek ukazuje aplikaci SoftConsole Bare Metal, která má pět jader (jádra) včetně jádra monitoru E51.

Obrázek 7 • Projekt SoftConsole Microchip-UG0881-PolarFire-SoC-FPGA-Bootování-A-Konfigurace-obr 8

Aplikace pro Linux

Tato část popisuje zaváděcí sekvenci pro Linux běžící na všech jádrech U54.
Typický proces spouštění se skládá ze tří sekundtages. První stagBootloader (FSBL) se spouští z flash paměti na čipu (eNVM). FSBL načte druhý stage boot loader (SSBL) ze spouštěcího zařízení do externí paměti RAM nebo mezipaměti. Spouštěcím zařízením může být eNVM nebo vestavěný paměťový mikrokontrolér (eMMC) nebo externí SPI Flash. SSBL načte operační systém Linux ze spouštěcího zařízení do externí paměti RAM. Ve třetím stage, Linux se spouští z externí paměti RAM.

Následující obrázek ukazuje tok procesu spouštění systému Linux.
Obrázek 8 • Typický proces spouštění systému LinuxMicrochip-UG0881-PolarFire-SoC-FPGA-Bootování-A-Konfigurace-obr 9

Podrobnosti o FSBL, stromu zařízení, sestavení Linuxu a YOCTO, jak sestavit a nakonfigurovat Linux, budou uvedeny v budoucí verzi tohoto dokumentu.

AMP Aplikace
Podrobný popis Libero MSS Configurator a způsob ladění víceprocesorových aplikací pomocí SoftConsole bude uveden v budoucí verzi tohoto dokumentu.

Různé zdroje bootování
Bude aktualizováno v budoucích verzích tohoto dokumentu.

Konfigurace spouštění
Bude aktualizováno v budoucích verzích tohoto dokumentu.

Zkratky

V tomto dokumentu jsou použity následující zkratky.

Tabulka 1 •  Seznam zkratek

Zkratka Expanded

  • AMP Asymetrické vícenásobné zpracování
  • DTIM Data těsně integrovaná paměť (také nazývaná jako SRAM)
  • ECDSA Algoritmus digitálního podpisu eliptické křivky
  • eNVM vestavěná energeticky nezávislá paměť
  • FSBL První Stage Boot Loader
  • Jelen Hardwarové vlákno/jádro/jádro procesoru
  • MSS Mikroprocesorový subsystém
  • POR Zapnutí Resetovat
  • teplouš Fyzicky neklonovatelná funkce
  • ROM Pamět pouze pro čtení
  • SCB Most ovladače systému
  • sNVM Zabezpečená energeticky nezávislá paměť

Historie revizí

Historie revizí popisuje změny, které byly v dokumentu implementovány. Změny jsou uvedeny podle revizí, počínaje aktuální publikací.

Revize 2.0
Níže je uveden souhrn změn provedených v této revizi.

  • Informace o Factory Secure Boot byly aktualizovány.
  • Informace o aplikaci Bare Metal byly aktualizovány.

Revize 1.0
První zveřejnění tohoto dokumentu.

Centrála Microsemi
Jedna Enterprise, Aliso Viejo,
CA 92656 USA
V rámci USA: +1 800-713-4113
Mimo USA: +1 949-380-6100
Prodej: +1 949-380-6136
Fax: +1 949-215-4996
E-mail: sales.support@microsemi.com
www.microsemi.com

©2020 Microsemi, dceřiná společnost ve stoprocentním vlastnictví Microchip Technology Inc. Všechna práva vyhrazena. Microsemi a logo Microsemi jsou registrované ochranné známky společnosti Microsemi Corporation. Všechny ostatní ochranné známky a servisní známky jsou majetkem příslušných vlastníků.

Dokumenty / zdroje

Microchip UG0881 PolarFire SoC FPGA bootování a konfigurace [pdfUživatelská příručka
UG0881 Zavádění a konfigurace FPGA PolarFire SoC, UG0881, Zavádění a konfigurace FPGA PolarFire SoC, zavádění a konfigurace

Reference

Zanechte komentář

Vaše emailová adresa nebude zveřejněna. Povinná pole jsou označena *