Microsemi-LGOO

Microcip UG0881 PolarFire SoC FPGA Pornire și configurare

Microcip-UG0881-PolarFire-SoC-FPGA-Produs-de-pornire-și-configurare

garanție

Microsemi nu oferă nicio garanție, reprezentare sau garanție cu privire la informațiile conținute aici sau adecvarea produselor și serviciilor sale pentru un anumit scop și nici Microsemi nu își asumă nicio răspundere care decurge din aplicarea sau utilizarea oricărui produs sau circuit. Produsele vândute mai jos și orice alte produse vândute de Microsemi au fost supuse unor teste limitate și nu trebuie utilizate împreună cu echipamente sau aplicații esențiale. Se consideră că orice specificații de performanță sunt de încredere, dar nu sunt verificate, iar Cumpărătorul trebuie să efectueze și să finalizeze toate testele de performanță și alte teste ale produselor, singure și împreună cu sau instalate în orice produs final. Cumpărătorul nu se va baza pe datele și specificațiile de performanță sau parametrii furnizați de Microsemi. Este responsabilitatea Cumpărătorului să determine în mod independent caracterul adecvat al oricărui produs și să le testeze și să le verifice. Informațiile furnizate de Microsemi mai jos sunt furnizate „ca atare, unde se află” și cu toate greșelile, iar întregul risc asociat cu astfel de informații revine în totalitate Cumpărătorului. Microsemi nu acordă, în mod explicit sau implicit, niciunei părți niciun drept de brevet, licență sau orice alte drepturi de proprietate intelectuală, indiferent dacă se referă la aceste informații în sine sau la orice este descris de astfel de informații. Informațiile furnizate în acest document sunt proprietatea Microsemi, iar Microsemi își rezervă dreptul de a face orice modificări ale informațiilor din acest document sau oricăror produse și servicii în orice moment, fără notificare.

Despre Microsemi

Microsemi, o subsidiară deținută în totalitate a Microchip Technology Inc. (Nasdaq: MCHP), oferă un portofoliu cuprinzător de soluții de sisteme și semiconductori pentru industria aerospațială și apărare, comunicații, centre de date și piețe industriale. Produsele includ circuite integrate analogice cu semnal mixt de înaltă performanță și întărite la radiații, FPGA, SoC și ASIC; produse de management al energiei; dispozitive de cronometrare și sincronizare și soluții de timp precise, stabilind standardul mondial pentru timp; Dispozitive de procesare a vocii; soluții RF; componente discrete; soluții de stocare și comunicații pentru întreprinderi, tehnologii de securitate și anti-t scalabileamper produse; soluții Ethernet; Circuite integrate și midspan-uri Power-over-Ethernet; precum și capabilități și servicii de design personalizat. Aflați mai multe la www.microsemi.com.

Pornire și configurare

FPGA-urile PolarFire SoC folosesc circuite avansate de pornire pentru a asigura o pornire fiabilă la pornire și resetare. La pornire și resetare, secvența de pornire PolarFire SoC FPGA urmează resetarea la pornire (POR), pornirea dispozitivului, inițializarea designului, pre-pornirea subsistemului microcontrolerului (MSS) și pornirea utilizatorului MSS. Acest document descrie MSS pre-boot și MSS User Boot. Pentru informații despre POR, pornirea dispozitivului și inițializarea designului, consultați UG0890: Ghidul utilizatorului de pornire și resetare PolarFire SoC FPGA.
Pentru mai multe informații despre caracteristicile MSS, consultați UG0880: Ghidul utilizatorului PolarFire SoC MSS.

Secvență de pornire
Secvența de pornire începe când PolarFire SoC FPGA este pornit sau resetat. Se termină când procesorul este gata să execute un program de aplicație. Această secvență de pornire trece prin mai multe secvențetageste înainte de a începe execuția programelor.
În timpul procesului de pornire sunt efectuate un set de operațiuni care includ resetarea hardware-ului la pornire, inițializarea perifericelor, inițializarea memoriei și încărcarea aplicației definite de utilizator din memoria nevolatilă în memoria volatilă pentru execuție.

