AR# 47520

Zynq-7000 SoC、SMC - NAND の ECC ステータス レジスタが 1 クロック サイクル間間違ってエラーをレポートする

説明

ソフトウェアが停止信号をトリガーすると、ecc_status ビットが Low になってから 1 サイクルの間、ecc_last_status 値が間違って表示されます。

ソフトウェアは 0 以外の値を検出するたびに ecc_last_status を読み込み直す必要があります。

ソリューション

影響: あまり重要ではありません。 適宜 ECC ステータスを読み込み直してください。
回避策:ソフトウェアが ecc_status レジスタの ecc_last_status ビットから 0 以外の値を読み込んだ場合、正しい値が返されることを確認するには、もう 1 度 ecc_status レジスタの値を読み込む必要があります。
対象となる構成:NAND で ECC を使用するシステム
対象となるデバイス リビジョン:すべて。修正予定はありません。(Xilinx Answer 47916) - 「Zynq-7000 AP SoC デバイス - シリコン リビジョン間の相違点」を参照してください。


ecc_status レジスタには、前の ECC が成功したかエラーになったかをレポートする 2 ビットの ecc_last_status 値が含まれます。この ecc_last_status 値は、同じレジスタの ecc_status ビットが Low になった (ECC がアイドル状態であることを示す) 場合にのみ有効です。ecc_last_status でレポートされるエラーはソフトウェア エラーで、そのエラー モードはソフトウェア エラーによって異なります。

  1. ecc_last_status = 01 : 範囲外のアドレスまたは 512 バイトのバウンダリにアラインされていないアドレスでソフトウェアが ECC を開始しようとしました。
  2. ecc_last_status = 10 : ソフトウェアが ECC 操作に対して間違った量のデータを出力しました。
  3. ecc_last_status = 11 : ECC コードをメモリに書き込むためのページをジャンプしないようにソフトウェアがコントローラーをプログラムしたため、データのページ全体を出力できませんでした。

ドライバーに上記のいずれかのエラーがあると、停止コードは正しくレポートされますが、この後問題のないシーケンスが実行されると、ecc_last_status 値は、ecc_status ビットが Low になった後 1 サイクル間、同じ停止コードを間違って表示します。

影響の詳細

通常動作中は、NAND ソフトウェアが ecc_last_status ビットでレポートされる停止コードのいずれかを引き起こすことは考えられません。 偽エラー (偽パスではない) のみがレポートされ、データが読み戻されたときのデータ インテグリティや ECC 操作に影響はありません。

停止コードに対するソフトウェアの反応が問題となります。しかし、実際に停止が発生しソフトウェアで処理された後にしかこの状態は発生しないので、適切なエラー処理が必要となります。

回避策の詳細

ソフトウェアが ecc_status レジスタの ecc_last_status ビットから 0 以外の値を読み込んだ場合、正しい値が返されることを確認するには、もう 1 度 ecc_status レジスタの値を読み込む必要があります。

アンサー レコード リファレンス

マスター アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
47916 Zynq-7000 SoC デバイス - シリコン リビジョン間の相違点 N/A N/A
AR# 47520
日付 06/13/2018
ステータス アクティブ
種類 デザイン アドバイザリ
デバイス