板子是别人的,没有其uboot代码,自带uboot的nand检测和操作都正常。
我是通过
tftp 0x81000000 u-boot_dvr.bin
go 0x81000000
启动自己编译的uboot。
uboot是DVRRDK_04.00.00.03上面的,nand是MT29F2G16ABAEAWP
什么都不改,启动后出现:
NAND info: HW ECC BCH8 Selected
NAND device: Manufacturer ID: 0x2c, Chip ID: 0xca (Micron NAND 256MiB 3,3V 16-bit)
NAND bus width 8 instead 16 bit
No NAND device found!!!
0 MiB
MMC: OMAP SD/MMC: 0
*** Warning - bad CRC or NAND, using default environment
nand无法读写。
然后在uboot中代码里面强制改成16位(nand_get_flash_type函数中注释掉下面一句话)
//busw = (extid & 0x01) ? NAND_BUSWIDTH_16 : 0;
能检测到了。
但是读写的时候出现
UBOOT # nand read 0x81000000 0x00280000 0x300000
NAND read: device 0 offset 0x280000, size 0x300000
Skipping bad block 0x00280000
Skipping bad block 0x002a0000
Skipping bad block 0x002c0000
Skipping bad block 0x002e0000
Skipping bad block 0x00300000
Skipping bad block 0x00320000
Skipping bad block 0x00340000
Skipping bad block 0x00360000
Skipping bad block 0x00380000
Skipping bad block 0x003a0000
Skipping bad block 0x003c0000
Skipping bad block 0x003e0000
Skipping bad block 0x00400000
Skipping bad block 0x00420000
Skipping bad block 0x00440000
Skipping bad block 0x00460000
Skipping bad block 0x00480000
Skipping bad block 0x004a0000
Skipping bad block 0x004c0000
3145728 bytes read: OK
结果读进内存的内核是错的,无法启动,提示wrong format..