Cuando se activa el código de corrección de errores (ECC) en la interfaz de memoria externa (EMIF) de HPS en Intel® Stratix® dispositivo de 10 SX, la dirección de memoria genera datos ECC para las interfaces F2H y F2SDRAM0/1/2. los maestros FPGA a HPS deben utilizar la misma dirección de memoria con MPU incluso cuando se utilizan interfaces F2SDRAM0/1/2. De lo contrario, podría desencadenarse un error de ECC. Esta restricción no se aplica cuando el ECC está desactivado.
Cuando el maestro FPGA a HPS y el maestro MPU obtienen acceso al espacio de memoria inferior a 2 GB, la dirección de memoria se utiliza desde 0x0000 0000 hasta 0x7FFF FFFF.
Cuando el maestro FPGA a HPS y el maestro MPU obtienen acceso al espacio de memoria mayor que 2 GB, MPU utiliza la dirección de alias definida en el archivo DTS para acceder a estas direcciones de memoria. El maestro FPGA a HPS debe utilizar la misma dirección de alias en lugar de la dirección física para todas las interfaces F2SDRAM0/1/2.
Este es el ejemplo de HPS EMIF de 4 GB en un dispositivo Intel® Stratix® 10 SX:
En DTS, la memoria se define en dos regiones, como se muestra a continuación. A continuación, FPGA-to-HPS master y MPU deben usar la dirección de 0x1080000000 a 0x10FFFFFFFF para acceder al espacio de memoria de 2 GB ~ 4 GB.
memoria {
reg = <0 0x00000000 0 0x80000000>,
0x80000000> <0x10 0x80000000 0;
};
Para habilitar el acceso al espacio de memoria de 4 GB completo con la dirección de alias que se muestra anteriormente, también se deben establecer los siguientes registros de firewall F2SDRAM como corresponda:
#Example, F2SDRAM0 region0 config, yse pueden configurar en la fuente U-Boot, es decir, uboot-socfpga\arch\arm\mach-socfpga\spl_s10.c
writel(0x1000000, 0xF8020210); region0addr_base
writel (0x0, 0xF8020214); region0addr_baseext
writel(0xFFFFFFFF, 0xF8020218); region0addr_limit (32 bits más bajos)
writel (0x10, 0xF802021C); region0addr_limitext (32 bits superiores)
writel (0x1, 0xF8020204); enable_set para las regiones