你好,
我有一个T2081 NXP 处理器,通过IFC连接到外部与非闪存 MT29F64G08AECAB 。
我的目标是在 Code Warrior 上对该与非 Flash 进行诊断测试,或者直接读取该设备的设备和制造商 ID(我已经为此编写了代码)。
为了实现这个目标,我已经完成了以下工作:
1. 在生成的T2081QDS_init_core.tcl 中配置 与非 IFC 的 LAW,起始地址为 0xFF800000,大小为 1MB 。
## LAW3 到 IFC - 与非
# LAWBARH
内存 [CCSR_ADDR 0x000C30] = 0x00000000
# 律师协会
内存 [CCSR_ADDR 0x000C34] = 0xFF800000
# LAWAR
内存 [CCSR_ADDR 0x000C38] = 0x81F00013
2. 还配置了与 NAND 对应的CSPR 和 FTIM 寄存器,如下所示:
设置 NAND_CS 5
# 与非闪存,地址0xFF800000,容量1MB,8位与非,ECC禁用
# CSPR_EXT
mem [CCSR_ADDR [expr 0x12400C + $NAND_CS * 0x0C]] = 0x00000000
# CSPR
mem [CCSR_ADDR [expr 0x124010 + $NAND_CS * 0x0C]] = 0xFF800103
# AMASK
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
请注意,处理器到与非 有 2 个片选信号(CS5 和 CS6),目前我正在尝试访问前 4GB,因此只配置了 CS5 。
3. 已配置TLB:
1M TLB 条目 5:0xFF800000 - 0xFF8FFFFF,适用于 与非 缓存禁止、受保护的缓存
寄存器${CAM_GROUP} L2MMU_CAM5 = 0x5000000A1C08000000000000FF80000000000000FF800001
4. 由于在安装目录中找不到对 MT29F64G08AECAB 的设备支持,我按照手册为该设备(4GB)创建了一个 .xml 文件,我已将其附在此处。
完成上述步骤后,当我在 CodeWarrior 上运行 与非 设备的诊断测试时,出现以下错误:
作为替代方案,我尝试编写一个简单的 C 代码来从该设备读取设备 ID。所以我用 CodeWarrior 编写了以下代码,并附在这里。因此,当我读取 IFC_NAND_MDR 寄存器时,我得到了 0x124E0000,这与设备 ID 不匹配。
我想知道是不是我做错了什么或者遗漏了什么,因为我无法运行诊断测试或读取设备 ID 。
我已附上相应的 T2081QDS_init_core.tcl 文件以及相应的原理图供您参考。
问候,
尼萨加 R