Mikrochip UG0881 PolarFire SoC FPGA opstart og konfiguration
Garanti
Microsemi giver ingen garanti, repræsentation eller garanti vedrørende informationen indeholdt heri eller egnetheden af dets produkter og tjenester til et bestemt formål, og Microsemi påtager sig heller ikke noget som helst ansvar som følge af anvendelsen eller brugen af noget produkt eller kredsløb. Produkterne, der sælges nedenfor, og alle andre produkter, der sælges af Microsemi, har været genstand for begrænset testning og bør ikke bruges sammen med missionskritisk udstyr eller applikationer. Eventuelle ydeevnespecifikationer menes at være pålidelige, men er ikke verificerede, og Køber skal udføre og gennemføre al ydeevne og anden test af produkterne, alene og sammen med eller installeret i eventuelle slutprodukter. Køber skal ikke stole på nogen data og ydeevnespecifikationer eller parametre leveret af Microsemi. Det er Købers ansvar selvstændigt at bestemme egnetheden af ethvert produkt og at teste og verificere det samme. Oplysningerne leveret af Microsemi nedenfor leveres "som de er, hvor de er" og med alle fejl, og hele risikoen forbundet med sådanne oplysninger er udelukkende hos køberen. Microsemi giver ikke, eksplicit eller implicit, til nogen part nogen patentrettigheder, licenser eller andre IP-rettigheder, hvad enten det drejer sig om sådanne oplysninger i sig selv eller noget, der er beskrevet af sådanne oplysninger. Oplysningerne i dette dokument tilhører Microsemi, og Microsemi forbeholder sig retten til at foretage ændringer af oplysningerne i dette dokument eller til produkter og tjenester til enhver tid uden varsel.
Om Microsemi
Microsemi, et helejet datterselskab af Microchip Technology Inc. (Nasdaq: MCHP), tilbyder en omfattende portefølje af halvleder- og systemløsninger til rumfart og forsvar, kommunikation, datacentre og industrielle markeder. Produkterne omfatter højtydende og strålingshærdede analoge blandede signal-integrerede kredsløb, FPGA'er, SoC'er og ASIC'er; strømstyring produkter; timing- og synkroniseringsenheder og præcise tidsløsninger, der sætter verdens standard for tid; stemmebehandlingsudstyr; RF-løsninger; diskrete komponenter; enterprise storage og kommunikationsløsninger, sikkerhedsteknologier og skalerbar anti-tamper produkter; Ethernet-løsninger; Power-over-Ethernet IC'er og midspans; samt tilpassede designmuligheder og tjenester. Lær mere på www.microsemi.com.
Opstart og konfiguration
PolarFire SoC FPGA'er bruger avancerede opstartskredsløb for at sikre pålidelig strøm ved opstart og nulstilling. Ved opstart og nulstilling følger PolarFire SoC FPGA-opstartssekvensen Power-on-nulstilling (POR), Enhedsstart, Designinitialisering, Microcontroller Subsystem (MSS) pre-boot og MSS brugerstart. Dette dokument beskriver MSS pre-boot og MSS User Boot. For oplysninger om POR, Device Boot og Design-initialisering, se UG0890: PolarFire SoC FPGA Power-Up and Resets User Guide.
For mere information om MSS-funktioner, se UG0880: PolarFire SoC MSS User Guide.
Opstartssekvens
Opstartssekvensen starter, når PolarFire SoC FPGA tændes eller nulstilles. Den slutter, når processoren er klar til at udføre et applikationsprogram. Denne opstartssekvens løber gennem flere stagfør den begynder at udføre programmer.
Et sæt handlinger udføres under opstartsprocessen, som inkluderer start-nulstilling af hardwaren, perifer initialisering, hukommelsesinitialisering og indlæsning af den brugerdefinerede applikation fra ikke-flygtig hukommelse til den flygtige hukommelse til udførelse.
Følgende figur viser forskellige faser af opstartssekvensen.
Figur 1 Opstartssekvens
MSS Pre-boot
Efter vellykket afslutning af designinitialisering, starter MSS Pre-boot sin eksekvering. MSS frigives fra en nulstilling efter fuldførelse af alle normale opstartsprocedurer. Systemcontrolleren styrer programmeringen, initialiseringen og konfigurationen af enhederne. MSS Pre-boot forekommer ikke, hvis den programmerede enhed er konfigureret til systemcontroller-suspenderingstilstand.
MSS pre-boot-fasen af initialisering koordineres af systemcontroller-firmwaren, selvom den kan gøre brug af E51 i MSS Core Complex til at udføre visse dele af pre-boot-sekvensen.
Følgende hændelser opstår under MSS pre-boot stage:
- Opstart af MSS-indlejret ikke-flygtig hukommelse (eNVM)
- Initialisering af redundansreparationen forbundet med MSS Core Complex L2-cachen
- Godkendelse af brugerstartkode (hvis User Secure boot-indstillingen er aktiveret)
- Overdragelse af operationel MSS til User Boot-kode
MSS Core Complex kan startes i en af fire tilstande. Følgende tabel viser MSS pre-boot muligheder, som kan konfigureres og programmeres i sNVM. Opstartstilstanden er defineret af brugerparameteren U_MSS_BOOTMODE[1:0]. Yderligere opstartskonfigurationsdata er tilstandsafhængige og defineres af brugerparameteren U_MSS_BOOTCFG (se tabel 3, side 4 og tabel 5, side 6).
Tabel 1 • MSS Core Complex Boot Modes
U_MSS_BOOTMODE[1:0] | Mode | Beskrivelse |
0 | Tomgangsstøvle | MSS Core Complex starter fra boot ROM, hvis MSS ikke er konfigureret |
1 | Usikret støvle | MSS Core Complex starter direkte fra adresse defineret af U_MSS_BOOTADDR |
2 | Bruger sikker opstart | MSS Core Complex støvler fra sNVM |
3 | Fabrikssikker boot | MSS Core Complex-støvler ved hjælp af fabrikssikret opstartsprotokol |
Støvlemuligheden er valgt som en del af Libero designflowet. Ændring af tilstanden kan kun opnås gennem generering af en ny FPGA-programmering file.
Figur 2 • MSS Pre-boot Flow
Tomgangsstøvle
Hvis MSS ikke er konfigureret (f.eksample, tom enhed), så udfører MSS Core Complex et boot ROM-program, som holder alle processorerne i en uendelig løkke, indtil en debugger forbinder til målet. Opstartsvektorregistrene bevarer deres værdi, indtil enheden nulstilles, eller en ny opstartstilstandskonfiguration er programmeret. For konfigurerede enheder kan denne tilstand implementeres ved hjælp af
U_MSS_BOOTMODE=0 opstartsmulighed i Libero-konfiguratoren.
Note: I denne tilstand bruges U_MSS_BOOTCFG ikke.
Følgende figur viser tomgangsstartflowet.
Figur 3 • Idle Boot Flow
Ikke-sikker Boot
I denne tilstand udføres MSS Core Complex fra en specificeret eNVM-adresse uden godkendelse. Det giver den hurtigste opstartsmulighed, men der er ingen godkendelse af kodebilledet. Adressen kan angives ved at indstille U_MSS_BOOTADDR i Libero Configurator. Denne tilstand kan også bruges til at starte fra enhver FPGA Fabric-hukommelsesressource gennem FIC. Denne tilstand implementeres ved hjælp af
U_MSS_BOOTMODE=1 opstartsmulighed.
MSS Core Complex frigives fra nulstilling med bootvektorer defineret af U_MSS_BOOTCFG (som angivet i følgende tabel).
Tabel 2 • U_MSS_BOOTCFG Brug i ikke-sikker opstartstilstand 1
Offset (bytes) |
Størrelse (bytes) |
Navn |
Beskrivelse |
0 | 4 | BOOTVEC0 | Boot vektor til E51 |
4 | 4 | BOOTVEC1 | Boot vektor til U540 |
8 | 4 | BOOTVEC2 | Boot vektor til U541 |
16 | 4 | BOOTVEC3 | Boot vektor til U542 |
20 | 4 | BOOTVEC4 | Boot vektor til U543 |
Følgende figur viser det ikke-sikker bootflow.
Figur 4 • Ikke-sikkert Boot Flow
Bruger sikker opstart
Denne tilstand giver brugeren mulighed for at implementere deres egen brugerdefinerede sikker opstart, og brugerens sikre boot-kode placeres i sNVM. sNVM er en 56 KB ikke-flygtig hukommelse, der kan beskyttes af den indbyggede Physically Unclonable Function (PUF). Denne opstartsmetode anses for at være sikret, fordi sNVM-sider markeret som ROM er uforanderlige. Ved opstart kopierer systemcontrolleren brugerens sikre boot-kode fra sNVM til Data Tightly Integrated Memory (DTIM) i E51 Monitor-kernen. E51 begynder at udføre brugerens sikre boot-kode.
Hvis størrelsen på brugerens sikre boot-kode er større end størrelsen af DTIM'en, skal brugeren opdele bootkoden i to s.tages. sNVM kan indeholde de næste stage af brugerens opstartssekvens, som kan udføre godkendelse af den næste opstarttage ved at bruge brugergodkendelses-/dekrypteringsalgoritmen.
Hvis der bruges autentificerede eller krypterede sider, er den samme USK-nøgle (dvs.
U_MSS_BOOT_SNVM_USK) skal bruges til alle godkendte/krypterede sider.
Hvis godkendelse mislykkes, kan MSS Core Complex sættes i nulstilling og BOOT_FAIL tamper flag kan hejses. Denne tilstand implementeres ved hjælp af U_MSS_BOOTMODE=2 boot-indstillingen.
Tabel 3 • U_MSS_BOOTCFG Brug i brugersikker opstart
Offset (bytes) | Størrelse (bytes) | Navn | Beskrivelse |
0 | 1 | U_MSS_BOOT_SNVM_PAGE | Startside i SNVM |
1 | 3 | RESERVERET | Til justering |
4 | 12 | U_MSS_BOOT_SNVM_USK | Til autentificerede/krypterede sider |
Følgende figur viser brugerens sikre boot-flow.
Figur 5 • Bruger Sikker Boot Flow
Factory Sikker Boot
I denne tilstand læser systemcontrolleren SBIC (Secure Boot Image Certificate) fra eNVM og validerer SBIC. Ved vellykket validering kopierer System Controller den fabrikssikre boot-kode fra dens private, sikre hukommelsesområde og indlæser den i DTIM'en på E51 Monitor-kernen. Den sikre standardopstart udfører en signaturkontrol på eNVM-billedet ved hjælp af SBIC, som er gemt i eNVM. Hvis der ikke rapporteres fejl, frigives nulstillingen til MSS Core Complex. Hvis der rapporteres fejl, sættes MSS Core Complex i nulstilling og BOOT_FAIL tamper flaget hejst. Derefter aktiveres systemcontrolleren klamper flag, som hævder et signal til FPGA-strukturen til brugerhandling. Denne tilstand implementeres ved hjælp af U_MSS_BOOTMODE=3 boot-indstillingen.
SBIC'en indeholder adresse, størrelse, hash og ECDSA-signatur (Elliptic Curve Digital Signature Algorithm) for den beskyttede binære klat. ECDSA tilbyder en variant af Digital Signature Algorithm, som bruger elliptisk kurvekryptering. Den indeholder også nulstillingsvektoren for hver hardware
tråd/kerne/processorkerne (Hart) i systemet.
Tabel 4 • Secure Boot Image Certificate (SBIC)
Offset | Størrelse (bytes) | Værdi | Beskrivelse |
0 | 4 | IMAGEADDR | Adresse på UBL i MSS-hukommelseskort |
4 | 4 | IMAGELEN | Størrelse af UBL i bytes |
8 | 4 | BOOTVEC0 | Bootvektor i UBL til E51 |
12 | 4 | BOOTVEC1 | Boot vektor i UBL til U540 |
16 | 4 | BOOTVEC2 | Boot vektor i UBL til U541 |
20 | 4 | BOOTVEC3 | Boot vektor i UBL til U542 |
24 | 4 | BOOTVEC4 | Boot vektor i UBL til U543 |
28 | 1 | MULIGHEDER[7:0] | SBIC muligheder |
28 | 3 | RESERVERET | |
32 | 8 | VERSION | SBIC/Image version |
40 | 16 | DSN | Valgfri DSN-binding |
56 | 48 | H | UBL-billede SHA-384 hash |
104 | 104 | CODESIG | DER-kodet ECDSA-signatur |
Total | 208 | Bytes |
DSN
Hvis DSN-feltet ikke er nul, sammenlignes det med enhedens eget serienummer. Hvis sammenligningen mislykkes, vil boot_fail tampflaget er sat, og godkendelsen afbrydes.
VERSION
Hvis SBIC-tilbagekaldelse er aktiveret af U_MSS_REVOCATION_ENABLE, afvises SBIC, medmindre værdien af VERSION er større end eller lig med tilbagekaldelsestærsklen.
SBIC TILBAGETRÆDELSE MULIGHED
Hvis SBIC-tilbagekaldelse er aktiveret af U_MSS_REVOCATION_ENABLE og OPTIONS[0] er '1', tilbagekaldes alle SBIC-versioner mindre end VERSION ved fuldstændig godkendelse af SBIC. Tilbagekaldelsestærsklen forbliver på den nye værdi, indtil den igen stiger med en fremtidig SBIC med OPTIONS[0] = '1' og et højere VERSION-felt. Tilbagekaldelsestærsklen kan kun øges ved hjælp af denne mekanisme og kan kun nulstilles med en bitstrøm.
Når tilbagekaldelsestærsklen opdateres dynamisk, lagres tærsklen ved hjælp af det redundante lagerskema, der bruges til adgangskoder, således at et strømsvigt under enhedsstart ikke forårsager, at en efterfølgende enhedsstart mislykkes. Hvis opdateringen af tilbagekaldelsestærskel mislykkes, er det garanteret, at tærskelværdien enten er den nye værdi eller den tidligere.
Tabel 5 • U_MSS_BOOTCFG Brug i Factory Boot Loader-tilstand
Offset (bytes) |
Størrelse (bytes) |
Navn |
Beskrivelse |
0 | 4 | U_MSS_SBIC_ADDR | Adresse på SBIC i MSS adresserum |
4 | 4 | U_MSS_REVOCATION_ENABLE | Aktiver SBIC-tilbagekaldelse, hvis ikke-nul |
Følgende figur viser det fabrikssikre bootflow.
Figur 6 • Factory Secure Boot Flow
MSS brugerstart
MSS brugeropstart finder sted, når styringen gives fra System Controller til MSS Core Complex. Ved vellykket MSS-pre-boot frigiver systemcontrolleren nulstillingen til MSS Core Complex. MSS kan startes op på en af følgende måder:
- Bare Metal Applikation
- Linux applikation
- AMP Anvendelse
Bare Metal Applikation
De nøgne metalapplikationer til PolarFire SoC kan udvikles ved hjælp af SoftConsole-værktøjet. Dette værktøj giver output files i form af .hex, som kan bruges i Libero-flowet til at inkludere i programmeringsbitstrømmen file. Det samme værktøj kan bruges til at fejlsøge Bare Metal-applikationerne ved hjælp af JTAG
interface.
Den følgende figur viser SoftConsole Bare Metal-applikationen, som har fem harts (kerner) inklusive E51 Monitor-kerne.
Figur 7 • SoftConsole projekt
Linux applikation
Dette afsnit beskriver opstartssekvensen for Linux, der kører på alle U54-kerner.
En typisk opstartsproces består af tre stages. De første stagOpstartsindlæseren (FSBL) udføres fra on-chip Boot flash (eNVM). FSBL indlæser den anden stage boot loader (SSBL) fra en bootenhed til ekstern RAM eller cache. Opstartsenheden kan være eNVM eller embedded memory microcontroller (eMMC) eller ekstern SPI Flash. SSBL indlæser Linux-operativsystemet fra bootenhed til ekstern RAM. I tredje stage, Linux udføres fra den eksterne RAM.
Følgende figur viser Linux Boot Process flow.
Figur 8 • Typisk Linux Boot Process Flow
Detaljer om FSBL, Device tree, Linux og YOCTO build, hvordan man bygger og konfigurerer Linux, vil blive givet i den fremtidige udgivelse af dette dokument.
AMP Anvendelse
Detaljeret beskrivelse af Libero MSS Configurator og hvordan man fejlretter multi-processor applikationer ved hjælp af SoftConsole vil blive givet i den fremtidige udgivelse af dette dokument.
Forskellige kilder til opstart
Skal opdateres i fremtidige versioner af dette dokument.
Boot konfiguration
Skal opdateres i fremtidige versioner af dette dokument.
Akronymer
Følgende akronymer bruges i dette dokument.
Tabel 1 • Liste over akronymer
Akronym udvidet
- AMP Asymmetrisk multi-processing
- DTIM Data tæt integreret hukommelse (også kaldet SRAM)
- ECDSA Elliptisk kurve digital signaturalgoritme
- enNVM indlejret ikke-flygtig hukommelse
- FSBL Først Stage Boot Loader
- Hart Hardware tråd/kerne/processor kerne
- MSS Mikroprocessor undersystem
- POR Tænd Nulstil
- POF Fysisk uklonbar funktion
- ROM Læs kun hukommelse
- SCB System Controller Bridge
- sNVM Sikker ikke-flygtig hukommelse
Revisionshistorie
Revisionshistorikken beskriver de ændringer, der blev implementeret i dokumentet. Ændringerne er listet efter revision, startende med den aktuelle publikation.
Revision 2.0
Det følgende er en oversigt over ændringerne i denne revision.
- Oplysninger om Factory Secure Boot blev opdateret.
- Oplysninger om Bare Metal Application blev opdateret.
Revision 1.0
Den første udgivelse af dette dokument.
Microsemi hovedkvarter
One Enterprise, Aliso Viejo,
CA 92656 USA
Inden for USA: +1 800-713-4113
Uden for USA: +1 949-380-6100
Salg: +1 949-380-6136
Fax: +1 949-215-4996
E-mail: sales.support@microsemi.com
www.microsemi.com
©2020 Microsemi, et helejet datterselskab af Microchip Technology Inc. Alle rettigheder forbeholdes. Microsemi og Microsemi-logoet er registrerede varemærker tilhørende Microsemi Corporation. Alle andre varemærker og servicemærker tilhører deres respektive ejere.
Dokumenter/ressourcer
![]() |
Mikrochip UG0881 PolarFire SoC FPGA opstart og konfiguration [pdfBrugervejledning UG0881 PolarFire SoC FPGA opstart og konfiguration, UG0881, PolarFire SoC FPGA opstart og konfiguration, opstart og konfiguration |