SoC Bootloader
Gli FPGA SoC Intel® utilizzano un bootloader per caricare ed eseguire l'applicazione dell'utente finale sul sistema hpS (Hard Processor System). L'applicazione per l'utente finale può essere una semplice applicazione bare metal o un sistema operativo complesso come il sistema operativo Linux*.
Questa pagina descrive cos'è un bootloader, elenca i boot loader disponibili e le loro caratteristiche principali, descrive come iniziare con i bootloader ed elenca risorse aggiuntive.
1. Cos'è un Bootloader
Definizione del bootloader
Quando un dispositivo SoC si avvia, viene eseguito per la prima volta un software chiamato BootROM. Per diversi motivi, la BootROM ha le seguenti funzionalità limitate:
- Deve adattarsi alla ROM su chip, quindi deve essere piccolo
- È molto costoso da cambiare, quindi deve essere molto robusto, il che implica meno funzionalità
- Non sa come è stato configurato il sistema, quindi non può far emergere tutto
L'applicazione dell'utente finale, d'altra parte, è in genere di grandi dimensioni e richiede che il sistema sia configurato come desiderato dall'utente finale prima di poter essere eseguito.
Il compito del bootloader è quello di colmare il divario tra la BootROM e l'applicazione dell'utente finale.
Le attività tipiche del bootloader includono:
- Configurazione del multiplexing dei pin e delle impostazioni dei pin, come la velocità di slew, la tensione e il pull-up/pull-down
- Configurazione degli orologi nell'albero dell'orologio
- Creazione e calibrazione della SDRAM
- Inizializzazione della memoria flash
- Caricamento dell'applicazione finale dalla memoria flash
- Passaggio del controllo all'applicazione finale
Oltre alle funzionalità sopra elencate, i bootloader offrono anche le seguenti funzionalità avanzate che possono consentire una distribuzione più complessa e uno sviluppo più conveniente:
- Accesso alla rete che porta l'applicazione dell'utente finale dal cloud.
- Strumenti di debug che consentono una diagnosi più comoda dei problemi.
- Interfaccia a riga di comando per comandi interattivi.
- Applicazione che esegue un framework in grado di consentire il caricamento e l'esecuzione di semplici applicazioni per l'utente finale da parte del bootloader. Al termine dell'applicazione, il controllo viene passato di nuovo al bootloader.
Bootloader multistadio
A volte il processo di bootloader può essere suddiviso in più fasi, in genere due.
Per i SoC Cyclone® V, la BootROM può caricare solo un boot loader di dimensioni fino a 64 KB perché la SDRAM non è ancora stata portata in quella fase. A causa della limitazione delle dimensioni, non è possibile eseguire funzionalità avanzate come la rete o l'accesso a file system complessi. Se si desiderano tali funzionalità, la prima fase del bootloader fa apparire la SDRAM e quindi carica una seconda fase con più funzionalità. Un bootloader a due stadi è l'opzione predefinita per i SoC Cyclone V e i SoC Arria® V.
I SoC Intel® Arria® 10 hanno una dimensione della RAM maggiore. Con 256 KB di RAM su chip, il primo stadio del bootloader può avere più funzionalità rispetto ai SoC Cyclone V e Arria V. Per questo motivo, in genere è necessaria una sola fase. Tuttavia, per casi ancora più complessi, come l'accesso a diversi tipi di flash, filesystem complessi e networking, l'utente è libero di utilizzare una fase di bootloader aggiuntiva.
Per i SoC Intel® Stratix® 10, viene in genere utilizzato un bootloader a due stadi. Il primo piccolo stadio di bootloader fa parte del flusso di configurazione FPGA e viene caricato da un gestore di dispositivi sicuro (SDM) nella RAM su chip HPS, mentre il secondo stadio di bootloader più grande può essere archiviato ovunque l'HPS abbia accesso.
2. Consegna hardware
Panoramica di Handoff
Tutti i progetti FPGA SoC Intel iniziano con un progetto hardware in cui l'utente imperisce varie impostazioni di sistema che influiscono sull'HPS. Questi includono:
- Multiplexing pin
- Impostazioni pin
- Impostazioni SDRAM
- Impostazioni dell'orologio
È compito del bootloader applicare queste impostazioni e il processo del bootloader che riceve queste impostazioni è chiamato handoff hardware-to-software.
A seconda dell'esatto bootloader e della famiglia di dispositivi SoC, l'handoff può assumere varie forme. Tipicamente:
- Per i SoC Cyclone V e Arria V, l'handoff è una combinazione di file XML, file binari e file di codice sorgente, che vengono convertiti in codice sorgente e quindi compilati nel preloader
- Per i SoC Intel Arria 10, l'handoff è contenuto in un singolo file XML che viene convertito in un file della struttura dei dispositivi e utilizzato dal bootloader
- Per i SoC Intel Stratix 10, le informazioni di handoff fanno parte del bitstream di configurazione FPGA
Il metodo principale per inserire o modificare le informazioni di handoff è attraverso la loro modifica nel Qsys.
Oltre alle informazioni di handoff, i bootloader hanno anche varie impostazioni che possono essere selezionate dall'utente attraverso i seguenti metodi:
- Modifica delle impostazioni nell'editor BSP
- Modifica del codice sorgente del bootloader
- Modifica dell'albero dei dispositivi del bootloader quando è in uso un albero dei dispositivi
Cyclone V Soc e Arria V SoC Handoff

