Microsemi-LGOO

Microchip UG0881 Démarrage et configuration du FPGA SoC PolarFire

Produit de démarrage et de configuration Microchip-UG0881-PolarFire-SoC-FPGA

Garantie

Microsemi n'offre aucune garantie, représentation ou garantie concernant les informations contenues dans ce document ou l'adéquation de ses produits et services à un usage particulier, et Microsemi n'assume aucune responsabilité quelle qu'elle soit découlant de l'application ou de l'utilisation de tout produit ou circuit. Les produits vendus ci-dessous et tous les autres produits vendus par Microsemi ont été soumis à des tests limités et ne doivent pas être utilisés avec des équipements ou des applications critiques. Toutes les spécifications de performance sont considérées comme fiables mais ne sont pas vérifiées, et l'Acheteur doit effectuer et compléter tous les tests de performance et autres des produits, seuls et avec, ou installés dans, tout produit final. L'acheteur ne doit pas se fier aux données et spécifications de performance ou paramètres fournis par Microsemi. Il est de la responsabilité de l'Acheteur de déterminer indépendamment l'adéquation de tout produit et de tester et de vérifier celui-ci. Les informations fournies par Microsemi ci-dessous sont fournies "telles quelles, où qu'elles soient" et avec tous les défauts, et l'intégralité du risque associé à ces informations incombe entièrement à l'Acheteur. Microsemi n'accorde, explicitement ou implicitement, à aucune partie des droits de brevet, des licences ou tout autre droit de propriété intellectuelle, que ce soit en ce qui concerne ces informations elles-mêmes ou tout ce qui est décrit par ces informations. Les informations fournies dans ce document sont la propriété de Microsemi, et Microsemi se réserve le droit d'apporter des modifications aux informations contenues dans ce document ou à tout produit et service à tout moment et sans préavis.

À propos de Microsemi

Microsemi, une filiale en propriété exclusive de Microchip Technology Inc. (Nasdaq : MCHP), propose un portefeuille complet de semi-conducteurs et de solutions système pour l'aérospatiale et la défense, les communications, les centres de données et les marchés industriels. Les produits comprennent des circuits intégrés à signaux mixtes analogiques hautes performances et résistants aux rayonnements, des FPGA, des SoC et des ASIC ; produits de gestion de l'alimentation ; dispositifs de chronométrage et de synchronisation et solutions de temps précis, établissant la norme mondiale en matière de temps ; dispositifs de traitement de la voix ; solutions RF ; composants discrets ; solutions de stockage et de communication d'entreprise, technologies de sécurité et anti-tampeuh produits ; Solutions Ethernet ; Circuits intégrés et injecteurs Power-over-Ethernet ; ainsi que des capacités et des services de conception personnalisés. En savoir plus sur www.microsemi.com.

Démarrage et configuration

Les FPGA SoC PolarFire utilisent des circuits de mise sous tension avancés pour garantir une alimentation fiable lors de la mise sous tension et de la réinitialisation. Lors de la mise sous tension et de la réinitialisation, la séquence de démarrage du PolarFire SoC FPGA suit la réinitialisation à la mise sous tension (POR), le démarrage de l'appareil, l'initialisation de la conception, le pré-démarrage du sous-système de microcontrôleur (MSS) et le démarrage de l'utilisateur MSS. Ce document décrit le pré-démarrage MSS et le démarrage utilisateur MSS. Pour plus d'informations sur POR, Device Boot et Design initialization, voir UG0890 : PolarFire SoC FPGA Power-Up and Resets User Guide.
Pour plus d'informations sur les fonctionnalités MSS, consultez UG0880 : PolarFire SoC MSS User Guide.

Séquence de démarrage
La séquence de démarrage commence lorsque le FPGA SoC PolarFire est mis sous tension ou réinitialisé. Il se termine lorsque le processeur est prêt à exécuter un programme d'application. Cette séquence de démarrage s'exécute sur plusieurs stages avant de commencer l'exécution des programmes.
Un ensemble d'opérations est effectué pendant le processus de démarrage qui comprend la réinitialisation du matériel à la mise sous tension, l'initialisation du périphérique, l'initialisation de la mémoire et le chargement de l'application définie par l'utilisateur de la mémoire non volatile vers la mémoire volatile pour exécution.

