Cargador de arranque SoC
Las FPGA de Intel® SoC utilizan un gestor de arranque para cargar y ejecutar la aplicación de usuario final en el sistema de procesador duro (HPS). La aplicación de usuario final puede ser una aplicación simple o un sistema operativo complejo como el sistema operativo Linux*.
Esta página describe qué es un gestor de arranque, enumera los cargadores de arranque disponibles y sus características principales, describe cómo comenzar con los cargadores de arranque y enumera los recursos adicionales.
1. Qué es un gestor de arranque
Definición del gestor de arranque
Cuando se inicia un dispositivo SoC, primero se ejecuta una pieza de software llamada BootROM. Por varias razones, el BootROM tiene la siguiente funcionalidad limitada:
- Debe caber en la ROM en chip, por lo que tiene que ser pequeño
- Es muy caro de cambiar por lo que tiene que ser muy robusto, lo que implica menos características
- No sabe cómo se configuró el sistema, por lo que no puede sacar todo
La aplicación del usuario final, por otro lado, suele ser grande y requiere que el sistema se configure según lo desee el usuario final antes de que pueda ejecutarse.
El trabajo del gestor de arranque es cerrar la brecha entre bootROM y la aplicación del usuario final.
Las tareas típicas del gestor de arranque incluyen:
- Configuración de la multiplexación de pines y los ajustes de pines, como la velocidad de slew, el voltaje y el pull-up/pull-down
- Configuración de los relojes en el árbol de relojes
- Introducción y calibración de la SDRAM
- Inicialización de la memoria flash
- Carga de la aplicación final desde la memoria flash
- Pasar el control a la aplicación final
Además de las características enumeradas anteriormente, los gestores de arranque también ofrecen las siguientes características avanzadas que pueden permitir una implementación más compleja y un desarrollo más conveniente:
- Acceso a la red que trae la aplicación del usuario final desde la nube.
- Herramientas de depuración que permiten un diagnóstico más conveniente de los problemas.
- Interfaz de línea de comandos para comandos interactivos.
- Aplicación que ejecuta un marco que puede permitir que el gestor de arranque cargue y ejecute aplicaciones de usuario final simples hasta su finalización. Una vez completada la aplicación, el control se devuelve al gestor de arranque.
Gestores de arranque multiestatal
A veces, el proceso del gestor de arranque se puede dividir en varias etapas, generalmente dos.
Para los SoC Cyclone® V, el BootROM solo puede cargar un cargador de arranque de hasta 64 KB de tamaño porque la SDRAM aún no se ha introducido en esa etapa. Debido a la limitación de tamaño, no se pueden lograr características avanzadas como redes o acceso complejo al sistema de archivos. Si se desean tales características, la primera etapa del gestor de arranque abre la SDRAM y luego carga una segunda etapa con más funcionalidad. Un gestor de arranque de dos etapas es la opción predeterminada para los SoC Cyclone V y los SoC Arria® V.
Los SoC Intel® Arria® 10 tienen un tamaño de RAM más grande. Con 256 KB de RAM en chip, la primera etapa del gestor de arranque puede tener más funcionalidad que los SoC Cyclone V y Arria V. Debido a eso, generalmente solo se requiere una etapa. Sin embargo, para casos aún más complejos, como el acceso a varios tipos de flash, sistemas de archivos complejos y redes, el usuario es libre de usar una etapa adicional del gestor de arranque.
Para los SoC Intel® Stratix® 10, normalmente se utiliza un gestor de arranque de dos etapas. La primera etapa del gestor de arranque pequeño es parte del flujo de configuración de FPGA y es cargada por un administrador de dispositivos seguro (SDM) en la RAM en chip de HPS, mientras que la segunda etapa del cargador de arranque más grande se puede almacenar en cualquier lugar al que el HPS tenga acceso.
2. Transferencia de hardware
Descripción general de la entrega
Todos los proyectos de Intel SoC FPGA comienzan con un proyecto de hardware en el que el usuario introduce varias configuraciones del sistema que afectan al HPS. Estos incluyen:
- Multiplexación de pines
- Configuración de pines
- Configuración de SDRAM
- Configuración del reloj
Es el trabajo del gestor de arranque aplicar estas configuraciones y el proceso del gestor de arranque que recibe estas configuraciones se denomina transferencia de hardware a software.
Dependiendo del gestor de arranque exacto y la familia de dispositivos SoC, la transferencia puede tomar varias formas. Típicamente:
- Para los SoC Cyclone V y Arria V, la transferencia es una combinación de archivos XML, archivos binarios y archivos de código fuente, que se convierten en código fuente y luego se compilan en el precargador.
- Para los SoC Intel Arria 10, la transferencia está contenida en un único archivo XML que se convierte en un archivo de árbol de dispositivos y es utilizado por el gestor de arranque
- Para los SoC Intel Stratix 10, la información de transferencia es parte del flujo de bits de configuración de FPGA
El método principal para ingresar o cambiar la información de transferencia es editarla en Qsys.
Además de la información de transferencia, los cargadores de arranque también tienen varias configuraciones que el usuario puede seleccionar a través de los siguientes métodos:
- Cambio de la configuración en el editor BSP
- Edición del código fuente del gestor de arranque
- Edición del árbol de dispositivos del gestor de arranque cuando un árbol de dispositivos está en uso
Cyclone V Soc y Arria V SoC Handoff

