AR# 68831

Zynq UltraScale+ MPSoC - 2016.4 U-Boot で ondie-ECC NAND を書き込むことができない

説明

Zynq UltraScale+ は、ondie-ECC NAND から U-Boot までブートできます。

U-Boot で同じ ondie-ECC NAND を書き込むと、次のようなエラー メッセージが表示されます。

ZynqMP> nand erase ${bootstart} ${bootsize} && nand write ${clobstart} ${bootstart} ${bootsize}
NAND erase: device 0 offset 0x0, size 0x200000
Erasing at 0x1e0000 -- 100% complete.
OK
NAND write: device 0 offset 0x0, size 0x200000
NAND write to offset 0 failed -5
0 bytes written: ERROR

ソリューション

問題は、U-Boot ドライバーで処理できるのは HWECC (Zynq UltraScale+ の NAND コントローラーで制御される) のみで、ondie-ECC NAND は処理できないことです。

この問題を回避するには、FSBL を変更して、U-Boot に移行する前に ondie-ECC をディスエーブルにします。

次に、XFsbl_HookBeforeHandoff() で使用可能な単純なレジスタ書き込みシーケンスを示します。

Xil_Out32(0xFF100014, 0x0);
Xil_Out32(0xFF100014, 0x1);
Xil_Out32(0xFF10000C, 0x110000EF);
Xil_Out32(0xFF100004, 0x90);
Xil_Out32(0xFF100008, 0x06000000);
Xil_Out32(0xFF100000, 0x1004);
Xil_Out32(0xFF100010, 0x400);
Xil_Out32(0xFF100030, 0x0);

注記: U-Boot 2017.2 およびそれ以降のバージョンでは ondie-ECC NAND がサポートされます。

AR# 68831
日付 05/02/2018
ステータス アクティブ
種類 一般
デバイス
ツール