硬件: am3358 + MT29F16G08ABABA(SLC)
MT29F16G08ABABA(SLC) (16Gb)规格:
page size x8, 4320bytes(4096+224bytes)
block size 128pages(512K+28Kbytes)
plane size 2planes * 2048blocks per plane
device size 16Gb: 4096 blocks
device ID 0x48
手册: TRM SPRUH73J(October 2011-revised December 2013)
问题1: 关于am335x支持的nand型号
TRM SPRUH73J(October 2011-revised December 2013) 有如下说明
26.1.7.4.1
Support for large page size(2048bytes +64 spare bytes) or very large page size 4096bytes +128/218 spare bytes
26.1.7.4.2 initialization and detection
Table 26-14 supported nand devices device ID
16Gb D5/C5/A5/B5/86/96
我自行设计的板子选型时没有太注意,根据以上2点描述,难道am3358不支持MT29F16G08ABABA(SLC)? 主要有2点原因:1. 我的page size 是4096+224bytes,而不是4096+128/218bytes,2. MT29F16G08ABABA(SLC)的device ID是48,不在Table 26-14所支持的ID中。
问题2:am335x关于nand寄存器的配置
TRM SPRUH73J(October 2011-revised December 2013) 有如下说明
7.1.3.3.8.1 chip-select base address and region size
1 GB 512MB 256MB 128MB 64MB 32MB 16MB
A29 A28 A27 A26 A25 A24 A23 ………A0
Base address A29 A28 A27 A26 A25 A24
Mask field A27 A26 A25 A24
Cs size mask field
256MB 0 0 0 0
128MB 1 0 0 0
64MB 1 1 0 0
32MB 1 1 1 0
16MB 1 1 1 1
对应的需要配置的寄存器为:
GPMC_CONFIG7_0 Register
Bit field description
31-12 reserve
11-8 maskaddress
7 reserve
6 csvalid
5-0 baseaddress
始终对关于以上地方的配置没有完全弄明白,基地址和掩码到底与什么有关系?同样的nand,设置不同的基地址,即对应了不同的掩码,比方说对512MB的nand,可以设置基地址是 0x0800 0000(掩码区域128MB), 也可以设置基地址0x1000 0000(掩码区域256MB),
因此,它表示cpu是以128MB或256MB为最小单位对nand进行访问么??这样解释似乎又不通。
另外我查询了2个板子的Nand配置如下:
Am335xevm配置 256MB nand baseaddress 0x0800 0000 (maskfield=2’b1000 对应128MB)
英蓓特配置 512MB nand baseaddress 0x1000 0000(maskfield=2’b0000 对应256MB)
那我自行设计的板子 2GB nand ,我该怎么设置这个参数呢?