AR# 59311

Zynq-7000 SoC: NAND プログラミング/ブートに関するチェックリスト

説明

Zynq-7000 SoC で NAND プログラミングおよびブートのデバッグを行う際に必要な項目、作業、注意事項が、ここにまとめられています。

ソリューション

サービス リクエストを開く前に、太字になっている箇所の情報が必要になるので準備してください。



1. NAND フラッシュおよびコンフィギュレーションはザイリンクスでサポートされていますか。

サポート カテゴリー (Supported、Limited Support、Unsupported) を判断するには、(Xilinx Answer 50991) を参照してください。
注記: Zynq-7000 SoC ではオンダイ ECC (Micron) および 1 ビット ECC (Spansion) NAND デバイスのみ使用可能です。
Zynq NAND フラッシュ コントローラーは 1 ビットの ECC、1 つのチップ セレクトのみをサポートしています。つまり、ユーザーの NAND にマルチビットの ECC や、複数の CS が必要な場合は、この NAND は使用できません。
コントローラーからの ECC ビットを使用する代わりに、複数ビットの ECC をオン チップで使用する Micron のオンダイ ECC NAND のほうが、よりよい ECC サポートを提供しています。 

NAND フラッシュの完全な名前、コンフィギュレーション モード、電圧を提示してください。コンフィギュレーションが「標準」でない場合は (マルチプレクサ、レベル シフターなど)、ボード回路図も提出してください。

2. 信号はメモリ デバイスに正しく接続されていますか。
 
NAND パーツの回路図を提出してください。どんなワードが読み込まれているかを確認するため、ボード上のデータ信号を監視してください。
 
 

3. Zynq はプロダクション シリコンですか。

- 0xF8007080 から PS_VERSION を読み出して確認するには、XMD を使用します。
シリコン バージョン レジスタ値については、(Xilinx Answer 57038) を参照してください。
- プロダクション シリコンでない場合は、シリコン リビジョンの違いを (Xilinx Answer 47916) で確認してください。
 
レジスタ 0xF8007080 でシリコン バージョンを確認してください。
 

4. JTAG チェーンは正しく動作していますか。

CPU に接続するには XMD を使用してください。
    
JTAG チェーンの詳細を知らせてください (チェーン内のデバイス数、Zinq の数、カスケードまたは独立した JTAG の Zinq の数、チェーンのレベル シフターなど)。XMD エラーがあれば報告してください。
 

5. ブートのどの段階で Zynq はエラーになっていますか。BootROM ですか。それとも FSBL ですか。

FSBL に関連した問題がいくつかあります。まず次のアンサーを確認してください。
  • bin モノリシック Linux イメージをブートする場合は、(Xilinx Answer 55492) を参照してください。
  • セキュア ブート モードでのブートについては、(Xilinx Answer 53943) を参照してください。
これを確認するには、FSBL デバッグ情報が出力されるように設定して、イメージをプログラムします。FSBL_DEBUG_INFO FSBL コンパイル フラッグを設定します。
FSBL コンパイル フラッグについては、『Zynq-7000 SoC ソフトウェア開発者向けガイド』 を参照してください。

ブート中に UART に何か表示された場合は、
 
その出力内容を提供してください。FSBL はユーザー アプリケーションで、SDK を使用して簡単にデバッグできます。サービス リクエストを開く前に簡単な問題調査を行ってみてください。
 
  • ブート中、何も UART に出力されない場合は、UART のボーレートをまず確認してください。
  • ブート イメージが NAND の最初の 128 MB に格納されているかどうかを確認してください。BootROM は限定アドレスのみを検索します。

ブート後の INIT_B (High/Low、または点滅)、REBOOT_STATUS および BOOT_MODE レジスタのステータスを提示してください。ブート イメージが正しくプログラムされていない場合は、手順 5 に進んでください。
 

6. SDK および iMPACT でプログラムができなくなっていますか。

NAND プログラムの既知の問題および回避策については、(Xilinx Answer 56030) を参照してください。
JTAG チェーンに複数のデバイスがある場合は、Zynq は最初のデバイスではありません。

フラッシュのプログラム方法については、(Xilinx Answer 58584) を参照してください。