La figure suivante montre les différentes phases de la séquence de démarrage.

Figure 1  Séquence de démarrageMicrochip-UG0881-PolarFire-SoC-FPGA-Démarrage-et-Configuration-fig 1

Pré-démarrage MSS

Une fois l'initialisation de la conception terminée avec succès, le pré-amorçage MSS démarre son exécution. Le MSS est libéré d'une réinitialisation après l'achèvement de toutes les procédures de démarrage normales. Le contrôleur système gère la programmation, l'initialisation et la configuration des appareils. Le pré-amorçage MSS ne se produit pas si le périphérique programmé est configuré pour le mode de suspension du contrôleur système.
La phase d'initialisation de pré-démarrage MSS est coordonnée par le micrologiciel du contrôleur système, bien qu'il puisse utiliser le E51 dans le MSS Core Complex pour effectuer certaines parties de la séquence de pré-démarrage.
Les événements suivants se produisent pendant les pré-démarrages MSStage:

  • Mise sous tension de la mémoire non volatile intégrée MSS (eNVM)
  • Initialisation de la réparation de redondance associée au cache MSS Core Complex L2
  • Authentification du code de démarrage de l'utilisateur (si l'option de démarrage sécurisé de l'utilisateur est activée)
  • Remise du MSS opérationnel au code de démarrage de l'utilisateur

Le MSS Core Complex peut être démarré dans l'un des quatre modes. Le tableau suivant répertorie les options de pré-démarrage MSS, qui peuvent être configurées et programmées dans la sNVM. Le mode de démarrage est défini par le paramètre utilisateur U_MSS_BOOTMODE[1:0]. Les données de configuration de démarrage supplémentaires dépendent du mode et sont définies par le paramètre utilisateur U_MSS_BOOTCFG (voir Tableau 3, page 4 et Tableau 5, page 6).

Tableau 1 • Modes de démarrage complexes MSS Core

U_MSS_BOOTMODE[1:0] Mode Description
0 Démarrage inactif MSS Core Complex démarre à partir de la ROM de démarrage si MSS n'est pas configuré
1 Démarrage non sécurisé MSS Core Complex démarre directement à partir de l'adresse définie par le U_MSS_BOOTADDR
2 Démarrage sécurisé de l'utilisateur MSS Core Complex démarre à partir de sNVM
3 Démarrage sécurisé en usine MSS Core Complex démarre à l'aide du protocole de démarrage sécurisé d'usine

L'option de démarrage est sélectionnée dans le cadre du flux de conception Libero. Le changement de mode ne peut être réalisé que par la génération d'une nouvelle programmation FPGA file.

Figure 2 • Flux de pré-démarrage MSS Microchip-UG0881-PolarFire-SoC-FPGA-Démarrage-et-Configuration-fig 2

Démarrage inactif

Si le MSS n'est pas configuré (par example, périphérique vide), puis le MSS Core Complex exécute un programme de ROM de démarrage qui maintient tous les processeurs dans une boucle infinie jusqu'à ce qu'un débogueur se connecte à la cible. Les registres du vecteur d'amorçage conservent leur valeur jusqu'à ce que l'appareil soit réinitialisé ou qu'une nouvelle configuration du mode d'amorçage soit programmée. Pour les appareils configurés, ce mode peut être mis en œuvre à l'aide de la
Option de démarrage U_MSS_BOOTMODE=0 dans le configurateur Libero.

Note: Dans ce mode, U_MSS_BOOTCFG n'est pas utilisé.

La figure suivante montre le flux de démarrage inactif.
Figure 3 • Flux de démarrage inactifMicrochip-UG0881-PolarFire-SoC-FPGA-Démarrage-et-Configuration-fig 3

Démarrage non sécurisé

Dans ce mode, le MSS Core Complex s'exécute à partir d'une adresse eNVM spécifiée sans authentification. Il fournit l'option de démarrage la plus rapide, mais il n'y a pas d'authentification de l'image de code. L'adresse peut être spécifiée en définissant U_MSS_BOOTADDR dans le configurateur Libero. Ce mode peut également être utilisé pour démarrer à partir de n'importe quelle ressource mémoire FPGA Fabric via FIC. Ce mode est mis en œuvre à l'aide de la
Option de démarrage U_MSS_BOOTMODE=1.
Le MSS Core Complex est libéré de la réinitialisation avec des vecteurs de démarrage définis par U_MSS_BOOTCFG (comme indiqué dans le tableau suivant).