Intel Arria 10 SoC Handoff

Mano del SoC Intel Stratix 10

3. Bootloader disponibili
Panoramica dei bootloader disponibili
Nella tabella seguente sono elencati i bootloader disponibili, i tipi di licenze, i SoC supportati e la disponibilità del supporto in due fasi:
Bootloader |
Tipo di licenza |
Ciclone V SoC |
Arria V SoC |
Intel Arria 10 SoC |
Intel Stratix 10 SoC |
Supporto in due fasi |
---|---|---|---|---|---|---|
U-Boot |
LICENZA GPL |
Sì |
Sì |
Sì |
Sì |
Sì |
MPL |
BSD |
Sì |
Sì |
Sì |
- |
- |
UEFI |
BSD |
- |
- |
Sì |
Sì |
Sì |
ATF |
BSD |
- |
- |
- |
Sì |
- |
U-Boot
U-Boot è un bootloader ampiamente utilizzato dall'industria e offre numerose funzionalità:
- Primo stadio opzionale chiamato "SPL" per sistemi con RAM su chip limitata (ad esempio, SoC Cyclone V e SoC Arria V)
- Capacità di rete
- Supporto per memoria flash
- Interfaccia della riga di comando
- Scripting
- Applicazioni personalizzate U-Boot
U-Boot è sviluppato sotto una licenza pubblica generale (GPL), quindi anche tutti i contributi che vengono fatti a un prodotto che viene consegnato al pubblico devono essere resi pubblici.
Il codice sorgente di U-Boot è disponibile nella pagina FPGA SoC U-Boot sul sito Web GitHub.
Per il SoC Intel Arria 10, il SoC Arria V e il SoC Cyclone V, il codice sorgente U-Boot è incluso in Intel SoC FPGA Embedded Development Suite (SoC EDS), facilitando un processo di sviluppo semplice e conveniente.
Si noti che il supporto per i SoC Cyclone V e Arria V è stato mainlined nell'albero git ufficiale di U-Boot sul sito Web GitHub. Sono in corso lavori per supportare anche la linea principale per i SoC Intel Arria 10.
La principale home page generica di U-Boot si trova nella pagina Web daS U-Boot - la pagina Web universale boot loader.
MPL
Il Minimal Preloader (MPL) è un bootloader sviluppato utilizzando le librerie di astrazione hardware bare metal (HWLIB) Intel SoC FPGA. È un bootloader monostadio progettato per un ingombro minimo.
L'MPL è disponibile per i seguenti dispositivi:
- Ciclone V SoC
- Arria V SoC
- Intel Arria 10 SoC
L'MPL è offerto con una licenza Berkeley Software Distribution (BSD), che consente uno sviluppo e una distribuzione più convenienti.
L'MPL viene fornito come parte del SoC EDS ed è un archivio di progetto nellacartella di installazione < SoC EDS>/embedded/examples/software/Intel® FPGA-SoCFPGA-HardwareLib-MPL.tar.gz file. L'archivio contiene un file denominato README.txt, che contiene descrizioni MPL dettagliate e informazioni sull'utilizzo.
UEFI
L'interfaccia UEFI (Unified Extensible Firmware Interface) è una specifica firmware standardizzata che semplifica l'inizializzazione della piattaforma e il bootstrap del firmware.
Il bootloader UEFI è disponibile per i seguenti dispositivi:
- Intel Arria 10 SoC
- Intel Stratix 10 SoC
Poiché l'UEFI è molto ben specificato e utilizzato da centinaia di aziende tecnologiche, gran parte del codice può essere riutilizzato, consentendo cicli di sviluppo più rapidi.
L'UEFI implementato sugli FPGA SoC Intel comprende due diverse fasi:
- Fase di inizializzazione pre-Efi (PEI). Questa fase configura la piattaforma e carica l'applicazione dell'utente finale o DXE.
- Driver eXecution Environment (DXE). Questa fase carica driver UEFI aggiuntivi e consente funzionalità più estese, come la rete e l'interfaccia della riga di comando.
Il bootloader UEFI offre anche la possibilità di eseguire applicazioni speciali destinate all'ambiente DXE. Tali applicazioni possono essere eseguite quindi quando il controllo di uscita ritorna al DXE.
UEFI è offerto con una licenza BSD, che consente uno sviluppo e una distribuzione più convenienti.
Il codice sorgente UEFI è disponibile nella pagina UEFI SoC FPGA sul sito Web GitHub.
Per i SoC Intel Arria 10, UEFI viene fornito anche con SoC EDS che consente lo stesso flusso di sviluppo di U-Boot.
ATF
ARM Trusted Firmware (ATF) è un'implementazione di riferimento del software secure world per ARMv8-a, che implementa vari standard di interfaccia ARM, come Trusted Board Boot Requirements (TBBR) e Secure Monitor call.
L'ATF è sviluppato in collaborazione con una licenza BSD, che consente uno sviluppo e una distribuzione convenienti.
L'ATF ha un ingombro ridotto ed è progettato come First Stage Bootloader (FSBL). Viene utilizzato con UEFI per caricare il PXE quindi DXE, ma può anche ad esempio essere utilizzato per caricare una semplice applicazione bare-metal.
Il codice sorgente per la porta Intel SoC FPGA di ATF è accessibile da https://github.com/Intel FPGA-opensource/arm-trusted-firmware.
4. Per iniziare
Guida introduttiva a U-Boot
Le seguenti risorse sono disponibili per iniziare a utilizzare U-Boot:
- Generazione e compilazione del preloader Cyclone V
- Generazione e compilazione di Arria 10 U-Boot
MPL Per iniziare
L'MPL viene fornito come parte del SoC EDS ed è un archivio di progetto nella cartella di installazione <SoC EDS>/embedded/examples/software/Intel FPGA-SoCFPGA-HardwareLib-MPL.tar.gz file. L'archivio contiene un file denominato README.txt con informazioni dettagliate sull'utilizzo per i SoC Intel Arria 10, i SoC Arria V e i SoC Cyclone V.
Guida introduttiva UEFI
Le seguenti risorse sono disponibili per iniziare a utilizzare UEFI:
- Intel Arria 10 SoC UEFI Guida introduttiva
- Guida dell'utente di Intel Arria 10 SoC UEFI Boot Loader
- Guida dell'utente di Intel Stratix 10 SoC UEFI Boot Loader
5. Risorse
Guide per l'utente
Sono disponibili le seguenti guide per l'utente:
Codice sorgente
Il codice sorgente può essere ottenuto dai seguenti siti web:
- Intel SoC FPGA U-Boot su GitHub
- Codice sorgente ufficiale Denx U-Boot
- Intel SoC FPGA UEFI su GitHub
- Firmware attendibile ARM su GitHub
- SoC EDS per il codice sorgente U-Boot di Cyclone V, Arrial V e Arria 10 U-Boot e il codice sorgente UEFI di Arria 10. Il codice sorgente viene generato eseguendo lo strumento bsp-editor. Vedere maggiori dettagli nel capitolo Guida per l'utente di SoC EDS,"Guida dell'utente degli strumenti di avvio".
- SoC EDS per il codice sorgente U-Boot SoC S10, nel file <SoC EDS Installation Folder>/embedded/host_tools/Intel FPGA/bootloaders/stratix10/u-boot/uboot-socfpga.tar.gz.
- SoC EDS per il codice sorgente MPL, che si trova nella cartella di installazione <SoC EDS>/embedded/examples/software/Intel FPGA-SoCFPGA-HardwareLib-MPL.tar.gz.
Il contenuto di questa pagina è il risultato della combinazione tra la traduzione umana e quella automatica del contenuto originale in lingua inglese. Questo contenuto è fornito soltanto a titolo di informazione generale e non ha pretese di completezza o accuratezza. In presenza di contraddizioni tra la versione in lingua inglese di questa pagina e la sua traduzione, fa fede la versione inglese. Visualizza la versione in lingua inglese di questa pagina.