Microchip UG0881 PolarFire SoC FPGA opstarten en configureren
Garantie
Microsemi geeft geen garantie, vertegenwoordiging of garantie met betrekking tot de hierin opgenomen informatie of de geschiktheid van haar producten en diensten voor een bepaald doel, noch aanvaardt Microsemi enige aansprakelijkheid die voortvloeit uit de toepassing of het gebruik van een product of circuit. De producten die hieronder worden verkocht en alle andere producten die door Microsemi worden verkocht, zijn onderworpen aan beperkte tests en mogen niet worden gebruikt in combinatie met bedrijfskritische apparatuur of toepassingen. Alle prestatiespecificaties worden verondersteld betrouwbaar te zijn, maar zijn niet geverifieerd, en de Koper moet alle prestatie- en andere tests van de producten uitvoeren en voltooien, alleen en samen met, of geïnstalleerd in, eventuele eindproducten. De koper mag niet vertrouwen op gegevens en prestatiespecificaties of parameters die door Microsemi worden verstrekt. Het is de verantwoordelijkheid van de koper om de geschiktheid van alle producten onafhankelijk te bepalen en deze te testen en te verifiëren. De hieronder door Microsemi verstrekte informatie wordt geleverd "zoals het is, waar het is" en met alle fouten, en het volledige risico dat aan dergelijke informatie is verbonden, ligt volledig bij de koper. Microsemi verleent aan geen enkele partij, expliciet of impliciet, patentrechten, licenties of andere IP-rechten, hetzij met betrekking tot dergelijke informatie zelf of iets dat door dergelijke informatie wordt beschreven. De informatie in dit document is eigendom van Microsemi en Microsemi behoudt zich het recht voor om op elk moment en zonder voorafgaande kennisgeving wijzigingen aan te brengen in de informatie in dit document of in producten en diensten.
Over Microsemi
Microsemi, een volledige dochteronderneming van Microchip Technology Inc. (Nasdaq: MCHP), biedt een uitgebreide portfolio van halfgeleider- en systeemoplossingen voor ruimtevaart en defensie, communicatie, datacenters en industriële markten. Producten omvatten hoogwaardige en door straling geharde analoge mixed-signal geïntegreerde schakelingen, FPGA's, SoC's en ASIC's; energiebeheer producten; timing- en synchronisatieapparatuur en nauwkeurige tijdoplossingen, die de wereldstandaard voor tijd bepalen; spraakverwerkingsapparatuur; RF-oplossingen; discrete componenten; enterprise storage- en communicatieoplossingen, beveiligingstechnologieën en schaalbare anti-tamper producten; Ethernet-oplossingen; Power-over-Ethernet IC's en midspans; evenals aangepaste ontwerpmogelijkheden en diensten. Meer informatie op www.microsemi.com.
Opstarten en configureren
PolarFire SoC FPGA's gebruiken geavanceerde opstartcircuits om te zorgen voor een betrouwbare inschakeling bij het opstarten en resetten. Bij het opstarten en resetten volgt de PolarFire SoC FPGA-opstartvolgorde Power-on reset (POR), Device boot, Design initialization, Microcontroller Subsystem (MSS) pre-boot en MSS user boot. Dit document beschrijft MSS pre-boot en MSS User Boot. Voor informatie over POR, Device Boot en Design initialisatie, zie UG0890: PolarFire SoC FPGA Power-Up and Resets User Guide.
Zie voor meer informatie over MSS-functies UG0880: PolarFire SoC MSS-gebruikershandleiding.
Opstartvolgorde
De opstartprocedure begint wanneer de PolarFire SoC FPGA wordt opgestart of gereset. Het eindigt wanneer de processor klaar is om een toepassingsprogramma uit te voeren. Deze opstartvolgorde loopt door verschillende stages voordat het begint met de uitvoering van programma's.
Tijdens het opstartproces wordt een reeks bewerkingen uitgevoerd, waaronder het resetten van de hardware bij opstarten, initialisatie van randapparatuur, geheugeninitialisatie en het laden van de door de gebruiker gedefinieerde toepassing van niet-vluchtig geheugen naar het vluchtige geheugen voor uitvoering.
De volgende afbeelding toont verschillende fasen van de opstartvolgorde.
Figuur 1 Opstartvolgorde
MSS vooraf opstarten
Na succesvolle afronding van ontwerpinitialisatie, begint MSS Pre-boot met de uitvoering. De MSS wordt vrijgegeven van een reset na voltooiing van alle normale opstartprocedures. De systeemcontroller beheert de programmering, initialisatie en configuratie van de apparaten. MSS Pre-boot vindt niet plaats als het geprogrammeerde apparaat is geconfigureerd voor de slaapstand van de systeemcontroller.
De MSS-pre-boot-initialisatiefase wordt gecoördineerd door de firmware van de systeemcontroller, hoewel het gebruik kan maken van de E51 in het MSS Core Complex om bepaalde delen van de pre-boot-reeks uit te voeren.
De volgende gebeurtenissen vinden plaats tijdens de MSS pre-boot stage:
- Opstarten van het MSS embedded Non-Volatile Memory (eNVM)
- Initialisatie van de redundantiereparatie die is gekoppeld aan de MSS Core Complex L2-cache
- Verificatie van de opstartcode van de gebruiker (als de opstartoptie Veilige gebruiker is ingeschakeld)
- Operationele MSS overdragen aan User Boot-code
Het MSS Core Complex kan in een van de vier modi worden opgestart. De volgende tabel geeft een overzicht van de MSS pre-boot-opties, die kunnen worden geconfigureerd en geprogrammeerd in de sNVM. De opstartmodus wordt gedefinieerd door de gebruikersparameter U_MSS_BOOTMODE[1:0]. Aanvullende opstartconfiguratiegegevens zijn modusafhankelijk en worden gedefinieerd door de gebruikersparameter U_MSS_BOOTCFG (zie Tabel 3, pagina 4 en Tabel 5, pagina 6).
Tafel 1 • MSS Core Complexe opstartmodi
U_MSS_BOOTMODE[1:0] | Modus | Beschrijving |
0 | Inactief opstarten | MSS Core Complex start op vanaf het opstart-ROM als MSS niet is geconfigureerd |
1 | Niet-beveiligde start | MSS Core Complex start direct op vanaf het adres dat is gedefinieerd door de U_MSS_BOOTADDR |
2 | Gebruiker veilig opstarten | MSS Core Complex-laarzen van sNVM |
3 | Fabrieksveilig opstarten | MSS Core Complex start op met behulp van het in de fabriek beveiligde opstartprotocol |
De opstartoptie wordt geselecteerd als onderdeel van de Libero-ontwerpstroom. Het wijzigen van de modus kan alleen worden bereikt door het genereren van een nieuwe FPGA-programmering file.
Figuur 2 • MSS Pre-boot Flow
Inactief opstarten
Als de MSS niet is geconfigureerd (bijvample, leeg apparaat), voert het MSS Core Complex een opstart-ROM-programma uit dat alle processors in een oneindige lus houdt totdat een debugger verbinding maakt met het doel. De opstartvectorregisters behouden hun waarde totdat het apparaat wordt gereset of een nieuwe opstartmodusconfiguratie wordt geprogrammeerd. Voor geconfigureerde apparaten kan deze modus worden geïmplementeerd met behulp van de
U_MSS_BOOTMODE=0 opstartoptie in de Libero-configurator.
Opmerking: In deze modus wordt U_MSS_BOOTCFG niet gebruikt.
De volgende afbeelding toont de inactieve opstartstroom.
Figuur 3 • Inactieve opstartstroom
Niet-beveiligd opstarten
In deze modus wordt het MSS Core Complex uitgevoerd vanaf een opgegeven eNVM-adres zonder authenticatie. Het biedt de snelste opstartoptie, maar er is geen authenticatie van de code-image. Het adres kan worden gespecificeerd door U_MSS_BOOTADDR in te stellen in de Libero Configurator. Deze modus kan ook worden gebruikt om op te starten vanaf elke FPGA Fabric-geheugenbron via FIC. Deze modus wordt geïmplementeerd met behulp van de
U_MSS_BOOTMODE=1 opstartoptie.
Het MSS Core Complex wordt vrijgegeven van reset met opstartvectoren gedefinieerd door U_MSS_BOOTCFG (zoals vermeld in de volgende tabel).
Tafel 2 • U_MSS_BOOTCFG Gebruik in niet-beveiligde opstartmodus 1
Verschuiving (bytes) |
Grootte (bytes) |
Naam |
Beschrijving |
0 | 4 | BOOTVEC0 | Opstartvector voor E51 |
4 | 4 | BOOTVEC1 | Opstartvector voor U540 |
8 | 4 | BOOTVEC2 | Opstartvector voor U541 |
16 | 4 | BOOTVEC3 | Opstartvector voor U542 |
20 | 4 | BOOTVEC4 | Opstartvector voor U543 |
De volgende afbeelding toont de niet-beveiligde opstartstroom.
Figuur 4 • Niet-beveiligde opstartstroom
Gebruiker beveiligd opstarten
In deze modus kan de gebruiker zijn eigen aangepaste veilige opstart implementeren en wordt de beveiligde opstartcode voor de gebruiker in de sNVM geplaatst. De sNVM is een niet-vluchtig geheugen van 56 kB dat kan worden beschermd door de ingebouwde Physically Unclonable Function (PUF). Deze opstartmethode wordt als beveiligd beschouwd omdat sNVM-pagina's die zijn gemarkeerd als ROM onveranderlijk zijn. Bij het opstarten kopieert de systeemcontroller de door de gebruiker beveiligde opstartcode van sNVM naar Data Tightly Integrated Memory (DTIM) van de E51-monitorkern. E51 begint met het uitvoeren van de door de gebruiker beveiligde opstartcode.
Als de grootte van de beveiligde opstartcode van de gebruiker groter is dan de grootte van de DTIM, moet de gebruiker de opstartcode in tweeën splitsentages. De sNVM kan de volgende s bevattentage van de opstartvolgorde van de gebruiker, die de authenticatie van de volgende opstartprogramma's kan uitvoerentage met behulp van het algoritme voor gebruikersauthenticatie/decodering.
Als geauthenticeerde of gecodeerde pagina's worden gebruikt, wordt dezelfde USK-sleutel (dat wil zeggen
U_MSS_BOOT_SNVM_USK) moet worden gebruikt voor alle geverifieerde/versleutelde pagina's.
Als authenticatie mislukt, kan het MSS Core Complex worden gereset en kan de BOOT_FAIL tampEr kan een vlag gehesen worden. Deze modus wordt geïmplementeerd met behulp van de opstartoptie U_MSS_BOOTMODE=2.
Tafel 3 • U_MSS_BOOTCFG Gebruik bij veilig opstarten door gebruiker
Verschuiving (bytes) | Grootte (bytes) | Naam | Beschrijving |
0 | 1 | U_MSS_BOOT_SNVM_PAGE | Startpagina in SNVM |
1 | 3 | GERESERVEERD | Voor uitlijning |
4 | 12 | U_MSS_BOOT_SNVM_USK | Voor geverifieerde/versleutelde pagina's |
De volgende afbeelding toont de door de gebruiker beveiligde opstartstroom.
Figuur 5 • Gebruiker beveiligde opstartstroom
Fabrieksveilig opstarten
In deze modus leest de systeemcontroller het Secure Boot Image Certificate (SBIC) van eNVM en valideert de SBIC. Na succesvolle validatie kopieert de systeemcontroller de in de fabriek beveiligde opstartcode uit zijn privé, beveiligd geheugengebied en laadt deze in de DTIM van de E51-monitorkern. De standaard beveiligde start voert een handtekeningcontrole uit op de eNVM-afbeelding met behulp van SBIC die is opgeslagen in eNVM. Als er geen fouten worden gerapporteerd, wordt de reset vrijgegeven voor het MSS Core Complex. Als er fouten worden gemeld, wordt het MSS Core Complex gereset en wordt de BOOT_FAIL tampe vlag wordt gehesen. Vervolgens wordt de systeemcontroller geactiveerd omampEr-vlag die een signaal afgeeft aan de FPGA-structuur voor actie van de gebruiker. Deze modus wordt geïmplementeerd met behulp van de opstartoptie U_MSS_BOOTMODE=3.
De SBIC bevat het adres, de grootte, de hash en de Elliptic Curve Digital Signature Algorithm (ECDSA)-handtekening van de beschermde binaire blob. ECDSA biedt een variant van het Digital Signature Algorithm die elliptische curve-cryptografie gebruikt. Het bevat ook de resetvector voor elke hardware
thread/core/processorcore (Hart) in het systeem.
Tafel 4 • Secure Boot Image-certificaat (SBIC)
Verschuiven | Grootte (bytes) | Waarde | Beschrijving |
0 | 4 | AFBEELDINGADDR | Adres van UBL in MSS-geheugenkaart |
4 | 4 | IMAGELEN | Grootte van UBL in bytes |
8 | 4 | BOOTVEC0 | Opstartvector in UBL voor E51 |
12 | 4 | BOOTVEC1 | Opstartvector in UBL voor U540 |
16 | 4 | BOOTVEC2 | Opstartvector in UBL voor U541 |
20 | 4 | BOOTVEC3 | Opstartvector in UBL voor U542 |
24 | 4 | BOOTVEC4 | Opstartvector in UBL voor U543 |
28 | 1 | OPTIES[7:0] | SBIC-opties |
28 | 3 | GERESERVEERD | |
32 | 8 | VERSIE | SBIC/Image-versie |
40 | 16 | DSN | Optionele DSN-binding |
56 | 48 | H | UBL-afbeelding SHA-384-hash |
104 | 104 | CODESIG | DER-gecodeerde ECDSA-handtekening |
Totaal | 208 | Bytes |
DSN
Als het DSN-veld niet nul is, wordt het vergeleken met het eigen serienummer van het apparaat. Als de vergelijking mislukt, dan is de boot_fail tampEr is een vlag ingesteld en de authenticatie is afgebroken.
VERSIE
Als SBIC-intrekking is ingeschakeld door U_MSS_REVOCATION_ENABLE, wordt de SBIC afgewezen, tenzij de waarde van VERSION groter is dan of gelijk is aan de intrekkingsdrempel.
SBIC HERROEPINGSOPTIE
Als SBIC-intrekking is ingeschakeld door U_MSS_REVOCATION_ENABLE en OPTIONS[0] is '1', worden alle SBIC-versies lager dan VERSION ingetrokken na volledige authenticatie van de SBIC. De intrekkingsdrempel blijft op de nieuwe waarde totdat deze weer wordt verhoogd met een toekomstige SBIC met OPTIONS[0] = '1' en een hoger VERSION-veld. De herroepingsdrempel kan alleen met dit mechanisme worden verhoogd en alleen door een bitstroom worden gereset.
Wanneer de intrekkingsdrempel dynamisch wordt bijgewerkt, wordt de drempel opgeslagen met behulp van het redundante opslagschema dat wordt gebruikt voor toegangscodes, zodat een stroomstoring tijdens het opstarten van het apparaat er niet toe leidt dat het opstarten van een volgend apparaat mislukt. Als de update van de intrekkingsdrempel mislukt, is gegarandeerd dat de drempelwaarde de nieuwe waarde of de vorige is.
Tafel 5 • U_MSS_BOOTCFG Gebruik in Factory Boot Loader-modus
Verschuiving (bytes) |
Grootte (bytes) |
Naam |
Beschrijving |
0 | 4 | U_MSS_SBIC_ADDR | Adres van SBIC in MSS-adresruimte |
4 | 4 | U_MSS_REVOCATION_ENABLE | Schakel SBIC-intrekking in indien niet nul |
De volgende afbeelding toont de in de fabriek beveiligde opstartstroom.
Figuur 6 • Fabrieksbeveiligde opstartstroom
MSS-gebruiker opstarten
MSS-gebruikersopstart vindt plaats wanneer de besturing wordt gegeven van de systeemcontroller aan MSS Core Complex. Na succesvolle MSS pre-boot geeft de systeemcontroller de reset vrij naar het MSS Core Complex. MSS kan op een van de volgende manieren worden opgestart:
- Toepassing op blank metaal
- Linux-toepassing
- AMP Sollicitatie
Toepassing op blank metaal
De bare metal-applicaties voor de PolarFire SoC kunnen worden ontwikkeld met behulp van de SoftConsole-tool. Deze tool levert de output files in de vorm van .hex die in de Libero-flow kan worden gebruikt om op te nemen in de programmeerbitstream file. Dezelfde tool kan worden gebruikt om de Bare Metal-applicaties te debuggen met behulp van JTAG
interface.
De volgende afbeelding toont de SoftConsole Bare Metal-applicatie die vijf harten (Cores) heeft, waaronder de E51-monitorkern.
Figuur 7 • SoftConsole-project
Linux-toepassing
In dit gedeelte wordt de opstartvolgorde beschreven voor Linux dat op alle U54-kernen draait.
Een typisch opstartproces bestaat uit drie stagnl. de eerste zotagDe bootloader (FSBL) wordt uitgevoerd vanaf de on-chip Boot Flash (eNVM). De FSBL laadt de tweede stage bootloader (SSBL) van een opstartapparaat naar externe RAM of cache. Het opstartapparaat kan eNVM of embedded memory microcontroller (eMMC) of externe SPI Flash zijn. De SSBL laadt het Linux-besturingssysteem van het opstartapparaat naar het externe RAM. In de derde stage, Linux wordt uitgevoerd vanuit het externe RAM.
De volgende afbeelding toont de Linux Boot Process-stroom.
Figuur 8 • Typische Linux-opstartprocesstroom
Details over FSBL, Device tree, Linux en YOCTO build, hoe Linux te bouwen en te configureren zullen worden verstrekt in de toekomstige versie van dit document.
AMP Sollicitatie
Een gedetailleerde beschrijving van Libero MSS Configurator en het debuggen van toepassingen met meerdere processors met behulp van SoftConsole vindt u in de toekomstige versie van dit document.
Verschillende bronnen van opstarten
Wordt bijgewerkt in toekomstige versies van dit document.
Opstartconfiguratie
Wordt bijgewerkt in toekomstige versies van dit document.
Acroniemen
In dit document worden de volgende afkortingen gebruikt.
Tafel 1 • Lijst met acroniemen
Acroniem uitgebreid
- AMP Asymmetrische multi-verwerking
- DTIM Data Tightly Integrated Memory (ook wel SRAM genoemd)
- ECDSA Elliptische curve Digitaal kenmerk Algoritme
- eNVM ingebed niet-vluchtig geheugen
- FSBL Eerste Stage Bootloader
- Hart Hardwarethread/kern/processorkern
- MSS Microprocessor-subsysteem
- POR Inschakelen Reset
- PUF Fysiek niet-kloneerbare functie
- ROM Alleen-lezen geheugen
- SCB Systeemcontrollerbrug
- sNVM Veilig niet-vluchtig geheugen
Revisiegeschiedenis
De revisiegeschiedenis beschrijft de wijzigingen die in het document zijn doorgevoerd. De wijzigingen zijn gerangschikt per revisie, te beginnen met de huidige publicatie.
Revisie 2.0
Het volgende is een samenvatting van de wijzigingen die in deze herziening zijn aangebracht.
- Informatie over Factory Secure Boot is bijgewerkt.
- Informatie over Bare Metal Application is bijgewerkt.
Revisie 1.0
De eerste publicatie van dit document.
Microsemi-hoofdkantoor
Een onderneming, Aliso Viejo,
CA 92656 VS.
Binnen de VS: +1 800-713-4113
Buiten de VS: +1 949-380-6100
Verkoop: +1 949-380-6136
Fax: +1 949-215-4996
E-mailadres: sales.support@microsemi.com
www.microsemi.com
© 2020 Microsemi, een volledige dochteronderneming van Microchip Technology Inc. Alle rechten voorbehouden. Microsemi en het Microsemi-logo zijn gedeponeerde handelsmerken van Microsemi Corporation. Alle andere handelsmerken en servicemerken zijn eigendom van hun respectievelijke eigenaren.
Documenten / Bronnen
![]() |
Microchip UG0881 PolarFire SoC FPGA opstarten en configureren [pdf] Gebruikershandleiding UG0881 PolarFire SoC FPGA opstarten en configureren, UG0881, PolarFire SoC FPGA opstarten en configureren, opstarten en configureren |