こんにちは、
私はT2081 NXPプロセッサを、IFC経由で外部NANDフラッシュMT29F64G08AECABに接続しています。
私の目標は、CodeWarrior上でこのNANDフラッシュの診断テストを実行するか、あるいはCodeWarrior上でこのデバイスのデバイスIDと製造元IDを読み取ることです(そのためのコードは既に作成済みです)。
この目標を達成するために、私は既に以下のことを実行しました。
1. 生成されたT2081QDS_init_core.tcl で、0xFF800000 から始まるサイズ 1MB のNAND IFC 用の LAW を設定しました。
## LAW3からIFCへのNAND
# ローバー
mem [CCSR_ADDR 0x000C30] = 0x00000000
# LAWBARL
mem [CCSR_ADDR 0x000C34] = 0xFF800000
# 戦争
mem [CCSR_ADDR 0x000C38] = 0x81F00013
2. また、以下のようにNANDに対応するCSPRレジスタとFTIMレジスタを設定しました。
NAND_CS 5 を設定
# NANDフラッシュ、アドレス0xFF800000、サイズ1MB、8ビットNAND、ECC無効
# CSPR_EXT
mem [CCSR_ADDR [expr 0x12400C + $NAND_CS * 0x0C]] = 0x00000000
# CSPR
mem [CCSR_ADDR [expr 0x124010 + $NAND_CS * 0x0C]] = 0xFF800103
#マスク
mem [CCSR_ADDR [expr 0x1240A0 + $NAND_CS * 0x0C]] = 0xFFFF0000
# CSOR
mem [CCSR_ADDR [expr 0x124130 + $NAND_CS * 0x0C]] = 0x01082100
# IFC_FTIM0
mem [CCSR_ADDR [expr 0x1241C0 + $NAND_CS * 0x30]] = 0x1E0B0507
# IFC_FTIM1
mem [CCSR_ADDR [expr 0x1241C4 + $NAND_CS * 0x30]] = 0x2929090B
# IFC_FTIM2
mem [CCSR_ADDR [expr 0x1241C8 + $NAND_CS * 0x30]] = 0x01203819
# IFC_FTIM3
mem [CCSR_ADDR [expr 0x1241CC + $NAND_CS * 0x30]] = 0x15000000
プロセッサからNANDへ向かうチップセレクトが2つあり(CS5とCS6)、今のところ最初の4GBにアクセスしようとしているので、CS5のみの設定をしています。
3. 設定済みのTLB:
細かい 1M TLB エントリ 5 : 0xFF800000 - 0xFF8FFFFF (NAND キャッシュ禁止、ガード付き)
reg ${CAM_GROUP} L2MMU_CAM5 = 0x5000000A1C08000000000000FF80000000000000FF800001
4. インストール済みディレクトリにはこのMT29F64G08AECABのサポートが見つからなかったため、マニュアルに従ってこのデバイス用の.xml(4GB分)を作成し、ここに添付しました。
これらすべてを実行した後、CodeWarriorでNANDデバイスの診断テストを実行すると、以下のエラーが表示されます。
代替案として、このデバイスからデバイスIDを読み取るための簡単なC言語コードを書いてみました。そこで、以下のコードをCode Warriorで書き、ここに添付しました。その結果、IFC_NAND_MDRレジスタを読み戻すと、デバイスIDと一致しない0x124E0000が返されます。
診断テストを実行できない、またはデバイスIDを読み取れないのは、私が何か間違ったことをしているか、何かを見落としているからでしょうか。
参考資料として、関連するT2081QDS_init_core.tclファイルと回路図を添付しました。
よろしくお願いいたします。
ニサルガR