Microchip UG0881 PolarFire SoC FPGA Arranque y configuración
Garantía
Microsemi no ofrece garantía alguna con respecto a la información contenida en este documento o la idoneidad de sus productos y servicios para un propósito en particular, ni Microsemi asume responsabilidad alguna que surja de la aplicación o el uso de cualquier producto o circuito. Los productos vendidos a continuación y cualquier otro producto vendido por Microsemi han sido sujetos a pruebas limitadas y no deben usarse junto con equipos o aplicaciones de misión crítica. Se cree que las especificaciones de rendimiento son confiables, pero no se verifican, y el Comprador debe realizar y completar todas las pruebas de rendimiento y otras pruebas de los productos, solos y junto con, o instalados en, cualquier producto final. El Comprador no se basará en los datos y especificaciones o parámetros de rendimiento proporcionados por Microsemi. Es responsabilidad del Comprador determinar de forma independiente la idoneidad de cualquier producto y probarlo y verificarlo. La información proporcionada por Microsemi a continuación se proporciona "tal cual, dónde está" y con todas las fallas, y todo el riesgo asociado con dicha información es totalmente del Comprador. Microsemi no otorga, explícita o implícitamente, a ninguna de las partes ningún derecho de patente, licencia o cualquier otro derecho de propiedad intelectual, ya sea con respecto a dicha información en sí misma o cualquier cosa descrita en dicha información. La información proporcionada en este documento es propiedad de Microsemi, y Microsemi se reserva el derecho de realizar cambios en la información de este documento o en cualquier producto y servicio en cualquier momento sin previo aviso.
Acerca de Microsemi
Microsemi, una subsidiaria de propiedad absoluta de Microchip Technology Inc. (Nasdaq: MCHP), ofrece una cartera integral de soluciones de sistemas y semiconductores para los mercados aeroespacial y de defensa, comunicaciones, centro de datos e industrial. Los productos incluyen circuitos integrados analógicos de señal mixta de alto rendimiento y resistentes a la radiación, FPGA, SoC y ASIC; productos de administración de energía; dispositivos de temporización y sincronización y soluciones de tiempo preciso, estableciendo el estándar mundial para el tiempo; dispositivos de procesamiento de voz; soluciones de radiofrecuencia; componentes discretos; soluciones empresariales de almacenamiento y comunicación, tecnologías de seguridad y anti-t escalablesamper productos; soluciones de Ethernet; Midspans e IC de alimentación a través de Ethernet; así como capacidades y servicios de diseño personalizados. Obtenga más información en www.microsemi.com.
Arranque y configuración
Los FPGA PolarFire SoC utilizan circuitos de encendido avanzados para garantizar un encendido confiable en el encendido y el reinicio. En el encendido y el reinicio, la secuencia de inicio de PolarFire SoC FPGA sigue el reinicio de encendido (POR), el inicio del dispositivo, la inicialización del diseño, el preinicio del subsistema del microcontrolador (MSS) y el inicio del usuario de MSS. Este documento describe el arranque previo de MSS y el arranque de usuario de MSS. Para obtener información sobre POR, arranque del dispositivo e inicialización del diseño, consulte UG0890: Guía del usuario de encendido y reinicio de PolarFire SoC FPGA.
Para obtener más información sobre las funciones de MSS, consulte UG0880: Guía del usuario de PolarFire SoC MSS.
Secuencia de arranque
La secuencia de arranque comienza cuando se enciende o se reinicia el PolarFire SoC FPGA. Termina cuando el procesador está listo para ejecutar un programa de aplicación. Esta secuencia de arranque se ejecuta a través de varios stages antes de que comience la ejecución de los programas.
Se realiza un conjunto de operaciones durante el proceso de arranque que incluye el reinicio del hardware, la inicialización del periférico, la inicialización de la memoria y la carga de la aplicación definida por el usuario desde la memoria no volátil a la memoria volátil para su ejecución.
La siguiente figura muestra diferentes fases de la secuencia de arranque.
Figura 1 Secuencia de arranque
Prearranque de MSS
Una vez completada con éxito la inicialización del diseño, MSS Pre-boot comienza su ejecución. El MSS se libera de un reinicio después de completar todos los procedimientos de inicio normales. El controlador del sistema gestiona la programación, inicialización y configuración de los dispositivos. MSS Pre-boot no ocurre si el dispositivo programado está configurado para el modo de suspensión del controlador del sistema.
La fase de inicialización previa al inicio de MSS está coordinada por el firmware del controlador del sistema, aunque puede hacer uso del E51 en el MSS Core Complex para realizar ciertas partes de la secuencia previa al inicio.
Los siguientes eventos ocurren durante el prearranque de MSStage:
- Encendido de la memoria no volátil integrada MSS (eNVM)
- Inicialización de la reparación de redundancia asociada a la caché MSS Core Complex L2
- Autenticación del código de inicio del usuario (si la opción de inicio seguro del usuario está habilitada)
- Transferir el MSS operativo al código de arranque del usuario
MSS Core Complex se puede iniciar en uno de los cuatro modos. La siguiente tabla enumera las opciones de prearranque de MSS, que se pueden configurar y programar en el sNVM. El modo de arranque está definido por el parámetro de usuario U_MSS_BOOTMODE[1:0]. Los datos de configuración de arranque adicionales dependen del modo y están definidos por el parámetro de usuario U_MSS_BOOTCFG (consulte la Tabla 3, página 4 y la Tabla 5, página 6).
Tabla 1 • Modos de arranque complejos de MSS Core
U_MSS_BOOTMODE[1:0] | Modo | Descripción |
0 | Arranque inactivo | MSS Core Complex arranca desde la ROM de arranque si MSS no está configurado |
1 | Arranque no seguro | MSS Core Complex se inicia directamente desde la dirección definida por U_MSS_BOOTADDR |
2 | Arranque seguro del usuario | MSS Core Complex arranca desde sNVM |
3 | Arranque seguro de fábrica | MSS Core Complex se inicia utilizando el protocolo de inicio seguro de fábrica |
La opción de arranque se selecciona como parte del flujo de diseño de Libero. Cambiar el modo solo se puede lograr a través de la generación de una nueva programación FPGA file.
Figura 2 • Flujo previo al arranque de MSS
Arranque inactivo
Si el MSS no está configurado (por ej.ample, dispositivo en blanco), luego MSS Core Complex ejecuta un programa de ROM de arranque que mantiene todos los procesadores en un bucle infinito hasta que un depurador se conecta al objetivo. Los registros del vector de arranque mantienen su valor hasta que se reinicia el dispositivo o se programa una nueva configuración de modo de arranque. Para dispositivos configurados, este modo se puede implementar usando el
U_MSS_BOOTMODE=0 opción de arranque en el configurador de Libero.
Nota: En este modo, no se utiliza U_MSS_BOOTCFG.
La siguiente figura muestra el flujo de arranque inactivo.
Figura 3 • Flujo de arranque inactivo
Arranque no seguro
En este modo, MSS Core Complex se ejecuta desde una dirección eNVM especificada sin autenticación. Proporciona la opción de inicio más rápida, pero no hay autenticación de la imagen del código. La dirección se puede especificar configurando U_MSS_BOOTADDR en Libero Configurator. Este modo también se puede usar para arrancar desde cualquier recurso de memoria de FPGA Fabric a través de FIC. Este modo se implementa mediante el
U_MSS_BOOTMODE=1 opción de arranque.
MSS Core Complex se libera del reinicio con los vectores de arranque definidos por U_MSS_BOOTCFG (como se indica en la siguiente tabla).
Tabla 2 • Uso de U_MSS_BOOTCFG en modo de arranque no seguro 1
Desplazamiento (bytes) |
Tamaño (bytes) |
Nombre |
Descripción |
0 | 4 | BOOTVEC0 | Vector de arranque para E51 |
4 | 4 | BOOTVEC1 | Vector de arranque para U540 |
8 | 4 | BOOTVEC2 | Vector de arranque para U541 |
16 | 4 | BOOTVEC3 | Vector de arranque para U542 |
20 | 4 | BOOTVEC4 | Vector de arranque para U543 |
La siguiente figura muestra el flujo de arranque no seguro.
Figura 4 • Flujo de arranque no seguro
Arranque seguro del usuario
Este modo permite al usuario implementar su propio arranque seguro personalizado y el código de arranque seguro del usuario se coloca en la sNVM. La sNVM es una memoria no volátil de 56 KB que se puede proteger mediante la función física no clonable (PUF) integrada. Este método de arranque se considera seguro porque las páginas sNVM marcadas como ROM son inmutables. Al encenderse, el controlador del sistema copia el código de inicio seguro del usuario de sNVM a la memoria integrada de datos (DTIM) del núcleo del monitor E51. E51 comienza a ejecutar el código de arranque seguro del usuario.
Si el tamaño del código de inicio seguro del usuario es mayor que el tamaño del DTIM, el usuario debe dividir el código de inicio en dos stages. El sNVM puede contener los siguientes stage de la secuencia de arranque del usuario, que puede realizar la autenticación de los siguientes arranquestage utilizando el algoritmo de autenticación/descifrado de usuarios.
Si se utilizan páginas autenticadas o cifradas, la misma clave USK (es decir,
U_MSS_BOOT_SNVM_USK) debe usarse para todas las páginas autenticadas/cifradas.
Si la autenticación falla, el MSS Core Complex se puede restablecer y el BOOT_FAIL tamper bandera se puede levantar. Este modo se implementa mediante la opción de arranque U_MSS_BOOTMODE=2.
Tabla 3 • Uso de U_MSS_BOOTCFG en el arranque seguro del usuario
Desplazamiento (bytes) | Tamaño (bytes) | Nombre | Descripción |
0 | 1 | U_MSS_BOOT_SNVM_PAGE | Página de inicio en SNVM |
1 | 3 | RESERVADO | para alineación |
4 | 12 | U_MSS_BOOT_SNVM_USK | Para páginas autenticadas/cifradas |
La siguiente figura muestra el flujo de arranque seguro del usuario.
Figura 5 • Flujo de arranque seguro del usuario
Arranque seguro de fábrica
En este modo, el controlador del sistema lee el certificado de imagen de arranque seguro (SBIC) de eNVM y valida el SBIC. En una validación exitosa, el controlador del sistema copia el código de inicio seguro de fábrica desde su área de memoria privada y segura y lo carga en el DTIM del núcleo del monitor E51. El arranque seguro predeterminado realiza una verificación de firma en la imagen de eNVM mediante SBIC que se almacena en eNVM. Si no se informan errores, se libera el restablecimiento al MSS Core Complex. Si se informan errores, MSS Core Complex se pone en reinicio y BOOT_FAIL tampse iza nuestra bandera. Luego, el controlador del sistema se activa enamper bandera que afirma una señal a la estructura FPGA para la acción del usuario. Este modo se implementa mediante la opción de arranque U_MSS_BOOTMODE=3.
El SBIC contiene la dirección, el tamaño, el hash y la firma del algoritmo de firma digital de curva elíptica (ECDSA) del blob binario protegido. ECDSA ofrece una variante del algoritmo de firma digital que utiliza criptografía de curva elíptica. También contiene el vector de reinicio para cada hardware.
subproceso/núcleo/núcleo del procesador (Hart) en el sistema.
Tabla 4 • Certificado de imagen de arranque seguro (SBIC)
Compensar | Tamaño (bytes) | Valor | Descripción |
0 | 4 | IMAGENDIRECCIÓN | Dirección de UBL en el mapa de memoria MSS |
4 | 4 | IMAGENEN | Tamaño de UBL en bytes |
8 | 4 | BOOTVEC0 | Vector de arranque en UBL para E51 |
12 | 4 | BOOTVEC1 | Vector de arranque en UBL para U540 |
16 | 4 | BOOTVEC2 | Vector de arranque en UBL para U541 |
20 | 4 | BOOTVEC3 | Vector de arranque en UBL para U542 |
24 | 4 | BOOTVEC4 | Vector de arranque en UBL para U543 |
28 | 1 | OPCIONES[7:0] | Opciones SBIC |
28 | 3 | RESERVADO | |
32 | 8 | VERSIÓN | Versión SBIC/Imagen |
40 | 16 | DSN | Enlace de DSN opcional |
56 | 48 | H | Imagen UBL SHA-384 hash |
104 | 104 | CÓDIGOSIG | Firma ECDSA codificada por DER |
Total | 208 | Bytes |
DSN
Si el campo DSN no es cero, se compara con el propio número de serie del dispositivo. Si la comparación falla, entonces boot_fail tampSe establece el indicador er y se aborta la autenticación.
VERSIÓN
Si U_MSS_REVOCATION_ENABLE habilita la revocación de SBIC, se rechaza el SBIC a menos que el valor de VERSION sea mayor o igual que el umbral de revocación.
OPCIÓN DE REVOCACIÓN SBIC
Si la revocación de SBIC está habilitada por U_MSS_REVOCATION_ENABLE y OPTIONS[0] es '1', todas las versiones de SBIC inferiores a VERSION se revocan tras la autenticación completa de SBIC. El umbral de revocación permanece en el nuevo valor hasta que se incrementa nuevamente en un SBIC futuro con OPCIONES[0] = '1' y un campo VERSIÓN más alto. El umbral de revocación solo puede incrementarse utilizando este mecanismo y solo puede restablecerse mediante un flujo de bits.
Cuando el umbral de revocación se actualiza dinámicamente, el umbral se almacena utilizando el esquema de almacenamiento redundante utilizado para los códigos de acceso, de modo que una falla de energía durante el arranque del dispositivo no provoque que falle un arranque posterior del dispositivo. Si falla la actualización del umbral de revocación, se garantiza que el valor del umbral es el nuevo valor o el anterior.
Tabla 5 • Uso de U_MSS_BOOTCFG en modo cargador de arranque de fábrica
Desplazamiento (bytes) |
Tamaño (bytes) |
Nombre |
Descripción |
0 | 4 | U_MSS_SBIC_ADDR | Dirección de SBIC en el espacio de direcciones MSS |
4 | 4 | U_MSS_REVOCATION_ENABLE | Habilitar la revocación de SBIC si no es cero |
La siguiente figura muestra el flujo de arranque seguro de fábrica.
Figura 6 • Flujo de arranque seguro de fábrica
Arranque de usuario de MSS
El arranque del usuario de MSS se lleva a cabo cuando el control se otorga desde el controlador del sistema al MSS Core Complex. Tras un prearranque exitoso de MSS, el controlador del sistema libera el reinicio del MSS Core Complex. MSS se puede iniciar de una de las siguientes maneras:
- Aplicación de metal desnudo
- Aplicación Linux
- AMP Solicitud
Aplicación de metal desnudo
Las aplicaciones completas para PolarFire SoC se pueden desarrollar con la herramienta SoftConsole. Esta herramienta proporciona la salida files en forma de .hex que se puede usar en el flujo de Libero para incluirlo en el flujo de bits de programación file. La misma herramienta se puede usar para depurar las aplicaciones Bare Metal usando JTAG
interfaz.
La siguiente figura muestra la aplicación SoftConsole Bare Metal que tiene cinco harts (núcleos), incluido el núcleo del monitor E51.
Figura 7 • Proyecto SoftConsole
Aplicación Linux
Esta sección describe la secuencia de arranque para Linux que se ejecuta en todos los núcleos U54.
Un proceso de arranque típico consta de tres stages. Los primerostagEl cargador de arranque (FSBL) se ejecuta desde el flash de arranque en chip (eNVM). El FSBL carga el segundo stage cargador de arranque (SSBL) desde un dispositivo de arranque a memoria RAM o caché externa. El dispositivo de arranque puede ser eNVM o microcontrolador de memoria integrada (eMMC) o SPI Flash externo. El SSBL carga el sistema operativo Linux desde el dispositivo de arranque a la RAM externa. en la tercera stage, Linux se ejecuta desde la RAM externa.
La siguiente figura muestra el flujo del proceso de arranque de Linux.
Figura 8 • Flujo típico del proceso de arranque de Linux
Los detalles de FSBL, el árbol de dispositivos, Linux y la compilación YOCTO, cómo compilar y configurar Linux se proporcionarán en la versión futura de este documento.
AMP Solicitud
Se proporcionará una descripción detallada de Libero MSS Configurator y cómo depurar aplicaciones multiprocesador usando SoftConsole en la versión futura de este documento.
Diferentes fuentes de arranque
Se actualizará en futuras versiones de este documento.
Configuración de arranque
Se actualizará en futuras versiones de este documento.
Acrónimos
En este documento se utilizan los siguientes acrónimos.
Tabla 1 • Lista de acrónimos
Acrónimo Ampliado
- AMP Multiprocesamiento asimétrico
- DTIM Memoria de datos estrechamente integrada (también llamada SRAM)
- Sistema de alerta temprana ECDSA Algoritmo de firma digital de curva elíptica
- eNVM Memoria no volátil integrada
- FSBL Primera Stage Cargador de arranque
- Ciervo Hilo de hardware/núcleo/núcleo del procesador
- Manuscrito Subsistema de microprocesador
- POR Encendido Restablecer
- PUF Función físicamente no clonable
- memoria de sólo lectura Memoria de sólo lectura
- SCB Puente del controlador del sistema
- sNVM Memoria segura no volátil
Historial de revisiones
El historial de revisión describe los cambios que se implementaron en el documento. Los cambios se enumeran por revisión, comenzando con la publicación actual.
Revisión 2.0
El siguiente es un resumen de los cambios realizados en esta revisión.
- Se actualizó la información sobre Factory Secure Boot.
- Se actualizó la información sobre la aplicación Bare Metal.
Revisión 1.0
La primera publicación de este documento.
Sede Microsemi
Una Empresa, Aliso Viejo,
CA 92656 EE. UU.
Dentro de los EE.UU.: +1 800-713-4113
Fuera de los EE.UU.: +1 949-380-6100
Ventas: +1 949-380-6136
Fax: +1 949-215-4996
Correo electrónico: ventas.support@microsemi.com
www.microsemi.com
©2020 Microsemi, una subsidiaria de propiedad total de Microchip Technology Inc. Todos los derechos reservados. Microsemi y el logotipo de Microsemi son marcas comerciales registradas de Microsemi Corporation. Todas las demás marcas comerciales y marcas de servicio son propiedad de sus respectivos dueños.
Documentos / Recursos
![]() |
Microchip UG0881 PolarFire SoC FPGA Arranque y configuración [pdf] Guía del usuario UG0881 Arranque y configuración de PolarFire SoC FPGA, UG0881, Arranque y configuración de PolarFire SoC FPGA, Arranque y configuración |