Wenn ECC im HPS External Memory Interface (EMIF) in Intel Agilex® 7 SoC-Gerät eingeschaltet ist, generiert die Speicheradresse ECC-Daten für den F2H SDRAM Direktmodus und den F2H CCU-Modus. Daher ist es erforderlich, dass FPGA-zu-HPS-Master die gleiche Speicheradresse mit MPU verwenden, selbst im Direktmodus FPGA-zu-HPS-SDRAM. Andernfalls kann 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-zu-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 den F2H SDRAM Direktmodus und den F2H CCU-Modus verwenden.
Hier ist das Beispiel für 4 GB HPS EMIF in einem Intel Agilex® 7 SoC-Gerät:
In DTS wird der Speicher in zwei Regionen definiert, wie unten gezeigt. Dann müssen FPGA-to-HPS Master und MPU eine Adresse von 0x1080000000 zu 0x10FFFFFFFF verwenden, um auf den 2 GB ~ 4 GB Speicherplatz zuzugreifen.
Speicher {
reg = ,
;
};
Um den Zugriff auf den vollen 4-GB-Speicherplatz mit der oben genannten Alias-Adresse zu ermöglichen, sollten auch die folgenden Register entsprechend eingestellt werden. Sie können diese Register in der uboot-Datei uboot-socfpga\arch\arm\mach-socfpga\spl_agilex.c festlegen
writel(0x100000, 0xF8020110); region0addr_base
writel(0x0, 0xF8020114); region0addr_baseext
Writel(0xFFFFFFFF, 0xF8020118); region0addr_limit (geringere 32 Bit)
writel(0x10, 0xF802011C); region0addr_limitext (obere 32 Bit)
writel(0x1, 0xF8020104); enable_set für Regionen