你好,用DM365ZCE做的IPC,NAND FLASH用的是三星\飞索1Gbit的,在量产产品中,发现部分在使用中重新上电后,uboot可以启动,获取不到内核。重新烧录程序可以正常启动,这种现象怎么判断是什么原因呢?硬件或是软件?
uboot启动后打印显示
NAND read: device 0 offset 0x400000, size 0x300000
NAND read from offset 400000 failed -117
3145728 bytes read: ERROR
i_head = 0
Wrong Image Format for bootm command。
重新烧录程序,发现没有坏块。
与NAND FLASH的数据校验有没有关系呢?
在程序中有这样一段关于ECC校验的:程序默认使用NAND_ECC_SOFT
#ifdef CFG_NAND_HW_ECC
#ifdef CFG_NAND_4BIT_ECC
nand->ecc.mode = NAND_ECC_HW_SYNDROME;
nand->ecc.size = 512;
nand->ecc.bytes = 10;
nand->ecc.prepad = 6;
nand->bbt_td = &nand_davinci_bbt_main_descr;
nand->bbt_md = &nand_davinci_bbt_mirror_descr;
nand->ecc.layout = &nand_davinci_4bit_layout;
nand->ecc.calculate = nand_davinci_4bit_calculate_ecc;
nand->ecc.correct = nand_davinci_4bit_correct_data;
nand->ecc.hwctl = nand_davinci_4bit_enable_hwecc;
//nand->options |= NAND_USE_DATA_ADJACENT_OOB;
//nand->badblock_pattern = &nand_davinci_4bit_badblock_pattern;
nand->block_bad = nand_davinci_4bit_block_bad;
#else
nand->ecc.mode = NAND_ECC_HW;
#ifdef CFG_NAND_LARGEPAGE
nand->ecc.size = 2048;
nand->ecc.bytes = 12;
#elif defined(CFG_NAND_SMALLPAGE)
nand->ecc.size = 512;
nand->ecc.bytes = 3;
#else
#error "Either CFG_NAND_LARGEPAGE or CFG_NAND_SMALLPAGE must be defined!"
#endif
nand->ecc.layout = &davinci_nand_ecclayout;
nand->ecc.calculate = nand_davinci_calculate_ecc;
nand->ecc.correct = nand_davinci_correct_data;
nand->ecc.hwctl = nand_davinci_enable_hwecc;
#endif
#else
nand->ecc.mode = NAND_ECC_SOFT;
#endif
别人有说用CFG_NAND_4BIT_ECC的校验数据会稳定些,不知道和NAND_ECC_SOFT有什么区别呢?
谢谢!