TI中文支持网
TI专业的中文技术问题搜集分享网站

关于am335x支持的nand类型与寄存器配置

硬件: 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 ,我该怎么设置这个参数呢?

winds2001:

那个ID倒是可以在软件nand_ids.c中去改的,page大小的问题还是有疑问

Gino E:

回复 winds2001:

你的nandflash是要做为启动设备,还只是做为一般的flash?

如果是做为启动设备,会受到TRM手册里Table 26-14的限制。

winds2001:

回复 Gino E:

本方案的nand是需要作为启动设备的,

另外,麻烦解释下基地址与掩码的使用方法,谢谢

winds2001:

回复 winds2001:

改变nand的型号后,uboot就不能保持环境变量了。

uboot启动后,直接saveenv就报failed,保存的地址是坏块,我改变了环境变量保存地址,依旧提示坏块,在uboot下使用nand bad命令发现基本上都是坏块。

以上问题是因为我的nand配置问题还是焊接问题???

我修改了am335x_evm.h文件如下:

#define CONFIG_ENV_SIZE 0x100000                                   /*default:0x2000*/

#define CONFIG_SYS_NAND_PAGE_SIZE         4096                 /*default:2048 */#define CONFIG_SYS_NAND_OOBSIZE             224                    /*default:64 */#define CONFIG_SYS_NAND_BLOCK_SIZE     (128*4096)      /*default:(128*1024)*/

#define MNAND_ENV_OFFSET                            0x280000    /* default: 0x260000 */ #define CONFIG_SYS_ENV_SECT_SIZE           (512 << 10)  /* default: (128 << 10) */

另外我在nand_base.c里面看到uboot支持oob区域大小为8/16/64/128,并不支持224byte,

因此想咨询下,我目前选择的这个镁光的nand作为启动介质,是335x不支持呢,还是uboot

里面没有配置好,或者是没有焊接好(因为几乎全部是坏块)。

谢谢,盼复

Andy Fan1:

回复 winds2001:

Hi ,winds2001:

       我也有类似的问题。我这边用的是海力士的NAND,H27U4G8_6F2D, 512MB的。 移植SDK6.0 ,U-boot和kernel 能运行,但是UBI 会时不时把 NAND 的block标为坏区, 运行一段时间后会标记很多坏区, 用TIEVM的 256MB美光NAND就不会有这样的错误,觉得还是NAND的驱动要改。但是无从下手,目前问题还么解决。

winds2001:

回复 Andy Fan1:

英倍特官方的sbc8600b用的就是你这款hynix的512MB的nand,我调试的时候好像没有遇到你这样的问题呀,hynix的这款nand的规格uboot是完美支持的,并不需要修改什么东西,你在am335x_evm.h中配置好几个参数就可以了。

我使用的这款主要是uboot好像不支持,所以麻烦。可能需要修改mtd的驱动,这下头大了。

另外,留个qq给你20112000,你可以加我,我们一起讨论。

真正做项目的时候可能都会换大容量的nand,因此我们这样的问题可能存在共性,麻烦ti社区管理员关注下我们这个问题………………

赞(0)
未经允许不得转载:TI中文支持网 » 关于am335x支持的nand类型与寄存器配置
分享到: 更多 (0)