Caricatore di avvio UEFI SoC Intel UG-20080 Stratix 10
Sopraview
Questo documento fornisce informazioni complete sul caricatore di avvio UEFI (Unified Extensible Firmware Interface) per SoC Intel Stratix 10. Il SoC Intel Stratix 10 fornisce un flusso di avvio sicuro, composto da
- La ROM di avvio
- Il gestore dispositivi sicuri (SDM)
- Il monitor sicuro
- Il caricatore di avvio UEFI
Il flusso di avvio sicuro del SoC Intel Stratix 10 garantisce che il boot loader del sistema sia firmato con una chiave crittografica, convalidata dal firmware. Il monitor sicuro stage implementa anche il modello TrustZone* di partizionamento sicuro. Questo modello divide l'ambiente software in due partizioni isolate, chiamate mondo sicuro e mondo non sicuro. I due mondi possono comunicare tra loro solo attraverso il Secure Monitor. L'immagine binaria del boot loader UEFI può essere archiviata sulla scheda SD/MMC flash Quad SPI. All'accensione della scheda, il Secure Device Manager (SDM) carica il Secure Monitor direttamente sulla RAM su chip dell'Hard Processor System (HPS). Quindi Secure Monitor carica il boot loader UEFI nella memoria HPS DDR.
Le attività di Secure Monitor includono
- Inizializzazione della memoria DDR SDRAM
- Configurazione di hardware di basso livello, come PLL, IO e MUX pin, necessari per il software mondiale non sicuro
Le attività del caricatore di avvio UEFI includono
- Fornire supporto Ethernet
- Supporto delle funzionalità diagnostiche hardware di base
- Recupero del software di avvio successivo come il pacchetto del sistema operativo o l'immagine del kernel.
Nota: Per l'avvio non sicuro, il pacchetto del sistema operativo può includere l'immagine del kernel, il BLOB dell'albero del dispositivo e filesistema. Per l'avvio sicuro può essere un kernel sicuro.
Flusso di avvio UEFI terminatoview
Requisiti di sistema
Per caricare ed eseguire il caricatore di avvio UEFI (Unified Extensible Firmware Interface) SoC Intel Stratix 10, il sistema deve soddisfare i seguenti requisiti.
Requisiti hardware minimi
- Workstation Linux con la seguente configurazione:
- Terminale seriale, come Minicom per Linux
- Slot per schede microSD o scrittore di schede microSD o scrittore compatibile con SD con convertitore da SD a microSD
Capacità della piattaforma
Linux | |
In grado di compilare il boot loader UEFI | SÌ |
In grado di compilare il Secure Monitor | SÌ |
Requisiti software minimi
- Intel® SoC FPGA Embedded Development Suite (SoC EDS) v18.1 e versioni successive
- Catena degli strumenti Linaro aarch64-linux-gnu-gcc
Iniziare
Installazione dei componenti software
Installazione del SoC Intel EDS
- È necessario installare Intel SoC EDS sul computer.
- Scarica Intel SoC EDS dal Download Center per FPGA.
Installazione della toolchain del compilatore
Compila il boot loader UEFI e Secure Monitor con GNU Toolchain (versione EABI) per processori Arm*. Puoi scaricare la GNU Toolchain dalla pagina di download di Arm.
- Linux: gcc-arm-8.3-2019.03-x86_64-aarch64-Linux-gnu.tar.xz
Costruire il monitor sicuro
Poiché la sicurezza diventa sempre più importante, una soluzione di avvio protetto diventa un requisito nel mondo embedded. Per garantire una sicurezza completa e una piattaforma affidabile, è necessario un partizionamento sicuro. Il dispositivo Intel Stratix 10 ottiene un partizionamento sicuro implementando il modello TrustZone con Arm Trusted Firmware (ATF). Il modello TrustZone divide l’ambiente informatico in due mondi isolati, il mondo sicuro e il mondo normale, collegati da un monitor software chiamato Secure Monitor. I due mondi hanno separato lo spazio degli indirizzi logici e le periferiche. La comunicazione tra i due mondi è possibile solo richiamando l'istruzione privilegiata Secure Monitor call (SMC).
La soluzione di avvio sicuro completa è
- BootRom
- Gestore dispositivi sicuri
- Monitor sicuro
- Uboot/UEFI
- Ipervisore
- OS
La modalità Secure Monitor è una modalità privilegiata ed è sempre sicura indipendentemente dallo stato del bit NS. Secure Monitor è un codice che viene eseguito in modalità Secure Monitor ed elabora i passaggi da e verso il mondo Secure. La sicurezza complessiva del software si basa sulla sicurezza di questo codice insieme al codice di avvio protetto.
Informazioni correlate
Informazioni generali sul firmware Arm Trusted
Configurazione utente
È possibile trovare tutte le configurazioni della piattaforma in arm-trusted-firmware/plat/intel/soc/stratix10/include/socfpga_plat_def.h. Per la configurazione utente, è necessario modificare le origini di avvio in base alle proprie preferenze. Selezionare BOOT_SOURCE_SDMMC se si esegue l'avvio da SDMMC o selezionare BOOT_SOURCE_QSPI se si esegue l'avvio da QSPI.
- #define BOOT_SOURCE BOOT_SOURCE_SDMMC
Nota: Per cambiare lo stivale filenome o offset, puoi modificare #define in this file.
Ottenere il codice sorgente del firmware Arm Trusted
La fonte ATF è su GitHub. Per ottenere il codice sorgente ATF, esegui semplicemente i seguenti passaggi
- Aprire un terminale.
- Crea una nuova directory per estrarre il codice sorgente ATF da GitHub.
- Passa a questa directory di lavoro e clona l'origine ATF dagli alberi Git come segue:
- Al termine, passare alla cartella arm-trusted-firmware ed eseguire un check-out Git come segue:
- cd arm-firmware affidabile
- git checkout socfpga_v2.1
Informazioni correlate
- Costruire l'ATF.
- Compilazione del codice sorgente UEFI con Linaro Tool Chain.
- Esecuzione del monitoraggio sicuro.
Costruire l'ATF
Questa sezione descrive come costruire l'ATF con il compilatore Linaro GCC. Per iniziare a costruire l'ATF con il compilatore Linaro GCC, esegui semplicemente i seguenti passaggi
- Modifica la directory nel percorso del codice sorgente ATF come segue:
- cd arm-firmware affidabile
- Imposta il percorso GCC e la variabile d'ambiente CROSS_COMPILE sulla compilazione incrociata di Linaro come segue: export PATH= /\gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin/:$PATH
- esporta ARCH=arm64
- esporta CROSS_COMPILE=aarch64-linux-gnu-
- Rimuovere completamente l'albero di compilazione come segue:
- rendere realclean
- Costruisci l'ATF utilizzando il seguente comando:
- rendere PLAT=stratix10 bl2 bl31
- I seguenti messaggi vengono visualizzati quando la compilazione ATF ha esito positivo
- La tabella seguente elenca l'output di Secure Monitor files.
Descrizioni di Secure Monitor Files
File Percorso e nome | Descrizione |
\build\stratix10\release\bl31.bin | Binario generato file |
\build\stratix10\release\bl31\bl31.elf | Elfo generato file |
\build\stratix10\release\bl2.bin | Binario generato file |
\build\stratix10\release\bl2\bl2.elf | Elfo generato file |
Creazione del caricatore di avvio UEFI
Per creare un boot loader UEFI, ottieni il codice sorgente UEFI e compila il sorgente UEFI con la toolchain supportata.
L'UEFI (Unified Extensible Firmware Interface) è una specifica firmware standardizzata che semplifica e protegge l'inizializzazione della piattaforma e le operazioni di bootstrap del firmware. UEFI è attualmente sviluppato e supportato da rappresentanti di oltre 250 aziende tecnologiche leader del settore. Arm e Linaro Enterprise Group stanno inoltre promuovendo l'uso di UEFI sull'architettura Arm perché le specifiche UEFI aiutano a standardizzare il processo di avvio per le piattaforme basate su processori Arm. La tecnologia UEFI è a prova di futuro grazie alla standardizzazione della progettazione del firmware anziché alla progettazione del firmware proprietario. Le specifiche UEFI promuovono l’efficienza aziendale e tecnologica, migliorano le prestazioni e la sicurezza, facilitano l’interoperabilità tra dispositivi, piattaforme e sistemi e sono conformi alle tecnologie di prossima generazione. La specifica UEFI è peer-reviewedificato e pubblicato, consentendo agli sviluppatori di scrivere il firmware una volta per piattaforma e riutilizzarlo senza troppe modifiche. Questo riutilizzo si traduce in risparmi di tempo e costi durante lo sviluppo del boot loader. Questo framework utilizza la licenza BSD, consentendoti di commercializzare facoltativamente la tua implementazione con problemi legali minimi. Puoi compilare il codice sorgente UEFI in un sistema Windows o Linux.
Prerequisiti
La creazione di UEFI richiede pacchetti Linux aggiuntivi. A seconda della distribuzione Linux, il comando per installare i pacchetti è diverso:
Se stai usando una distribuzione Ubuntu, digita
- sudo apt-get install uuid-dev build-essential
Se usi una distribuzione Fedora, digita
- sudo yum installa uuid-devel libuuid-devel
Per creare UEFI è necessario il pacchetto Python. Se Python non è già disponibile sul tuo sistema, l'esecuzione dei comandi dalla shell di comando incorporata SoC EDS fornisce la dipendenza Python richiesta.
Ottenere il codice sorgente UEFI
Il codice sorgente UEFI si trova in GitHub. I passaggi seguenti mostrano come ottenere il codice sorgente UEFI.
- Aprire un terminale.
- Clona la sorgente UEFI dagli alberi Git.
- Al termine, passare alla cartella edk2 ed eseguire un checkout Git.
- cd edk2
- git checkout socfpga_udk201905
Il codice sorgente delle piattaforme edk2 si trova in GitHub. Per ottenere il codice sorgente delle piattaforme edk2
- clonare https://github.com/altera-opensource/edk2-platforms-socfpgaedk2-platforms
- cd edk2-piattaforme
- git checkout socfpga_udk201905
Compilazione del codice sorgente UEFI con Linaro Tool Chain
Questa sezione spiega come compilare il codice sorgente UEFI con la toolchain Linaro in un sistema Linux
- Apri un terminale e inserisci il seguente comando:
- CD
- esporta PERCORSO= /\gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin/:$PATH
- esporta CROSS_COMPILE= aarch64-linux-gnu-
- esporta ARCH=arm64
- esporta GCC48_AARCH64_PREFIX=aarch64-linux-gnu-
- Imposta EDK_TOOLS_PATH:
- esporta EDK_TOOLS_PATH=$PWD/edk2/BaseTools
- Imposta PACKAGES_PATH in modo che punti alla posizione dei repository:
- esporta PACCHETTI_PATH= $PWD/edk2:$PWD/edk2-piattaforme/
- Configura l'AREA DI LAVORO:
- esporta AREA DI LAVORO = $PWD
- Configura l'ambiente di compilazione:
- edk2/edksetup.sh
- Costruisci BaseTools (assicurati che gli strumenti Python siano installati):
- make -C edk2/BaseTools
- Compila il bootloader UEFI inserendo il seguente comando:
- build -a AARCH64 -p Platform/Intel/Stratix10/Stratix10SoCPkg.dsc -t GCC48-b DEBUG -y report.log -j build.log -Y PCD -Y LIBRARY -Y FLASH -Y DEPEX -Y BUILD_FLAGS -Y FIXED_ADDRESS
- Il terminale visualizza un messaggio "Build Done" dopo che l'UEFI è stato compilato con successo.
UEFI generato Files
La compilazione del codice sorgente UEFI crea quanto segue files nella cartella /Build/ Stratix10SoCPkg/RELEASE_GCC48:
UEFI generato Files
File | Descrizione |
INTELSTRATIX10_EFI.fd | Questo file è il bootloader UEFI per avviare la shell UEFI e abilitare la funzionalità Ethernet o eseguire un'applicazione UEFI |
Generazione della FIP
FIP è il carico utile che BL2 di ATF carica nella RAM ed esegue. Il FIP contiene il binario per BL31 e bootloader UEFI e un contenitore riconosciuto da BL2.
Per costruire la FIP, segui questi comandi
- esportazione ARCH = ARM64
- esporta CROSS_COMPILE= aarch64-linux-gnu-
- CD
Costruisci la FIP utilizzando il comando seguente
- fare fip BL33= /Build/Stratix10SoCPKG/\DEBUG_GCC48/FV/INTELSTRATIX10_EFI.fd fip PLAT=stratix10
Esecuzione UEFI su hardware Intel Stratix 10
In esecuzione su una scheda fisica con Bootloader ATF e UEFI
Questa sezione descrive come eseguire Secure Monitor su una scheda fisica.
Genera un file .sof file con ATF
- Ottieni un file .sof file dalla directory di installazione $SOCEDS_DEST_ROOT.
- Converti il binario file bl2.bin, generato nella creazione dell'ATF.
- aarch64-linux-gnu-objcopy -I binario -O ihex – \-cambia-indirizzi 0xffe00000 bl2.bin bl2.hex
- Includere il bootloader nel file .sof file come segue:
- quartus_pfg -c -o hps_path=bl2.hex \ghrd_1sx280lu2f50e2vg.sof ghrd_1sx280lu2f50e2vg_hps.sof
Informazioni correlate
- Costruire l'ATF.
Creazione di un'immagine della scheda SD
- Genera bootloader UEFI e FIP come in Creazione del bootloader UEFI e generazione del FIP.
- Costruisci Linux e root file sistema basato sulle istruzioni in Rocketboard.
- Costruisci l'immagine della scheda SD:
- Ottieni lo script make_image python e rendilo eseguibile
- ottenere https://releases.rocketboards.org/release/2019.10/gsrd/tools/make_sdimage.py
- chmod +x make_sdimage.py
- Preparare il contenuto della partizione di grasso:
- mkdir grasso && cd grasso
- cp /linux-socfpga/arch/arm64/boot/Image
- cp /linux-socfpga/arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dtb
- Prepara la radice file contenuto della partizione di sistema:
- mkdir rootfs && cd rootfs
- catrame xf /gsrd-console-image-*.tar.xz
- Crea l'immagine della scheda SD:
- sudo ./make_sdimage.py -f -P fip.bin,num=3,format=raw,dimensione=10M, type=A2 -P rootfs/\ *,num=2,format=ext3,dimensione=1500M -P
- Immagine,socfpga_stratix10_socdk.dtb,num=1,formato=fat32,dimensione=500M -s 2G -n sdimage.img
- Nota: Se hai già un'immagine SD con partizione A2, puoi sostituire la FIP file con il comando seguente:
- sudo dd if =arm-trusted-firmware/build/stratix10/release/fip.bin of=/dev/sdx3
- Compilazione del codice sorgente UEFI con Linaro Tool Chain.
- Creazione del caricatore di avvio UEFI.
Esecuzione del monitoraggio sicuro
- Alimentare la scheda dopo aver inserito la scheda SD.
- Apri il programmatore Quartus e programma la scheda con il file .sof file generato in Generazione di un file .sof File con ATF.
- La scheda si avvia dall'ATF e carica automaticamente il bootloader UEFI per avviare la shell UEFI.
Informazioni correlate
- Genera un file .sof file con ATF.
Debug con DS
Questa sezione descrive come caricare il bootloader ATF e UEFI sulla scheda fisica tramite DS.
- Assicurati di aver installato DS. Avvia Eclipse utilizzando il seguente comando:
- braccia_ide &
- Configura una nuova connessione di debug
- Illustrazione del passo
- Illustrazione del passo
- Una volta completata la configurazione, connettersi alla destinazione.
- Nota: È necessario programmare la scheda con ghrd_1sx280lu2f50e2vg_hps_debug.sof prima di connettersi al target.
- Nella console dei comandi DS, puoi caricare uno script di debug con i seguenti contenuti per scaricare il bootloader ATF e UEFI sulla scheda fisica.
Avvio di Linux
Questa sezione mostra come avviare Linux dopo che UEFI è entrato nella shell UEFI.
Avvio dalla shell UEFI
- Avviare la scheda sulla shell UEFI, come descritto in Esecuzione di Secure Monitor.
- Una volta caricata la shell UEFI, inserisci il seguente comando per avviare Linux:
- Immagine dtb=socfpga_stratix10_socdk.dtb console=ttyS0,115200 root=/dev/mmcb
Nota: Assicurati che l'immagine Linux e il dtb siano archiviati nella scheda SD.
Cronologia delle revisioni del documento per la Guida per l'utente del caricatore di avvio UEFI SoC Intel Stratix 10
Versione del documento | Cambiamenti |
2020.06.19 | Aggiornate le seguenti sezioni:
|
2019.03.28 |
|
2017.06.19 | Versione iniziale. |
Intel Corporation. Tutti i diritti riservati. Intel, il logo Intel e altri marchi Intel sono marchi di Intel Corporation o delle sue filiali. Intel garantisce le prestazioni dei suoi prodotti FPGA e semiconduttori secondo le specifiche attuali in conformità con la garanzia standard Intel, ma si riserva il diritto di apportare modifiche a qualsiasi prodotto e servizio in qualsiasi momento senza preavviso. Intel non si assume alcuna responsabilità derivante dall'applicazione o dall'uso di qualsiasi informazione, prodotto o servizio qui descritto, salvo quanto espressamente concordato per iscritto da Intel. Si consiglia ai clienti Intel di ottenere la versione più recente delle specifiche del dispositivo prima di fare affidamento su qualsiasi informazione pubblicata e prima di effettuare ordini di prodotti o servizi. *Altri nomi e marchi potrebbero essere rivendicati come proprietà di altri.
ID: 683134
Versione: 2020.06.19
Documenti / Risorse
![]() |
Caricatore di avvio UEFI SoC Intel UG-20080 Stratix 10 [pdf] Guida utente Caricatore di avvio UEFI Stratix 20080 SoC UG-10, caricatore di avvio UEFI Stratix 20080 SoC, caricatore di avvio UEFI Stratix 10 SoC, caricatore di avvio UEFI |