ID de l'article: 000086179 Type de contenu: Information et documentation de produit Dernière révision: 26/07/2018

Comment configurer mon système SoC pour obtenir des accès cohérents au cache de la logique logicielle FPGA à la mémoire HPS ?

Environnement

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descriptif

Pour permettre des accès cohérents au cache de FPGA logique souple au nombre d’éléments de mémoire HPS doit être en place :

  • Tableaux de page MMU
  • Paramètres de sécurité NOC
  • Configuration du contrôleur de cache CoreLink™ niveau 2 L2C-310
  • Signaux latéraux AXI : pont Axi_cache_security
    • AxCœur et AxUser
    • AXPROT

Tableaux de page MMU

Les tableaux de page MMU doivent être configurés de manière à définir la zone de mémoire cible cacheable, sûre ou non.   Reportez-vous à la documentation Linux et ARM pour plus de détails sur les attributs d’allocation de la page MMU et le mode sécurisé (zone de confiance).

  • La mémoire doit être marquée comme l’allocation d’écriture en arrière (WBWA).
  • Pour que la mémoire soit accessible depuis une application de l’espace utilisateur Linux ou un noyau, le mode de sécurité doit être non sécurisé.
  • Secure doit être utilisé pour qu’une mémoire soit accessible par un processus fonctionnant dans l’état sécurisé ARM (à ne pas confondre avec le mode superviseur).

Le mode sécurisé est activé si CP15 : SDR:NS = 1.   Remarque : le registre NS ne sera disponible qu’en mode superviseur.

 

Paramètres de sécurité NOC

Le réseau SoC Arria® 10 sur puce iinterconnect (NOC) est configurable avec des pare-feu sur chaque pont et dans l’ensemble de l’interconnexion.   Pour permettre des accès via les ponts HPS

  • Les pare-feu doivent être configurés pour permettre les transactions à travers le pont
  • Les commandes maître doivent être définies pour autoriser/refuser les accès sécurisés
  • Si un maître est configuré pour refuser les accès sécurisés, toutes les transactions seront modifiées dans un état non sécurisé, ce qui peut briser la coherence.

Le U-boot généré à partir de la version 16.0 du logiciel SoC EDS et des versions ultérieures désactive les pare-feu NOC, mais définit le maître pour refuser l’accès sécurisé.

Pour sécuriser l’accès via le pont FPGA2HPA :

Définissez l’fpga2soc_ctrl de registre : allow_secure à 1 (par défaut = 0, ne permettent pas de sécuriser)

 

Configuration du contrôleur de cache de niveau 2

Configuration du contrôleur de cache CoreLink™ niveau 2 L2C-310

Il est recommandé que le bit de registre Aux Control [22] : le bit d’activation de la substitution d’attribut partagé soit réglé sur ACTIVÉ.    Ce paramètre désactive les optimisations du contrôleur de cache L2 qui transforment certains accès non cacheables des cœurs MPU ou du port ACP en accès non alloués au cache, et déplace le point de coherence de la mémoire SDRAM vers le cache L2.     La modification du point de coherency peut entraîner des problèmes si les maîtres accèdent à la mémoire SDRAM via L3 ou le pont FPGA2SDRAM.

Référence : CoreLink™ contrôleur de cache de niveau 2 L2C-310, Révision : manuel de référence technique r3p3 (ARM DDI 0246H (ID080112) ) : section 2.3.2 Attributs partagés.

Ce qui précède est défini par défaut dans les dernières versions u-boot-socfpga disponibles auprès de https://github.com/altera-opensource/u-boot-socfpga

 

Conduite des signaux latéraux AXI de Qsys : pont Axi_cache_security

Le pont Axi_cache_security doit être utilisé pour piloter les signaux latéraux AxCœur/AxUser/AxProt vers les valeurs correctes.  Le pont Axi_cache_security se trouve dans l’exemple Arria pont 10 https://www.altera.com/support/support-resources/design-examples.html

 

Signaux latéraux AxCœux[3:0]

Le paramètre AxC alors correct [3:0] dépend des paramètres du tableau de la page MMU.

Voir les manuels de référence de l’architecture ARM® ARMv7-A et ARMv7-R (ARM DDI 0406C.c (ID051414) : types et attributs de la mémoire A3.5 et le modèle d’ordre de mémoire AxChole[1] doit être 1 pour des accès cohérents.

Référence : Révision MPCore® cortex™-A9 : manuel de référence technique r3p0 (ARM DDI 0407G (ID072711)) : port de coherency de l’accélérateur 2.4

AW®CACHE[3:0]

[3] - Écrire allocable

[2] - Lecture allocable

[1] - Cacheable

[0] - Tampon tampon

Valeur initiale suggérée pour AW®CACHE[3:0]

awc≥ = 0xF ; Allocation d’écriture 4'b1111, allocation de lecture, tampon, cacheable

arc≥ = 0xF ; Allocation d’écriture 4'b1111, allocation de lecture, tampon, cacheable

Remarque : ces paramètres doivent être modifiés en fonction du cas d’utilisation

 

Signaux latéraux AxUser[4-0]

Les signaux AxUser sont utilisés pour transmettre des informations supplémentaires et, pour les transactions ACP, ils sont utilisés pour transmettre des informations intérieures et externes cacheables.

Utilisateur AW®[3:0]

[0] - L’attribut partagé doit être défini sur 1 pour des accès cohérents

[3:1] - Pas interprété par le SCU comme le ACP n’a pas de stratégie de cache intérieure, et sont transmis au contrôleur de cache L2 pour une utilisation si le cache est configuré en mode exclusif.

Références : Cortex™-A9 MPCore® Révision : manuel de référence technique r3p0 (ARM DDI 0407G (ID072711)) : port de coherency de l’accélérateur 2.4,

Valeur initiale suggérée pour AxUSER[4:0]

awuser = 0x1 ; 5'b00001

aruser = 0x1 ; 5'b00001

Remarque : sur Arria 10, l’attribut partagé AXI est lié en interne à « 1 ».

 

Signaux latéraux AxProt[2:0]

AxProt spécifie l’état sécurisé de la transaction et doit correspondre à l’état de sécurité de la mémoire cible pour s’assurer qu’un cache est touché.

AW®PROT[2:0]

[2] - récupération des instructions

[1] - Accès non sécurisé

[0] - Accès privilégié

 

Valeur initiale suggérée pour AxProt[2:0]

Le paramètre de sécurité de la mémoire de la page MMU, le paramètre de sécurité sécurisé du processeur et l’état sécurisé des transactions ACP doivent tous correspondre pour s’assurer que le cache est touché.

Une transaction ACP non sécurisée vers un emplacement de mémoire sécurisé accessible par un processeur dans un état sécurisé entraîne une erreur de cache et un accès cohérent.

 

 

Résumé des scénarios pris en charge :

Non sécurisé

  • La table de page MMU est configurée pour définir la zone de mémoire cible comme non sécurisée
  • Les pare-feu NOC sont configurés de manière à ne pas sécuriser l’accès à la zone cible.
  • Le pont F2H assure des accès sécurisés ou non à la zone cible

Sécurisé

  • La table de page MMU est configurée pour définir la zone de mémoire cible comme sûre
  • Les pare-feu NOC sont configurés pour permettre un accès sécurisé à la zone cible
  • Le pont F2H assure un accès sécurisé à la zone cible.

Produits associés

Cet article concerne 1 produits

FPGA SoC Intel® Arria® 10 GX

Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c'est la version anglaise qui prévaut. Afficher la version anglaise de cette page.