Mikrochip UG0881 PolarFire SoC FPGA-start och konfiguration
Garanti
Microsemi lämnar inga garantier, representationer eller garantier avseende informationen häri eller lämpligheten av dess produkter och tjänster för något speciellt ändamål, och Microsemi tar inte heller något ansvar som uppstår till följd av tillämpningen eller användningen av någon produkt eller krets. Produkterna som säljs nedan och alla andra produkter som säljs av Microsemi har varit föremål för begränsade tester och bör inte användas tillsammans med verksamhetskritisk utrustning eller applikationer. Eventuella prestandaspecifikationer tros vara tillförlitliga men är inte verifierade, och köparen måste utföra och slutföra alla prestanda- och andra tester av produkterna, ensam och tillsammans med, eller installerade i, eventuella slutprodukter. Köparen ska inte förlita sig på några data och prestandaspecifikationer eller parametrar som tillhandahålls av Microsemi. Det är köparens ansvar att självständigt avgöra lämpligheten för alla produkter och att testa och verifiera densamma. Informationen som tillhandahålls av Microsemi nedan tillhandahålls "i befintligt skick, var är" och med alla fel, och hela risken förknippad med sådan information ligger helt och hållet hos köparen. Microsemi ger inte, uttryckligen eller underförstått, till någon part några patenträttigheter, licenser eller andra IP-rättigheter, vare sig det gäller sådan information i sig eller något som beskrivs i sådan information. Informationen som tillhandahålls i detta dokument ägs av Microsemi, och Microsemi förbehåller sig rätten att göra ändringar av informationen i detta dokument eller till produkter och tjänster när som helst utan föregående meddelande.
Om Microsemi
Microsemi, ett helägt dotterbolag till Microchip Technology Inc. (Nasdaq: MCHP), erbjuder en omfattande portfölj av halvledar- och systemlösningar för flyg- och försvars-, kommunikations-, datacenter- och industrimarknader. Produkterna inkluderar högpresterande och strålningshärdade analoga integrerade kretsar med blandade signaler, FPGA, SoC och ASIC; Power Management produkter; timing- och synkroniseringsenheter och exakta tidslösningar, sätter världens standard för tid; röstbehandlingsanordningar; RF-lösningar; diskreta komponenter; företagslagrings- och kommunikationslösningar, säkerhetsteknologier och skalbar anti-tamper produkter; Ethernet-lösningar; Power-over-Ethernet IC och midspans; samt anpassade designmöjligheter och tjänster. Läs mer på www.microsemi.com.
Uppstart och konfiguration
PolarFire SoC FPGA:er använder avancerade uppstartskretsar för att säkerställa tillförlitlig ström på vid uppstart och återställning. Vid start och återställning följer PolarFire SoC FPGA-startsekvensen Power-on-återställning (POR), enhetsstart, designinitiering, förstart av mikrokontrollersubsystem (MSS) och MSS-användarstart. Det här dokumentet beskriver MSS pre-boot och MSS User Boot. För information om POR, enhetsstart och designinitiering, se UG0890: PolarFire SoC FPGA Power-Up and Resets User Guide.
För mer information om MSS-funktioner, se UG0880: PolarFire SoC MSS User Guide.
Uppstartssekvens
Uppstartssekvensen startar när PolarFire SoC FPGA slås på eller återställs. Det slutar när processorn är redo att köra ett applikationsprogram. Denna uppstartssekvens går igenom flera stages innan den börjar köra program.
En uppsättning operationer utförs under uppstartsprocessen som inkluderar startåterställning av hårdvaran, perifer initiering, minnesinitiering och laddning av den användardefinierade applikationen från icke-flyktigt minne till det flyktiga minnet för exekvering.
Följande bild visar olika faser av uppstartssekvensen.
Figur 1 Uppstartssekvens
MSS Pre-boot
Efter framgångsrikt slutförande av designinitiering startar MSS Pre-boot dess exekvering. MSS frigörs från en återställning efter att alla normala startprocedurer har slutförts. Systemstyrenheten hanterar programmering, initiering och konfiguration av enheterna. MSS Pre-boot inträffar inte om den programmerade enheten är konfigurerad för systemstyrenhetens viloläge.
MSS pre-boot-fasen av initialiseringen koordineras av systemkontrollerns firmware, även om den kan använda E51 i MSS Core Complex för att utföra vissa delar av pre-boot-sekvensen.
Följande händelser inträffar under MSS pre-bootstage:
- Uppstart av MSS-inbäddat icke-flyktigt minne (eNVM)
- Initiering av redundansreparationen associerad med MSS Core Complex L2-cachen
- Autentisering av användarstartkod (om alternativet User Secure Boot är aktiverat)
- Överlämna operativ MSS till User Boot-kod
MSS Core Complex kan startas i ett av fyra lägen. Följande tabell listar MSS pre-boot alternativen, som kan konfigureras och programmeras in i sNVM. Startläget definieras av användarparametern U_MSS_BOOTMODE[1:0]. Ytterligare startkonfigurationsdata är lägesberoende och definieras av användarparametern U_MSS_BOOTCFG (se Tabell 3, sidan 4 och Tabell 5, sidan 6).
Bord 1 • MSS Core Complex Boot Modes
U_MSS_BOOTMODE[1:0] | Läge | Beskrivning |
0 | Tomgångsstövel | MSS Core Complex startar från start-ROM om MSS inte är konfigurerat |
1 | Osäker start | MSS Core Complex startar direkt från adressen definierad av U_MSS_BOOTADDR |
2 | Användarsäker uppstart | MSS Core Complex stövlar från sNVM |
3 | Fabrikssäker start | MSS Core Complex startar med fabrikssäkra startprotokoll |
Bootalternativet är valt som en del av Liberos designflöde. Ändring av läget kan endast uppnås genom generering av en ny FPGA-programmering file.
Figur 2 • MSS Pre-boot Flow
Idle Boot
Om MSS inte är konfigurerat (t.example, tom enhet), så kör MSS Core Complex ett boot ROM-program som håller alla processorer i en oändlig slinga tills en debugger ansluter till målet. Startvektorregistren behåller sitt värde tills enheten återställs eller en ny startlägeskonfiguration programmeras. För konfigurerade enheter kan detta läge implementeras med hjälp av
U_MSS_BOOTMODE=0 startalternativ i Libero-konfiguratorn.
Notera: I detta läge används inte U_MSS_BOOTCFG.
Följande bild visar tomgångsflödet.
Figur 3 • Idle Boot Flow
Osäker start
I detta läge körs MSS Core Complex från en specificerad eNVM-adress utan autentisering. Det ger det snabbaste startalternativet, men det finns ingen autentisering av kodbilden. Adressen kan anges genom att ställa in U_MSS_BOOTADDR i Libero Configurator. Detta läge kan också användas för att starta från valfri FPGA Fabric-minnesresurs via FIC. Detta läge implementeras med hjälp av
U_MSS_BOOTMODE=1 startalternativ.
MSS Core Complex frigörs från återställning med startvektorer definierade av U_MSS_BOOTCFG (som listas i följande tabell).
Bord 2 • U_MSS_BOOTCFG Användning i icke-säkert startläge 1
Offset (byte) |
Storlek (byte) |
Namn |
Beskrivning |
0 | 4 | BOOTVEC0 | Bootvektor för E51 |
4 | 4 | BOOTVEC1 | Bootvektor för U540 |
8 | 4 | BOOTVEC2 | Bootvektor för U541 |
16 | 4 | BOOTVEC3 | Bootvektor för U542 |
20 | 4 | BOOTVEC4 | Bootvektor för U543 |
Följande bild visar det icke-säker startflödet.
Figur 4 • Osäkert Boot Flow
Användarsäker start
Detta läge tillåter användaren att implementera sin egen anpassade säker start och användarens säkra startkod placeras i sNVM. sNVM är ett 56 KB icke-flyktigt minne som kan skyddas av den inbyggda Physically Unclonable Function (PUF). Denna startmetod anses vara säker eftersom sNVM-sidor markerade som ROM är oföränderliga. Vid start kopierar systemkontrollern den användarsäkra startkoden från sNVM till Data Tightly Integrated Memory (DTIM) i E51 Monitor-kärnan. E51 börjar köra användarens säkra startkod.
Om storleken på användarens säkra startkod är större än storleken på DTIM måste användaren dela upp startkoden i två stages. sNVM kan innehålla nästa stage av användarens startsekvens, som kan utföra autentisering av nästa uppstarttage med hjälp av användarautentiserings-/dekrypteringsalgoritmen.
Om autentiserade eller krypterade sidor används är samma USK-nyckel (dvs.
U_MSS_BOOT_SNVM_USK) måste användas för alla autentiserade/krypterade sidor.
Om autentiseringen misslyckas kan MSS Core Complex återställas och BOOT_FAIL tampflaggan kan hissas. Detta läge implementeras med U_MSS_BOOTMODE=2-startalternativet.
Bord 3 • U_MSS_BOOTCFG Användning i användarsäker start
Offset (byte) | Storlek (byte) | Namn | Beskrivning |
0 | 1 | U_MSS_BOOT_SNVM_PAGE | Startsida i SNVM |
1 | 3 | RESERVERAD | För justering |
4 | 12 | U_MSS_BOOT_SNVM_USK | För autentiserade/krypterade sidor |
Följande bild visar användarens säkra startflöde.
Figur 5 • Användarsäkert startflöde
Säker start från fabrik
I det här läget läser systemkontrollern SBIC (Secure Boot Image Certificate) från eNVM och validerar SBIC. Efter lyckad validering kopierar System Controller den fabrikssäkra startkoden från dess privata, säkra minnesområde och laddar den i DTIM i E51 Monitor-kärnan. Den säkra standardstarten utför en signaturkontroll på eNVM-avbildningen med hjälp av SBIC som lagras i eNVM. Om inga fel rapporteras släpps återställningen till MSS Core Complex. Om fel rapporteras återställs MSS Core Complex och BOOT_FAIL tampär flaggan hissad. Sedan aktiveras systemstyrenheten klamper-flagga som bekräftar en signal till FPGA-strukturen för användaråtgärder. Detta läge implementeras med U_MSS_BOOTMODE=3 startalternativ.
SBIC innehåller adress, storlek, hash och ECDSA-signatur (Elliptic Curve Digital Signature Algorithm) för den skyddade binära bloben. ECDSA erbjuder en variant av Digital Signature Algorithm som använder elliptisk kurvkryptografi. Den innehåller också återställningsvektorn för varje maskinvara
tråd/kärna/processorkärna (Hart) i systemet.
Bord 4 • Secure Boot Image Certificate (SBIC)
Offset | Storlek (byte) | Värde | Beskrivning |
0 | 4 | IMAGEADDR | Adress till UBL i MSS-minneskarta |
4 | 4 | IMAGELEN | Storlek på UBL i byte |
8 | 4 | BOOTVEC0 | Startvektor i UBL för E51 |
12 | 4 | BOOTVEC1 | Bootvektor i UBL för U540 |
16 | 4 | BOOTVEC2 | Bootvektor i UBL för U541 |
20 | 4 | BOOTVEC3 | Bootvektor i UBL för U542 |
24 | 4 | BOOTVEC4 | Bootvektor i UBL för U543 |
28 | 1 | ALTERNATIV[7:0] | SBIC-alternativ |
28 | 3 | RESERVERAD | |
32 | 8 | VERSION | SBIC/bildversion |
40 | 16 | DSN | Valfri DSN-bindning |
56 | 48 | H | UBL-bild SHA-384 hash |
104 | 104 | CODESIG | DER-kodad ECDSA-signatur |
Total | 208 | Bytes |
DSN
Om DSN-fältet inte är noll jämförs det med enhetens eget serienummer. Om jämförelsen misslyckas, då boot_fail tamper flaggan är inställd och autentiseringen avbryts.
VERSION
Om SBIC-återkallelse är aktiverad av U_MSS_REVOCATION_ENABLE, avvisas SBIC om inte värdet på VERSION är större än eller lika med återkallelseströskeln.
SBIC REVOCATION ALTERNATIV
Om SBIC-återkallelse är aktiverad av U_MSS_REVOCATION_ENABLE och OPTIONS[0] är '1', återkallas alla SBIC-versioner mindre än VERSION vid fullständig autentisering av SBIC. Återkallningströskeln förblir vid det nya värdet tills den åter ökar med en framtida SBIC med OPTIONS[0] = '1' och ett högre VERSION-fält. Återkallningströskeln kan endast ökas med denna mekanism och kan endast återställas med en bitström.
När återkallningströskeln uppdateras dynamiskt, lagras tröskeln med användning av det redundanta lagringsschemat som används för lösenord så att ett strömavbrott under enhetsstart inte orsakar att en efterföljande enhetsstart misslyckas. Om uppdateringen av återkallelseströskeln misslyckas är det garanterat att tröskelvärdet är antingen det nya värdet eller det föregående.
Bord 5 • U_MSS_BOOTCFG Användning i Factory Boot Loader-läge
Offset (byte) |
Storlek (byte) |
Namn |
Beskrivning |
0 | 4 | U_MSS_SBIC_ADDR | Adress till SBIC i MSS adressutrymme |
4 | 4 | U_MSS_REVOCATION_ENABLE | Aktivera SBIC-återkallelse om den inte är noll |
Följande bild visar det fabrikssäkra startflödet.
Figur 6 • Factory Secure Boot Flow
MSS User Boot
MSS-användarstart sker när kontrollen ges från System Controller till MSS Core Complex. Efter framgångsrik MSS-förstart släpper systemkontrollern återställningen till MSS Core Complex. MSS kan startas upp på något av följande sätt:
- Bare Metal Applikation
- Linux-applikation
- AMP Ansökan
Bare Metal Applikation
De rena metallapplikationerna för PolarFire SoC kan utvecklas med hjälp av verktyget SoftConsole. Detta verktyg tillhandahåller resultatet files i form av .hex som kan användas i Libero-flödet för att inkludera i programmeringsbitströmmen file. Samma verktyg kan användas för att felsöka Bare Metal-applikationerna med JTAG
gränssnitt.
Följande bild visar SoftConsole Bare Metal-applikationen som har fem harts (Cores) inklusive E51 Monitor-kärna.
Figur 7 • SoftConsole-projekt
Linux-applikation
Det här avsnittet beskriver startsekvensen för Linux som körs på alla U54-kärnor.
En typisk startprocess består av tre stages. De första stagStarthanteraren (FSBL) exekveras från on-chip Boot flash (eNVM). FSBL laddar den andra stage boot loader (SSBL) från en startenhet till externt RAM eller cache. Startenheten kan vara eNVM eller inbyggd minnesmikrokontroller (eMMC) eller extern SPI Flash. SSBL laddar Linux-operativsystemet från startenhet till externt RAM-minne. I tredje stage, Linux körs från det externa RAM-minnet.
Följande bild visar Linux Boot Process-flödet.
Figur 8 • Typiskt Linux Boot Process Flow
Detaljer om FSBL, Device tree, Linux och YOCTO build, hur man bygger och konfigurerar Linux kommer att tillhandahållas i den framtida versionen av detta dokument.
AMP Ansökan
Detaljerad beskrivning av Libero MSS Configurator och hur man felsöker flerprocessorapplikationer med SoftConsole kommer att tillhandahållas i den framtida versionen av detta dokument.
Olika källor till uppstart
Uppdateras i framtida versioner av detta dokument.
Startkonfiguration
Uppdateras i framtida versioner av detta dokument.
Akronymer
Följande akronymer används i detta dokument.
Bord 1 • Lista över akronymer
Akronym expanderad
- AMP Asymmetrisk multibearbetning
- DTIM Data Tightly Integrated Memory (kallas även SRAM)
- ECDSA Elliptisk kurva digital signaturalgoritm
- enNVM inbäddat icke-flyktigt minne
- FSBL Första Stage Boot Loader
- Hjort Hårdvara tråd/kärna/processorkärna
- MSS Mikroprocessor Subsystem
- POR Ström på Återställ
- PÖF Fysiskt oklonbar funktion
- ROM Skrivskyddat minne
- SCB System Controller Bridge
- sNVM Säkert icke-flyktigt minne
Revisionshistorik
Revisionshistoriken beskriver de ändringar som implementerades i dokumentet. Ändringarna listas efter revidering, med början i den aktuella publikationen.
Revision 2.0
Följande är en sammanfattning av ändringarna som gjorts i denna revidering.
- Information om Factory Secure Boot har uppdaterats.
- Information om Bare Metal Application har uppdaterats.
Revision 1.0
Den första publiceringen av detta dokument.
Microsemis högkvarter
One Enterprise, Aliso Viejo,
CA 92656 USA
Inom USA: +1 800-713-4113
Utanför USA: +1 949-380-6100
Försäljning: +1 949-380-6136
Fax: +1 949-215-4996
E-post: sales.support@microsemi.com
www.microsemi.com
©2020 Microsemi, ett helägt dotterbolag till Microchip Technology Inc. Med ensamrätt. Microsemi och Microsemi-logotypen är registrerade varumärken som tillhör Microsemi Corporation. Alla andra varumärken och servicemärken tillhör sina respektive ägare.
Dokument/resurser
![]() |
Mikrochip UG0881 PolarFire SoC FPGA-start och konfiguration [pdf] Användarhandbok UG0881 PolarFire SoC FPGA uppstart och konfiguration, UG0881, PolarFire SoC FPGA uppstart och konfiguration, uppstart och konfiguration |