« M社で電子部品を買った結果 | トップページ | 半導体のジャンクション温度とパッケージ »

2020.10.16

ZYNQでECCメモリ使う方法(1)

データシートDS190によれば、ZYNQのメインメモリであるDDR3 SDRAMはECCをサポートしているそうです。

Ds190_ecc

ECCというのは、メモリに書き込むデータに冗長な符号を追加で書き込んでおいて、エラー検出や訂正ができるというもので、サーバ用のDIMMに搭載されているあの機能です。

ZYNQにもそういう機能があるということなので検証してみることにしました。

下の写真は、Cosmo-Z Mini(カスタム版)のDRAMをECC付きのRAMに貼り換えたものです。128MバイトのRAMしか手に入らなかったので、2つ合わせて256Mバイトしかありません。通常のCosmo-Z Miniの4分の1のサイズですが、Linuxが起動したのでよしとしましょう。

Eccdram

さて、ZYNQでECCを有効にする方法をざっと調べてみたのですが、Vivadoの中でZYNQのPSのモジュールを開いて、DDR Configurationを開きます。

Ecc_setting

この中にECCがあるのですが、初期状態ではDisabledになっていて選択できません。これをEnabledにするにはデータバス幅を16bitにする必要があります。

Ecc_setting2_20201020230401

これで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メモリが認識されたことがわかります。

Ubootecc

ECC有効化のための第一歩です。

|

« M社で電子部品を買った結果 | トップページ | 半導体のジャンクション温度とパッケージ »

コメント

コメントを書く



(ウェブ上には掲載しません)




« M社で電子部品を買った結果 | トップページ | 半導体のジャンクション温度とパッケージ »