Tableau 2 • Utilisation de U_MSS_BOOTCFG en mode de démarrage non sécurisé 1

Décalage (octets)  

Taille (octets)

 

Nom

 

Description

0 4 BOOTVEC0 Vecteur de démarrage pour E51
4 4 BOOTVEC1 Vecteur de démarrage pour U540
8 4 BOOTVEC2 Vecteur de démarrage pour U541
16 4 BOOTVEC3 Vecteur de démarrage pour U542
20 4 BOOTVEC4 Vecteur de démarrage pour U543

La figure suivante montre le flux de démarrage non sécurisé.
Figure 4 • Flux de démarrage non sécuriséMicrochip-UG0881-PolarFire-SoC-FPGA-Démarrage-et-Configuration-fig 4

Démarrage sécurisé de l'utilisateur
Ce mode permet à l'utilisateur d'implémenter son propre démarrage sécurisé personnalisé et le code de démarrage sécurisé de l'utilisateur est placé dans la sNVM. La sNVM est une mémoire non volatile de 56 Ko qui peut être protégée par la fonction physique non clonable (PUF) intégrée. Cette méthode de démarrage est considérée comme sécurisée car les pages sNVM marquées comme ROM sont immuables. Lors de la mise sous tension, le contrôleur système copie le code de démarrage sécurisé de l'utilisateur de sNVM vers la mémoire DTIM (Data Tightly Integrated Memory) du cœur du moniteur E51. E51 commence à exécuter le code de démarrage sécurisé de l'utilisateur.
Si la taille du code de démarrage sécurisé de l'utilisateur est supérieure à la taille du DTIM, l'utilisateur doit diviser le code de démarrage en deux stages. Le sNVM peut contenir le prochain stage de la séquence de démarrage de l'utilisateur, qui peut effectuer l'authentification du prochain démarrage stage en utilisant l'algorithme d'authentification/déchiffrement de l'utilisateur.
Si des pages authentifiées ou cryptées sont utilisées, la même clé USK (c'est-à-dire
U_MSS_BOOT_SNVM_USK) doit être utilisé pour toutes les pages authentifiées/cryptées.
Si l'authentification échoue, le MSS Core Complex peut être placé en réinitialisation et le BOOT_FAIL tampLe drapeau peut être hissé. Ce mode est implémenté à l'aide de l'option de démarrage U_MSS_BOOTMODE=2.

Tableau 3 •  Utilisation de U_MSS_BOOTCFG dans le démarrage sécurisé de l'utilisateur

Décalage (octets) Taille (octets) Nom Description
0 1 U_MSS_BOOT_SNVM_PAGE Page de démarrage dans SNVM
1 3 RÉSERVÉ Pour l'alignement
4 12 U_MSS_BOOT_SNVM_USK Pour les pages authentifiées/cryptées

La figure suivante montre le flux de démarrage sécurisé de l'utilisateur.
Figure 5 • Flux de démarrage sécurisé de l'utilisateurMicrochip-UG0881-PolarFire-SoC-FPGA-Démarrage-et-Configuration-fig 5

Démarrage sécurisé en usine
Dans ce mode, le contrôleur système lit le certificat d'image de démarrage sécurisé (SBIC) à partir d'eNVM et valide le SBIC. Une fois la validation réussie, le contrôleur système copie le code de démarrage sécurisé d'usine à partir de sa zone de mémoire privée et sécurisée et le charge dans le DTIM du cœur du moniteur E51. Le démarrage sécurisé par défaut effectue une vérification de signature sur l'image eNVM à l'aide de SBIC qui est stocké dans eNVM. Si aucune erreur n'est signalée, la réinitialisation est effectuée sur le MSS Core Complex. Si des erreurs sont signalées, le MSS Core Complex est mis en réinitialisation et le BOOT_FAIL tample drapeau est levé. Ensuite, le contrôleur de système s'active àamper drapeau qui affirme un signal à la structure FPGA pour l'action de l'utilisateur. Ce mode est implémenté à l'aide de l'option de démarrage U_MSS_BOOTMODE=3.

