Microcip UG0881 PolarFire SoC FPGA 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 pornire
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
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 inactiv
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 nesecurizat
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 utilizatorului
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ă
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
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 Linux
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 |