Figura următoare prezintă diferite faze ale secvenței de pornire.

Figura 1  Secvență de pornireMicrocip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-fig 1

MSS pre-pornire

După finalizarea cu succes a inițializării designului, MSS Pre-boot își începe execuția. MSS este eliberat de la o resetare după finalizarea tuturor procedurilor normale de pornire. Controlerul de sistem gestionează programarea, inițializarea și configurarea dispozitivelor. MSS Pre-boot nu are loc dacă dispozitivul programat este configurat pentru modul de suspendare a controlerului de sistem.
Faza de pre-pornire MSS a inițializării este coordonată de firmware-ul controlerului de sistem, deși poate utiliza E51 din Complexul MSS Core pentru a efectua anumite părți ale secvenței de pre-pornire.
Următoarele evenimente au loc în timpul pre-pornirii MSStage:

  • Pornirea memoriei non-volatile încorporate MSS (eNVM)
  • Inițializarea reparației de redundanță asociată cu memoria cache MSS Core Complex L2
  • Autentificarea codului de pornire utilizator (dacă este activată opțiunea de pornire sigură pentru utilizator)
  • Transferați MSS operațional către codul de pornire utilizator

Complexul MSS Core poate fi pornit în unul dintre cele patru moduri. Următorul tabel listează opțiunile de pre-pornire MSS, care pot fi configurate și programate în sNVM. Modul de pornire este definit de parametrul utilizator U_MSS_BOOTMODE[1:0]. Datele suplimentare de configurare de pornire depind de mod și sunt definite de parametrul utilizator U_MSS_BOOTCFG (vezi Tabelul 3, pagina 4 și Tabelul 5, pagina 6).

Tabelul 1 • Moduri de pornire complexe MSS Core

U_MSS_BOOTMODE[1:0] Modul Descriere
0 Cizma inactiv MSS Core Complex pornește din ROM-ul de pornire dacă MSS nu este configurat
1 Pornire nesigură MSS Core Complex pornește direct de la adresa definită de U_MSS_BOOTADDR
2 Pornire sigură de utilizator Cizme MSS Core Complex de la sNVM
3 Boot securizată din fabrică MSS Core Complex pornește folosind protocolul de pornire securizat din fabrică

Opțiunea de încărcare este selectată ca parte a fluxului de design Libero. Schimbarea modului poate fi realizată doar prin generarea unei noi programe FPGA file.

Figura 2 • MSS Pre-boot Flow Microcip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-fig 2

Boot inactiv

Dacă MSS nu este configurat (de example, dispozitiv gol), apoi MSS Core Complex execută un program ROM de pornire care ține toate procesoarele într-o buclă infinită până când un depanator se conectează la țintă. Registrele vectorului de pornire își mențin valoarea până când dispozitivul este resetat sau este programată o nouă configurație a modului de pornire. Pentru dispozitivele configurate, acest mod poate fi implementat folosind
U_MSS_BOOTMODE=0 opțiunea de pornire în configuratorul Libero.

Nota: În acest mod, U_MSS_BOOTCFG nu este utilizat.

Figura următoare arată fluxul de pornire inactiv.
Figura 3 • Flux de pornire inactivMicrocip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-fig 3

Pornire nesecurizată

În acest mod, MSS Core Complex se execută de la o adresă eNVM specificată fără autentificare. Oferă cea mai rapidă opțiune de pornire, dar nu există nicio autentificare a imaginii de cod. Adresa poate fi specificată setând U_MSS_BOOTADDR în Libero Configurator. Acest mod poate fi folosit și pentru a porni din orice resursă de memorie FPGA Fabric prin FIC. Acest mod este implementat folosind
U_MSS_BOOTMODE=1 opțiune de pornire.
Complexul MSS Core este eliberat de la resetare cu vectorii de pornire definiți de U_MSS_BOOTCFG (așa cum este listat în tabelul următor).