デバッグ方法については、(Xilinx Answer 56781) を参照してください。
デバッグ目的で、デバッグ環境変数である XIL_CSE_ZYNQ_DISPLAY_UBOOT_MESSAGES を Windows または Linux に設定することができます。

Windows の場合のデバッグ環境変数の設定例:





Linux の場合のデバッグ環境変数の設定例:

setenv XIL_CSE_ZYNQ_DISPLAY_UBOOT_MESSAGES 1

フラッシュ ライターから NAND をプログラムする場合は DDR が必要です。フラッシュ ライターには、DDR を含んだボードを初期化するため FSBL が必要です。

FSBL がブート イメージで使用されているものと同じであることを確認してください。
 
 
使用しているツールのバージョンを知らせてください。プログラムを実行するのに使用したツールと同じバージョンでイメージが構築されていることを確認してください。
プログラミング用に使用されているブート モードの設定を提示してください (JTAG または NAND からのブート)。
XIL_CSE_ZYNQ_DISPLAY_UBOOT_MESSAGES 変数を使用して得られたログを提出してください。
 

7. u-boot を使用すると機能しますか。

Wiki にある最新リリースのイメージからあらかじめビルドされている u-boot.elf を使用して、(UG873) の「JTAG および U-Boot コマンドを使用し、ブート イ メージで QSPI フラ ッシュをプログラムする」セクションにある手順を含め、このガイドに沿ってください。

NAND の場合もフローは似ていますが、u-boot コマンドは QSPI とは異なります。

例は次のようになります。
  • nand info
  • nand erase 0 0x100000
  • nand write 0x800 0 0xE1000
注記: ZC702 ボードには NAND フラッシュは含まれていないので、zc70x コンフィギュレーションには NAND フラッシュのサポートは追加されていません。

既存の zc70x コンフィギュレーションにこのサポートが必要な場合は、include/config/zynq_zc70x.h で次の変更を加えてください。

#define CONFIG_NAND_ZYNQ
それから、zc70x を次のようにコンパイルします。
$ make zynq_zc70x_config
$ make

Wiki にある u-boot イメージを使用したプログラミングのログを提出してください。
使用した u-boot のバージョンを指定してください。
 

8. ボード デザインは、プログラミングに使用される NAND 周波数をサポートしていますか。

u-boot を使用し、NAND のクロック周波数を確認するためクロック設定をもう 1 度確認してください。

NAND コントローラーは ARM SMC PL353 をベースにしています。タイミングの詳細については、『ARM PrimeCell Static Memory Controller (PL350 series) Technical Reference Manual r2p1』を参照してください。

NAND のタイミング パラメーターが SMC タイミング計算に正しく設定されていることを確認してください。

この設定は、SMC の set_cycles レジスタを反映します。

NAND ブートはこの設定が間違っていると機能しない場合があります。

CS0 列に関連したタイミング パラメーターを入力するには、NAND デバイスの AC 特性を参照してください単位はナノ秒です。

サイクルは動作周波数に基づいて計算されます。


NAND のクロック周波数を確認するためのレジスタ設定値および計算を知らせてください。
 
 
 

9. ザイリンクスのスタンドアロンのサンプルは機能していますか。

NAND サンプルは SDK インストール ディレクトリにあります。

sw\XilinxProcessorIPLib\drivers\nandps_v1_0X_a\examples

どこでサンプルがエラーになっているかを理解するため、デバッグがある程度必要になります (SDK デバッガーを使用するか、デバッグ結果を追加するなど)。
 
ザイリンクスのスタンドアロンのサンプルで検出されたエラーのタイプを報告してください。
 

10. ユーザーは異なるソース (SD など) からブートすると正しく NAND にアクセスでき、読み出し/書き込み操作の後 (u-boot などから) データは正しいのですが、システムは NAND からブートしません。

(Xilinx Answer 60482) を参照してください。

NAND BUSY 信号にプルアップがあることを確認してください。 

Zynq の内部プルアップは BootROM でディスエーブルになっています (TRM の表 6-11 を参照)。
 
AR# 59311
日付 05/28/2018
ステータス アクティブ
種類 一般
デバイス