ZYNQでECCメモリ使う方法(1)
データシートDS190によれば、ZYNQのメインメモリであるDDR3 SDRAMはECCをサポートしているそうです。
ECCというのは、メモリに書き込むデータに冗長な符号を追加で書き込んでおいて、エラー検出や訂正ができるというもので、サーバ用のDIMMに搭載されているあの機能です。
ZYNQにもそういう機能があるということなので検証してみることにしました。
下の写真は、Cosmo-Z Mini(カスタム版)のDRAMをECC付きのRAMに貼り換えたものです。128MバイトのRAMしか手に入らなかったので、2つ合わせて256Mバイトしかありません。通常のCosmo-Z Miniの4分の1のサイズですが、Linuxが起動したのでよしとしましょう。
さて、ZYNQでECCを有効にする方法をざっと調べてみたのですが、Vivadoの中でZYNQのPSのモジュールを開いて、DDR Configurationを開きます。
この中にECCがあるのですが、初期状態ではDisabledになっていて選択できません。これをEnabledにするにはデータバス幅を16bitにする必要があります。
これでECCが有効になります。
PSの設定を変えたのでFSBLを作り直す必要があるのですが、Vitisが出てから(Vivado 2019.2くらいから)はSDK用のhwdefファイルを出力してくれなくなったので、TCLコンソールから write_hedef -force ./sdk/cosmoz_mini_wrapper.hdf と打ち込んで手動で出力するようにします。
これで旧来のXSDKでもFSBLが作れるようになります。
さて、ZYNQはECCを有効にするとDRAMは16bit幅しかサポートしないので、使える容量が半分になってしまうことに注意してください。つまり256MバイトのDRAMを積んでいても使えるのは128Mバイトです。
そのため、通常はU-Bootから作り直すことになるでしょう。U-bootでメモリサイズを決めるのはU-bootのDeviceTreeですね。
U-bootからECC Enabledと表示されて、ECCメモリが認識されたことがわかります。
ECC有効化のための第一歩です。
| 固定リンク
コメント