Transferencia de SoC Intel Arria 10

Transferencia de SoC Intel Stratix 10

3. Cargadores de arranque disponibles
Descripción general de los gestores de arranque disponibles
En la tabla siguiente se enumeran los gestores de arranque disponibles, los tipos de licencias, los SoC compatibles y la disponibilidad de compatibilidad con dos etapas:
Bootloader |
Tipo de licencia |
Ciclón V SoC |
Arria V SoC |
Intel Arria 10 SoC |
Intel Stratix 10 SoC |
Soporte en dos etapas |
---|---|---|---|---|---|---|
U-Boot |
GPL |
Sí |
Sí |
Sí |
Sí |
Sí |
MPL |
BSD |
Sí |
Sí |
Sí |
- |
- |
UEFI |
BSD |
- |
- |
Sí |
Sí |
Sí |
ATF |
BSD |
- |
- |
- |
Sí |
- |
U-Boot
U-Boot es un gestor de arranque que es ampliamente utilizado por la industria y ofrece numerosas capacidades:
- Primera etapa opcional llamada "SPL" para sistemas con RAM en chip limitada (por ejemplo, Cyclone V SoC y Arria V SoC)
- Capacidad de red
- Compatibilidad con memoria flash
- Interfaz de línea de comandos
- Scripting
- Aplicaciones personalizadas de U-Boot
U-Boot se desarrolla bajo una licencia pública general (GPL), por lo que cualquier contribución que se realice a un producto que se entregue al público también debe hacerse pública.
El código fuente de U-Boot está disponible en la página fpga de U-Boot SoC en el sitio web de GitHub.
Para el SoC Intel Arria 10, arria V SoC y Cyclone V SoC, el código fuente U-Boot se incluye con Intel SoC FPGA Embedded Development Suite (SoC EDS), lo que facilita un proceso de desarrollo simple y conveniente.
Tenga en cuenta que el soporte para Cyclone V y Arria V SoCs se basó en el árbol git oficial de U-Boot en el sitio web de GitHub. Se está trabajando para también el soporte de línea principal para los SoC Intel Arria 10.
La página principal genérica de U-Boot se encuentra en Das U-Boot, la página web de Universal Boot Loader.
MPL
El precargador mínimo (MPL) es un cargador de arranque desarrollado utilizando las bibliotecas de abstracción de hardware bare-metal (HWLIBs) de Intel SoC FPGA. Es un gestor de arranque de una sola etapa diseñado para una huella mínima.
El MPL está disponible para los siguientes dispositivos:
- Ciclón V SoC
- Arria V SoC
- Intel Arria 10 SoC
El MPL se ofrece con una licencia de Berkeley Software Distribution (BSD), que permite un desarrollo e implementación más convenientes.
El MPL se entrega como parte del SoC EDS y es un archivo de proyecto en la carpeta de instalación deSoC EDS de <>/embedded/examples/software/Intel® archivo FPGA-SoCFPGA-HardwareLib-MPL.tar.gz. El archivo contiene un archivo denominado README.txt, que contiene descripciones detalladas de MPL e información de uso.
UEFI
La interfaz de firmware extensible unificada (UEFI) es una especificación de firmware estandarizada que simplifica la inicialización de la plataforma y el arranque del firmware.
El gestor de arranque UEFI está disponible para los siguientes dispositivos:
- Intel Arria 10 SoC
- Intel Stratix 10 SoC
Debido a que la UEFI está muy bien especificada y es utilizada por cientos de empresas de tecnología, gran parte del código se puede reutilizar, lo que permite ciclos de desarrollo más rápidos.
La UEFI implementada en las FPGA de Intel SoC comprende dos etapas diferentes:
- Fase de inicialización pre-Efi (PEI). Esta etapa configura la plataforma y carga la aplicación del usuario final o DXE.
- Driver eXecution Environment (DXE). Esta etapa carga controladores UEFI adicionales y permite capacidades más extendidas, como redes e interfaz de línea de comandos.
El gestor de arranque UEFI también ofrece la capacidad de ejecutar aplicaciones especiales destinadas al entorno DXE. Dichas aplicaciones se pueden ejecutar a partir de la salida, el control regresa al DXE.
UEFI se ofrece con una licencia BSD, que permite un desarrollo e implementación más convenientes.
El código fuente de UEFI está disponible en la página UEFI SoC FPGA en el sitio web de GitHub.
Para los SoC Intel Arria 10, el UEFI también se entrega con SoC EDS que permite el mismo flujo de desarrollo que U-Boot.
ATF
El ARM Trusted Firmware (ATF) es una implementación de referencia de software de mundo seguro para ARMv8-a, implementando varios estándares de interfaz ARM, como Trusted Board Boot Requirements (TBBR) y Secure Monitor call.
El ATF se desarrolla en colaboración bajo una licencia BSD, lo que permite un desarrollo e implementación convenientes.
El ATF tiene una huella pequeña y está diseñado como un cargador de arranque de primera etapa (FSBL). Se utiliza con UEFI para cargar el PXE y luego DXE, pero también se puede usar, por ejemplo, para cargar una aplicación simple de metal desnudo.
Se puede acceder al código fuente del puerto Intel SoC FPGA de ATF en https://github.com/Intel FPGA-opensource/arm-trusted-firmware.
4. Primeros pasos
Introducción a U-Boot
Los siguientes recursos están disponibles para que pueda comenzar con U-Boot:
- Generación y compilación del precargador Cyclone V
- Generación y compilación de Arria 10 U-Boot
Introducción a MPL
El MPL se entrega como parte del SoC EDS y es un archivo de proyecto en el archivo <Carpeta de instalación de SoC EDS>/embedded/examples/software/Intel FPGA-SoCFPGA-HardwareLib-MPL.tar.gz. El archivo contiene un archivo denominado README.txt con información de uso detallada para los SoC Intel Arria 10, los SoC Arria V y los SoC Cyclone V.
Introducción a UEFI
Los siguientes recursos están disponibles para que pueda comenzar con UEFI:
- Introducción a Intel Arria 10 SoC UEFI
- Guía del usuario de Intel Arria 10 SoC UEFI Boot Loader
- Guía del usuario de Intel Stratix 10 SoC UEFI Boot Loader
5. Recursos
Guías de usuario
Las siguientes guías de usuario están disponibles:
Código fuente
El código fuente se puede obtener de los siguientes sitios web:
- Intel SoC FPGA U-Boot en GitHub
- Código fuente oficial de Denx U-Boot
- Intel SoC FPGA UEFI en GitHub
- Firmware de confianza de ARM en GitHub
- SoC EDS para el código fuente Cyclone V, Arrial V y Arria 10 U-Boot y el código fuente Arria 10 UEFI. El código fuente se genera ejecutando la herramienta bsp-editor. Consulte más detalles en la Guía del usuario de SoC EDS,capítulo "Guía del usuario de herramientas de arranque".
- Código fuente de SoC EDS for S10 SoC U-Boot, en <Carpeta de instalación de SoC EDS>/embedded/host_tools/Intel FPGA/bootloaders/stratix10/u-boot/uboot-socfpga.tar.gz archivo.
- Código fuente de SoC EDS para MPL, ubicado en el archivo <Carpeta de instalación de SoC EDS>/embedded/examples/software/Intel FPGA-SoCFPGA-HardwareLib-MPL.tar.gz.
El contenido de esta página es una combinación de traducción humana e informática del contenido original en inglés. Este contenido se ofrece únicamente para su conveniencia y como información general, y no debe considerarse como completo o preciso. Si existe alguna contradicción entre la versión en inglés de esta página y la traducción, la versión en inglés será la que sirva de referencia. Consulte la versión en inglés de esta página.