Tabelul 2 • Utilizarea U_MSS_BOOTCFG în modul de pornire non-securizat 1

Offset (octeți)  

Dimensiune (octeți)

 

Nume

 

Descriere

0 4 BOOTVEC0 Vector de pornire pentru E51
4 4 BOOTVEC1 Vector de pornire pentru U540
8 4 BOOTVEC2 Vector de pornire pentru U541
16 4 BOOTVEC3 Vector de pornire pentru U542
20 4 BOOTVEC4 Vector de pornire pentru U543

Următoarea figură arată fluxul de pornire non-secure.
Figura 4 • Flux de pornire nesecurizatMicrocip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-fig 4

Pornire sigură de utilizator
Acest mod permite utilizatorului să implementeze propriul boot securizat personalizat, iar codul de pornire securizat al utilizatorului este plasat în sNVM. sNVM este o memorie nevolatilă de 56 KB care poate fi protejată de funcția Physically Unclonable (PUF) încorporată. Această metodă de pornire este considerată securizată deoarece paginile sNVM marcate ca ROM sunt imuabile. La pornire, controlerul de sistem copiază codul de pornire securizat al utilizatorului din sNVM în memoria integrată strânsă de date (DTIM) a nucleului monitorului E51. E51 începe să execute codul de pornire securizat de utilizator.
Dacă dimensiunea codului de pornire securizat de utilizator este mai mare decât dimensiunea DTIM, atunci utilizatorul trebuie să împartă codul de pornire în două stages. sNVM poate conține următorul stage din secvența de pornire a utilizatorului, care poate efectua autentificarea următoarelor porniritage folosind algoritmul de autentificare/decriptare a utilizatorului.
Dacă sunt folosite pagini autentificate sau criptate, atunci aceeași cheie USK (adică
U_MSS_BOOT_SNVM_USK) trebuie utilizat pentru toate paginile autentificate/criptate.
Dacă autentificarea eșuează, MSS Core Complex poate fi plasat în resetare și BOOT_FAIL tampsteagul poate fi ridicat. Acest mod este implementat folosind opțiunea de pornire U_MSS_BOOTMODE=2.

Tabelul 3 •  Utilizare U_MSS_BOOTCFG în pornirea sigură a utilizatorului

Offset (octeți) Dimensiune (octeți) Nume Descriere
0 1 U_MSS_BOOT_SNVM_PAGE Pagina de pornire în SNVM
1 3 REZERVAT Pentru aliniere
4 12 U_MSS_BOOT_SNVM_USK Pentru pagini autentificate/criptate

Următoarea figură arată fluxul de pornire securizat de utilizator.
Figura 5 • Fluxul de pornire sigur al utilizatoruluiMicrocip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-fig 5

Pornire securizată din fabrică
În acest mod, controlerul de sistem citește Secure Boot Image Certificate (SBIC) de la eNVM și validează SBIC. După validarea cu succes, controlerul de sistem copiază codul de pornire securizat din fabrică din zona sa de memorie privată și securizată și îl încarcă în DTIM-ul nucleului monitorului E51. Boot-ul securizat implicit efectuează o verificare a semnăturii pe imaginea eNVM folosind SBIC care este stocat în eNVM. Dacă nu sunt raportate erori, resetarea este eliberată în MSS Core Complex. Dacă sunt raportate erori, MSS Core Complex este plasat în resetare și BOOT_FAIL tampsteagul este ridicat. Apoi, controlerul de sistem se activează laamper flag care afirmă un semnal către tesatura FPGA pentru acțiunea utilizatorului. Acest mod este implementat folosind opțiunea de pornire U_MSS_BOOTMODE=3.

SBIC conține adresa, dimensiunea, hash și semnătura Eliptic Curve Digital Signature Algorithm (ECDSA) a blobului binar protejat. ECDSA oferă o variantă a algoritmului de semnătură digitală care utilizează criptografia cu curbă eliptică. Conține, de asemenea, vectorul de resetare pentru fiecare Hardware
thread/core/procesor core (Hart) în sistem.