Le SBIC contient l'adresse, la taille, le hachage et la signature ECDSA (Elliptic Curve Digital Signature Algorithm) du blob binaire protégé. ECDSA propose une variante de l'algorithme de signature numérique qui utilise la cryptographie à courbe elliptique. Il contient également le vecteur de réinitialisation pour chaque matériel
thread/core/core du processeur (Hart) dans le système.

Tableau 4 •  Certificat d'image de démarrage sécurisé (SBIC)

Compenser Taille (octets) Valeur Description
0 4 ADRIMAGE Adresse de l'UBL dans la carte mémoire MSS
4 4 IMAGES Taille de l'UBL en octets
8 4 BOOTVEC0 Vecteur de démarrage dans UBL pour E51
12 4 BOOTVEC1 Vecteur de démarrage dans UBL pour U540
16 4 BOOTVEC2 Vecteur de démarrage dans UBL pour U541
20 4 BOOTVEC3 Vecteur de démarrage dans UBL pour U542
24 4 BOOTVEC4 Vecteur de démarrage dans UBL pour U543
28 1 OPTIONS[7:0] Options SBIC
28 3 RÉSERVÉ  
32 8 VERSION SBIC/Version d'image
40 16 DSN Liaison DSN facultative
56 48 H Hachage SHA-384 de l'image UBL
104 104 CODESIG Signature ECDSA codée DER
Total 208 Octets  

DSN
Si le champ DSN est différent de zéro, il est comparé au propre numéro de série de l'appareil. Si la comparaison échoue, le boot_fail tampL'indicateur er est défini et l'authentification est abandonnée.

VERSION
Si la révocation SBIC est activée par U_MSS_REVOCATION_ENABLE, le SBIC est rejeté sauf si la valeur de VERSION est supérieure ou égale au seuil de révocation.

OPTION DE RÉVOCATION DU SBIC
Si la révocation SBIC est activée par U_MSS_REVOCATION_ENABLE et que OPTIONS[0] est '1', toutes les versions SBIC inférieures à VERSION sont révoquées lors de l'authentification complète du SBIC. Le seuil de révocation reste à la nouvelle valeur jusqu'à ce qu'il augmente à nouveau d'un futur SBIC avec OPTIONS[0] = '1' et un champ VERSION supérieur. Le seuil de révocation ne peut être incrémenté qu'à l'aide de ce mécanisme et ne peut être réinitialisé que par un flux binaire.
Lorsque le seuil de révocation est mis à jour dynamiquement, le seuil est stocké à l'aide du schéma de stockage redondant utilisé pour les codes d'accès de sorte qu'une panne de courant pendant le démarrage de l'appareil n'entraîne pas l'échec d'un démarrage ultérieur de l'appareil. Si la mise à jour du seuil de révocation échoue, il est garanti que la valeur du seuil est soit la nouvelle valeur, soit la précédente.

Tableau 5 • Utilisation de U_MSS_BOOTCFG en mode chargeur de démarrage d'usine

Décalage (octets)  

Taille (octets)

 

Nom

 

Description

0 4 U_MSS_SBIC_ADDR Adresse du SBIC dans l'espace d'adressage MSS
4 4 U_MSS_REVOCATION_ENABLE Activer la révocation SBIC si différent de zéro

La figure suivante montre le flux de démarrage sécurisé en usine.
Figure 6 • Flux de démarrage sécurisé en usineMicrochip-UG0881-PolarFire-SoC-FPGA-Démarrage-et-Configuration-fig 6 Microchip-UG0881-PolarFire-SoC-FPGA-Démarrage-et-Configuration-fig 7

Démarrage utilisateur MSS 

Le démarrage de l'utilisateur MSS a lieu lorsque le contrôle est donné du contrôleur système au MSS Core Complex. Une fois le préamorçage MSS réussi, le contrôleur système libère la réinitialisation du MSS Core Complex. MSS peut être démarré de l'une des manières suivantes :

  • Application sur métal nu
  • Application Linux
  • AMP Application

Application sur métal nu

