Um cache-kohärente Zugriffe von FPGA Soft-Logik bis hin zu HPS-Speicher zu ermöglichen, müssen folgende Elemente vorhanden sein:
- MMU-Seitentabellen
- NOC-Sicherheitseinstellungen
- CoreLink™ Level 2 Cache Controller L2C-310 Konfiguration
- AXI-Sideband-Signale: Axi_cache_security Bridge
- AxCache und AxUser
- AXPROT
MMU-Seitentabellen
Die MMU-Seitentabellen müssen so eingerichtet sein, dass der zwischengespeicherte Zielspeicherbereich definiert und entweder sicher oder nicht sicher ist. Weitere Einzelheiten zu den Zuordnungsattributen der MMU-Seitentabelle und zum Secure Mode (Trust Zone) finden Sie in der Dokumentation zu Linux und ARM.
- Der Speicher muss als Write Back Write Allocate (WBWA) markiert werden.
- Damit auf den Speicher von einer Linux-Benutzerspeicher-Anwendung oder aus dem Kernel zugegriffen werden kann, sollte der Sicherheitsmodus nicht sicher sein.
- Secure sollte verwendet werden, damit auf den Speicher von einem Prozess im ARM Secure-Zustand zugegriffen werden kann (nicht zu verwechseln mit dem Supervisor-Modus).
Der Sichere Modus ist aktiviert, wenn CP15: SDR:NS = 1 ist. Hinweis: Das NS-Register ist nur im Supervisor-Modus verfügbar.
NOC-Sicherheitseinstellungen
Das Arria® 10 SoC Network on Chip iinterconnect (NOC) ist mit Firewalls auf jeder Bridge und während der Verbindung konfigurierbar. So ermöglichen Sie Zugriffe über die HPS-Bridges
- Die Firewalls müssen so konfiguriert sein, dass sie Transaktionen über die Bridge zulassen.
- Die Master-Steuerelemente müssen so eingestellt sein, dass sichere Zugriffe ermöglicht/ausgeschlossen werden.
- Wenn ein Master sicheren Zugriff nicht erlaubt, wird jede Transaktion in einen nicht sicheren Zustand geändert, was die Gleichzeitigkeit durchbrechen kann.
Der von der SoC EDS-Software Version 16.0 und neuer generierte U-Boot deaktiviert NOC-Firewalls, setzt aber den Master dafür, sicheren Zugriff zu verhindern.
So ermöglichen Sie sicheren Zugriff über die FPGA2HPA-Bridge:
Register-fpga2soc_ctrl festlegen: allow_secure auf 1 (Standard = 0, nicht sicher zulassen)
Level-2-Cache-Controller-Konfiguration
CoreLink™ Level 2 Cache Controller L2C-310 Konfiguration
Es wird empfohlen, dass das Aux-Control-Register-Bit [22]: Aktivierungsbit für freigegebene Attribute auf ON gesetzt ist. Diese Einstellung deaktiviert Optimierungen im L2-Cache-Controller, die einige nicht cachefähige Zugriffe von den MPU-Kernen oder dem ACP-Port in cacheable nicht zugewiesene Zugriffe transformieren und den Punkt der Kooperation vom SDRAM in den L2-Cache verschieben. Die Änderung des Punkts der Kooperation kann Probleme verursachen, wenn Master über L3 oder die FPGA2SDRAM-Bridge auf den SDRAM zugreifen.
Referenz: CoreLink™ Level 2 Cache Controller L2C-310, Revision: r3p3 Technical Reference Manual (ARM DDI 0246H (ID080112)): Abschnitt 2.3.2 Shareable-Attribut.
Die oben genannten Optionen sind in den neuesten u-boot-socfpga-Versionen von https://github.com/altera-opensource/u-boot-socfpga
Antrieb von AXI-Seitenbandsignalen von Qsys: Axi_cache_security Bridge
Die Axi_cache_security Bridge sollte verwendet werden, um AxCache/AxUser/AxProt Sideband-Signale auf die richtigen Werte zu steuern. Die Axi_cache_security Bridge finden Sie im Beispiel Arria 10 Bridge https://www.altera.com/support/support-resources/design-examples.h tml
AxCache[3:0] Sideband-Signale
Die korrekte Einstellung AxCache [3:0] hängt von den Einstellungen der MMU-Seite ab.
Siehe ARM® Architecture Reference Manual ARMv7-A und ARMv7-R edition (ARM DDI 0406C.c (ID051414) ): A3.5 Speichertypen und -attribute, und das Speicherreihenfolgemodell AxCache[1] muss für kohärente Zugriffe 1 sein.
Referenz: Cortex-A9™ MPCore® Revision: r3p0 Technical Reference Manual (ARM DDI 0407G (ID072711)): 2.4 Accelerator Coherency Port
AW®CACHE[3:0]
[3] - Zuteilung von Schreibzugriffen
[2] - Zuteilung lesen
[1] – Cache-fähig
[0] – Gepuffert
Vorgeschlagener Ausgangswert für AW®CACHE[3:0]
awcache = 0xF; 4'b1111 Write Allocate, Read Allocate, Bufferable, Cacheable
arcache = 0xF; 4'b1111 Write Allocate, Read Allocate, Bufferable, Cacheable
Hinweis: Diese Einstellung sollte je nach Anwendungsfall geändert werden
AxUser[4-0] Sideband-Signale
Die AxUser-Signale werden verwendet, um zusätzliche Informationen zu übertragen, und für ACP-Transaktionen werden sie verwendet, um interne und äußere cacheable Informationen zu übertragen.
AW®Benutzer[3:0]
[0] – Für kohärente Zugriffe muss das freigegebene Attribut auf 1 gesetzt sein
[3:1] - Wird von der SCU nicht interpretiert, da die ACP keine Inner-Cache-Richtlinie hat und zur Verwendung an den L2-Cache-Controller weitergegeben werden, wenn der Cache im exklusiven Modus eingerichtet ist.
Referenzen: Cortex-A9™ MPCore® Revision: r3p0 Technical Reference Manual (ARM DDI 0407G (ID072711)): 2.4 Accelerator Coherency Port,
Empfohlener Ausgangswert für AxUSER[4:0]
awuser = 0x1; 5'b00001
aruser = 0x1; 5'b00001
Hinweis: Auf Arria 10 ist das freigegebene AXI-Attribut intern mit "1" verknüpft.
AxProt[2:0] Sideband-Signale
AxProt gibt den sicheren Status der Transaktion an und muss dem Sicherheitsstatus des Zielspeichers entsprechen, um einen Cache-Treffer zu gewährleisten.
AW®PROT[2:0]
[2] – Befehlsabruf
[1] – nicht sicherer Zugriff
[0] – Privilegierter Zugriff
Empfohlener Anfangswert für AxProt[2:0]
Die Sicherheitseinstellung des MMU-Seitentabellenspeichers und die CPU-sichere Einstellung und der ACP-Transaktionssicherheitsstatus müssen alle übereinstimmen, um den Cache-Treffer zu gewährleisten.
Eine nicht sichere ACP-Transaktion zu einem sicheren Speicherspeicherort, auf den eine CPU in einem sicheren Zustand zugreift, führt zu einem Cache-Fehler und einem in kohärenten Zugriff.
Zusammenfassung der unterstützten Szenarien:
Nicht sicher
- Die MMU-Seitentabelle ist so eingerichtet, dass der Zielspeicherbereich als nicht sicher definiert wird
- Die NOC-Firewalls sind so eingerichtet, dass sie einen nicht sicheren Zugriff auf den Zielbereich ermöglichen.
- Die F2H-Bridge führt sichere oder nicht sichere Zugriffe zum Zielbereich durch.
Sichere
- Die MMU-Seitentabelle ist eingerichtet, um den Zielspeicherbereich als sicher zu definieren.
- Die NOC-Firewalls sind so eingerichtet, dass sie einen sicheren Zugriff auf den Zielbereich ermöglichen.
- Die F2H-Bridge führt einen sicheren Zugang zum Zielbereich durch.