Tabelul 4 •  Certificat de imagine de pornire securizată (SBIC)

Offset Dimensiune (octeți) Valoare Descriere
0 4 IMAGEADDR Adresa UBL în harta memoriei MSS
4 4 IMAGELEN Dimensiunea UBL în octeți
8 4 BOOTVEC0 Vector de pornire în UBL pentru E51
12 4 BOOTVEC1 Vector de pornire în UBL pentru U540
16 4 BOOTVEC2 Vector de pornire în UBL pentru U541
20 4 BOOTVEC3 Vector de pornire în UBL pentru U542
24 4 BOOTVEC4 Vector de pornire în UBL pentru U543
28 1 OPȚIUNI[7:0] Opțiuni SBIC
28 3 REZERVAT  
32 8 VERSIUNE Versiunea SBIC/Imagine
40 16 DSN Legarea DSN opțională
56 48 H Imagine UBL SHA-384 hash
104 104 CODESIG Semnătură ECDSA codificată DER
Total 208 octeți  

DSN
Dacă câmpul DSN este diferit de zero, acesta este comparat cu propriul număr de serie al dispozitivului. Dacă comparația eșuează, atunci boot_fail tampsteag este setat și autentificarea este anulată.

VERSIUNE
Dacă revocarea SBIC este activată de U_MSS_REVOCATION_ENABLE, SBIC este respins dacă valoarea VERSION este mai mare sau egală cu pragul de revocare.

OPȚIUNEA DE REVOCARE SBIC
Dacă revocarea SBIC este activată de U_MSS_REVOCATION_ENABLE și OPTIONS[0] este „1”, toate versiunile SBIC mai mici decât VERSION sunt revocate la autentificarea completă a SBIC. Pragul de revocare rămâne la noua valoare până când crește din nou cu un viitor SBIC cu OPTIONS[0] = '1' și un câmp VERSIUNE mai mare. Pragul de revocare poate fi crescut numai folosind acest mecanism și poate fi resetat doar printr-un flux de biți.
Când pragul de revocare este actualizat dinamic, pragul este stocat utilizând schema de stocare redundantă utilizată pentru codurile de acces, astfel încât o întrerupere a alimentării în timpul pornirii dispozitivului să nu provoace încărcarea ulterioară a dispozitivului. Dacă actualizarea pragului de revocare eșuează, se garantează că valoarea pragului este fie noua valoare, fie cea anterioară.

Tabelul 5 • Utilizare U_MSS_BOOTCFG în modul Factory Boot Loader

Offset (octeți)  

Dimensiune (octeți)

 

Nume

 

Descriere

0 4 U_MSS_SBIC_ADDR Adresa SBIC în spațiul de adrese MSS
4 4 U_MSS_REVOCATION_ENABLE Activați revocarea SBIC dacă este diferit de zero

Următoarea figură arată fluxul de pornire securizat din fabrică.
Figura 6 • Flux de pornire securizat din fabricăMicrocip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-fig 6 Microcip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-fig 7

MSS User Boot 

Pornirea utilizatorului MSS are loc atunci când controlul este dat de la Controlerul de sistem către Complexul de bază MSS. La pre-pornirea cu succes a MSS, controlerul de sistem eliberează resetarea la MSS Core Complex. MSS poate fi pornit în unul dintre următoarele moduri:

  • Aplicație Bare Metal
  • Aplicație Linux
  • AMP Aplicație

Aplicație Bare Metal

Aplicațiile bare metal pentru PolarFire SoC pot fi dezvoltate folosind instrumentul SoftConsole. Acest instrument oferă rezultatul files sub formă de .hex care poate fi folosit în fluxul Libero pentru a fi inclus în fluxul de biți de programare file. Același instrument poate fi folosit pentru a depana aplicațiile Bare Metal folosind JTAG
interfata.
Figura următoare arată aplicația SoftConsole Bare Metal care are cinci hart-uri (core) inclusiv nucleul E51 Monitor.