Les applications bare metal pour le SoC PolarFire peuvent être développées à l'aide de l'outil SoftConsole. Cet outil fournit la sortie files sous la forme de .hex qui peut être utilisé dans le flux Libero à inclure dans le bitstream de programmation file. Le même outil peut être utilisé pour déboguer les applications Bare Metal en utilisant JTAG
interface.
La figure suivante montre l'application SoftConsole Bare Metal qui comporte cinq cœurs (cœurs), dont le cœur du moniteur E51.

Figure 7 • Projet SoftConsole Microchip-UG0881-PolarFire-SoC-FPGA-Démarrage-et-Configuration-fig 8

Application Linux

Cette section décrit la séquence de démarrage pour Linux exécuté sur tous les cœurs U54.
Un processus de démarrage typique se compose de trois stages. Le premier stagLe chargeur de démarrage (FSBL) est exécuté à partir du flash de démarrage sur puce (eNVM). Le FSBL charge le deuxième stage chargeur de démarrage (SSBL) d'un périphérique de démarrage vers une RAM externe ou un cache. Le périphérique de démarrage peut être eNVM ou un microcontrôleur de mémoire intégré (eMMC) ou un flash SPI externe. La SSBL charge le système d'exploitation Linux du périphérique de démarrage vers la RAM externe. Au troisième stage, Linux est exécuté à partir de la RAM externe.

La figure suivante montre le flux du processus de démarrage Linux.
Figure 8 • Flux de processus de démarrage Linux typiqueMicrochip-UG0881-PolarFire-SoC-FPGA-Démarrage-et-Configuration-fig 9

Les détails de FSBL, de l'arborescence des périphériques, de Linux et de la construction de YOCTO, comment construire et configurer Linux seront fournis dans la future version de ce document.

AMP Application
Une description détaillée de Libero MSS Configurator et de la manière de déboguer des applications multiprocesseurs à l'aide de SoftConsole sera fournie dans la future version de ce document.

Différentes sources de démarrage
A mettre à jour dans les futures versions de ce document.

Configuration de lancement
A mettre à jour dans les futures versions de ce document.

Acronymes

Les acronymes suivants sont utilisés dans ce document.

Tableau 1 •  Liste des acronymes

Acronyme développé

  • AMP Multi-traitement asymétrique
  • DTIM Mémoire étroitement intégrée aux données (également appelée SRAM)
  • ECDSA Algorithme de signature numérique à courbe elliptique
  • eNVM mémoire non volatile intégrée
  • FSBL Premier Stage chargeur de démarrage
  • Cerf Thread matériel/cœur/cœur du processeur
  • MSS Sous-système de microprocesseur
  • PAR Mise sous tension Réinitialiser
  • PUF Fonction physiquement inclonable
  • ROM Mémoire en lecture seule
  • SCB Pont du contrôleur système
  • SNVM Mémoire non volatile sécurisée

Historique des révisions

L'historique des révisions décrit les modifications qui ont été implémentées dans le document. Les modifications sont répertoriées par révision, en commençant par la publication actuelle.

Révision 2.0
Voici un résumé des modifications apportées à cette révision.

  • Les informations sur Factory Secure Boot ont été mises à jour.
  • Les informations sur l'application Bare Metal ont été mises à jour.

Révision 1.0
La première publication de ce document.

Siège social de Microsemi
Une entreprise, Aliso Viejo,
CA 92656 États-Unis
Aux États-Unis : +1 800-713-4113
En dehors des États-Unis : +1 949-380-6100
Ventes: +1 949-380-6136
Fax: +1 949-215-4996
E-mail: sales.support@microsemi.com
www.microsemi.com

©2020 Microsemi, une filiale en propriété exclusive de Microchip Technology Inc. Tous droits réservés. Microsemi et le logo Microsemi sont des marques déposées de Microsemi Corporation. Toutes les autres marques commerciales et marques de service sont la propriété de leurs propriétaires respectifs.

Documents / Ressources

Microchip UG0881 Démarrage et configuration du FPGA SoC PolarFire [pdf] Guide de l'utilisateur
UG0881 Démarrage et configuration du FPGA SoC PolarFire, UG0881, Démarrage et configuration du FPGA SoC PolarFire, Démarrage et configuration

Références

Laisser un commentaire

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués *