Wenn der Fehlerkorrekturcode (ECC) im HPS External Memory Interface (EMIF) in Intel® Stratix® 10 SX Gerät eingeschaltet ist, generiert die Speicheradresse ECC-Daten für F2H und F2SDRAM0/1/2 Schnittstellen. FPGA-to-HPS-Master müssen auch bei Verwendung von F2SDRAM0/1/2-Schnittstellen die gleiche Speicheradresse mit MPU verwenden. Andernfalls könnte ein ECC-Fehler ausgelöst werden. Diese Einschränkung gilt nicht, wenn ECC ausgeschaltet wird.
Wenn der FPGA-zu-HPS-Master und MPU-Master Zugriff auf den Speicherplatz unter 2 GB erhalten, wird die Speicheradresse von 0x0000 0000 bis 0x7FFF FFFF verwendet.
Wenn der FPGA-to-HPS-Master und der MPU-Master Zugriff auf den Speicherplatz erhalten, der größer als 2 GB ist, verwendet die MPU die in der DTS-Datei definierte Alias-Adresse, um auf diese Speicheradressen zuzugreifen. Der FPGA-to-HPS-Master muss die gleiche Alias-Adresse anstelle der physischen Adresse für alle F2SDRAM0/1/2-Schnittstellen verwenden.
Hier ist das Beispiel für 4 GB HPS EMIF in einem Intel® Stratix® 10 SX-Gerät:
In DTS wird der Speicher in zwei Regionen definiert, wie unten gezeigt. Dann müssen FPGA-to-HPS Master und MPU die Adresse von 0x1080000000 zu 0x10FFFFFFFF verwenden, um auf den 2 GB ~ 4 GB Speicher zuzugreifen.
Speicher {
reg = <0 0x00000000 0 0x80000000>,
<0x10 0x80000000 0 0x80000000>;
};
Um den Zugriff auf den vollen 4-GB-Speicherplatz mit der oben angegebenen Alias-Adresse zu ermöglichen, sollten auch die folgenden F2SDRAM-Firewall-Register entsprechend eingestellt werden:
#Example, F2SDRAM0 region0 config, kann yconfig sie in der U-Boot-Quelle konfigurieren, d. h. uboot-socfpga\arch\arm\mach-socfpga\spl_s10.c
Writel(0x1000000, 0xF8020210); region0addr_base
writel(0x0, 0xF8020214); region0addr_baseext
writel(0xFFFFFFFF, 0xF8020218); region0addr_limit (geringere 32 Bit)
writel(0x10, 0xF802021C); region0addr_limitext (obere 32 Bit)
writel(0x1, 0xF8020204); enable_set für Regionen