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

am335x关于nandflash问题

您好!

使用的是am335x6.0sdk的,nandflash使用的是MT29F02G08AB。使用的是BCH8的,uboot中也是默认BCH8。

现在遇见的问题是,能在uboot写入一些环境变量并且保存,重新启动时候,变量的写入的数据还在。

但是在想把uboot写入nandflash中的时候,通过手动写入,然后重新重启,串口那边还是答应CCCC,所以不能从nand的启动起来。

我们的启动配置nand的启动是第一位,usb第二位,串口是第四位的。

手动写入的是参考下面这个来写的!

# erase NAND
nand erase.chip
# get MLO
tftp 0x80200000 MLO
# make 4 copies in the RAM
cp.b 0x80200000 0x80220000 20000
cp.b 0x80200000 0x80240000 20000
cp.b 0x80200000 0x80260000 20000
# get u-boot.img
tftp 0x80280000 u-boot.img
# write the whole block (4*MLO + u-boot.img) to NAND
nand write 0x80200000 0x0 0x260000

Tony Tang:

zhi wei lintftp 0x80280000 u-boot.img

这个u-boot.img多长?

Tony Tang:

如果有仿真器的话,把下图中的Vector trace读来出,根据TRM Table 26-42的描述看一下启动状态。

昨夜无眠:

回复 Tony Tang:

感谢您的回复!    我在MT29F2G08AB这款芯片中8位宽的存储单元结构,有2048个块,一个块有64个页,每个页大小为2048个数据存储区和128个字节的备用区域;应该是这个ecc校验出的问题。有没相关uboot中的nandflash的修改的文章推荐的,我在看Omap_gpmc.c中的nand_init()这个函数发现有些定义不理解,不知道怎么去修改,#ifdef CONFIG_AM33XX    nand->ecc.mode = NAND_ECC_HW;    nand->ecc.layout = &hw_bch16_nand_oob;    nand->ecc.size = CONFIG_SYS_NAND_ECCSIZE;    nand->ecc.bytes = CONFIG_SYS_NAND_ECCBYTES;   //这个值为3是怎么确定的,怎么得来的,    nand->ecc.hwctl = omap_enable_ecc_bch;    nand->ecc.correct = omap_correct_data_bch;    nand->ecc.calculate = omap_calculate_ecc_bch;    nand->ecc.read_page = omap_read_page_bch;    omap_hwecc_init_bch(nand, NAND_ECC_READ);有相关的资料可以推荐的吗?

Tony Tang:

回复 昨夜无眠:

To select ECC algorithm for NAND:

U-Boot# nandecc [sw | hw <hw_type>]

Usage:

sw – Set software ECC for NAND hw <hw_type> – Set hardware ECC for NAND <hw_type> – 0 for Hamming code 1 for bch4 2 for bch8 3 for bch16 Currently we support only Software, Hamming Code and BCH8. We do not support BCH4 and BCH16 

试试:

U-Boot# nandecc hw 2

 

赞(0)
未经允许不得转载:TI中文支持网 » am335x关于nandflash问题
分享到: 更多 (0)