Figura 7 • Proiectul SoftConsole Microcip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-fig 8

Aplicație Linux

Această secțiune descrie secvența de pornire pentru Linux care rulează pe toate nucleele U54.
Un proces tipic de pornire constă din trei sectoaretages. Primul stagÎncărcătorul de pornire (FSBL) este executat din flash-ul de pornire pe cip (eNVM). FSBL încarcă al doilea stage încărcător de pornire (SSBL) de la un dispozitiv de pornire la RAM externă sau Cache. Dispozitivul de pornire poate fi eNVM sau microcontroler cu memorie încorporată (eMMC) sau SPI Flash extern. SSBL încarcă sistemul de operare Linux de la dispozitivul de pornire la memoria RAM externă. În al treilea stage, Linux este executat din memoria RAM externă.

Următoarea figură arată fluxul procesului de pornire Linux.
Figura 8 • Fluxul tipic al procesului de pornire LinuxMicrocip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-fig 9

Detaliile despre FSBL, arborele dispozitivului, Linux și YOCTO, cum să construiți și să configurați Linux, vor fi furnizate în versiunea viitoare a acestui document.

AMP Aplicație
O descriere detaliată a Libero MSS Configurator și modul de depanare a aplicațiilor cu mai multe procesoare folosind SoftConsole va fi furnizată în versiunea viitoare a acestui document.

Diferite surse de pornire
De actualizat în versiunile viitoare ale acestui document.

Configurație de pornire
De actualizat în versiunile viitoare ale acestui document.

Acronime

Următoarele acronime sunt utilizate în acest document.

Tabelul 1 •  Lista de acronime

Acronim extins

  • AMP Multi-procesare asimetrică
  • DTIM Memorie integrată de date (numită și SRAM)
  • ECDSA Algoritmul de semnătură digitală cu curbă eliptică
  • eNVM memorie non-volatilă încorporată
  • FSBL În primul rând Stage Boot Loader
  • Cerb Fir hardware/nucleu/nucleu procesor
  • MSS Subsistem cu microprocesor
  • POR Porniți Resetare
  • PUC Funcție neclonabilă din punct de vedere fizic
  • ROM Memorie numai pentru citire
  • SCB Podul controlerului de sistem
  • sNVM Memorie nevolatilă sigură

Istoricul revizuirilor

Istoricul revizuirilor descrie modificările care au fost implementate în document. Modificările sunt listate după revizuire, începând cu publicația curentă.

Revizia 2.0
Mai jos este un rezumat al modificărilor aduse în această revizuire.

  • Informațiile despre Factory Secure Boot au fost actualizate.
  • Informațiile despre aplicația Bare Metal au fost actualizate.

Revizia 1.0
Prima publicație a acestui document.

Sediul Microsemi
One Enterprise, Aliso Viejo,
CA 92656 SUA
În SUA: +1 800-713-4113
În afara SUA: +1 949-380-6100
Vânzări: +1 949-380-6136
Fax: +1 949-215-4996
E-mail: sales.support@microsemi.com
www.microsemi.com

©2020 Microsemi, o subsidiară deținută în totalitate a Microchip Technology Inc. Toate drepturile rezervate. Microsemi și sigla Microsemi sunt mărci comerciale înregistrate ale Microsemi Corporation. Toate celelalte mărci comerciale și mărci de servicii sunt proprietatea deținătorilor respectivi.

Documente/Resurse

Microcip UG0881 PolarFire SoC FPGA Pornire și configurare [pdfGhid de utilizare
UG0881 PolarFire SoC FPGA Pornire și configurare, UG0881, PolarFire SoC FPGA Pornire și configurare, pornire și configurare

Referințe

Lasă un comentariu

Adresa ta de e-mail nu va fi publicată. Câmpurile obligatorii sunt marcate *