Lorsque l’ECC est activé dans l’interface HPS External Memory Interface (EMIF) dans Intel Agilex® périphérique SoC 7, l’adresse mémoire génère des données ECC pour le mode direct F2H SDRAM et le mode F2H CCU. Il exige donc que le maître FPGA-HPS utilise la même adresse mémoire avec le processeur graphique, même en mode direct FPGA-HPS SDRAM. Sinon, une erreur ECC peut être déclenchée. Cette restriction ne s’applique pas lorsque l’ECC est désactivé.
Lorsque le maître FPGA-HPS et le maître MPU accèdent à l’espace mémoire inférieur à 2 Go, l’adresse mémoire est utilisée entre 0x0000 0000 et 0x7FFF FFFF.
Lorsque le maître FPGA à HPS et le maître MPU ont accès à un espace mémoire supérieur à 2 Go, le MPU utilise l’adresse de alias définie dans le fichier DTS pour accéder à ces adresses mémoire. Le maître FPGA à HPS doit utiliser la même adresse de alias au lieu de l’adresse physique pour le mode F2H SDRAM direct et le mode CCU F2H.
Voici l’exemple de l’EMIF HPS de 4 Go dans un périphérique SoC Intel Agilex® 7 :
Dans DTS, la mémoire est définie en deux régions, comme indiqué ci-dessous. Ensuite, le maître et le processeur MPU FPGA à HPS doivent utiliser une adresse de 0x1080000000 à 0x10FFFFFFFF pour accéder à l’espace mémoire de 2 Go ~ 4 Go.
mémoire {
= ,
;
};
Pour permettre l’accès à l’espace mémoire complet de 4 Go possédant l’adresse de alias ci-dessus, les registres suivants doivent également être définis en conséquence. Vous pouvez définir ces registres dans le fichier uboot-socfpga\arch\arm\mach-socfpga\spl_agilex.c
writel (0x100000, 0xF8020110) ; region0addr_base
writel (0x0, 0xF8020114) ; region0addr_baseext
writel (0xFFFFFFFF, 0xF8020118) ; region0addr_limit (32 bits inférieurs)
writel (0x10, 0xF802011C) ; region0addr_limitext (32 bits supérieurs)
writel (0x1, 0xF8020104) ; enable_set pour les régions