インテル® STRATIX® 10 SX デバイスの HPS 外部メモリー・インターフェイス (EMIF) でエラー訂正コード (ECC) をオンにすると、メモリーアドレスは F2H および F2SDRAM0/1/2 インターフェイス用の ECC データを生成します。FPGAから HPS へのマスターは、F2SDRAM0/1/2 インターフェイスを使用する場合でも、MPU で同じメモリーアドレスを使用する必要があります。それ以外の場合、ECC エラーがトリガーされる可能性があります。ECC がオフの場合、この制限は適用されません。
FPGAから HPS へのマスターと MPU マスターが 2 GB 未満のメモリースペースにアクセスすると、メモリーアドレスが 0x0000 0000 から FFFF 0x7FFF使用されます。
FPGAから HPS へのマスターと MPU マスターが 2GB を超えるメモリースペースにアクセスすると、MPU は DTS ファイルで定義されたエイリアス・アドレスを使用してこれらのメモリーアドレスにアクセスします。FPGAから HPS へのマスターでは、すべての F2SDRAM0/1/2 インターフェイスで物理アドレスの代わりに同じエイリアス・アドレスを使用する必要があります。
以下は、インテル® Stratix® 10 SX デバイスの 4 GB HPS EMIF の例です。
DTS では、メモリーは以下のように 2 つの領域に定義されます。FPGAから HPS へのマスターと MPU は、0x1080000000からのアドレスを使用して、0x10FFFFFFFFして 2 GB ~ 4 GB のメモリースペースにアクセスする必要があります。
memory {
reg = <0 0x00000000 0 0x80000000>、
<0x10 0x80000000 0 0x80000000>;
};
上に示したエイリアス・アドレスで 4GB のメモリー領域全体にアクセスできるようにするには、以下の F2SDRAM ファイアウォール・レジスターも適宜設定する必要があります。
#Example、F2SDRAM0 リージョン 0 構成では、U-Boot ソース、つまり uboot-socfpga\arch\arm\mach-socfpga\spl_s10.c で構成できます。
書き込み(0x1000000、0xF8020210);region0addr_base
書き込み (0x0、0xF8020214);region0addr_baseext
書き込み(0xFFFFFFFF、0xF8020218);region0addr_limit (32 ビット以下)
書き込み (0x10、0xF802021C);region0addr_limitext (上 32 ビット)
書き込み(0x1、0xF8020204);地域向けenable_set