之前在通过烧写EVM板上NAND能顺利运行的ubi.img,放到自己做的板子上启动到ubi就出现了错误,
自己的板子上用的NAND是Spansion的2Gb X8 TSOP Flash,只支持1bit ECC
怀疑是ECC存在问题,
sysboot配置是选择了ECC handled by NAND
在board_am335xevm.c中发现
static void evm_nand_init(int evm_id, int profile)
{
struct omap_nand_platform_data *pdata;
struct gpmc_devices_info gpmc_device[2] = {
{ NULL, 0 },
{ NULL, 0 },
};
setup_pin_mux(nand_pin_mux);
pdata = omap_nand_init(am335x_nand_partitions,
ARRAY_SIZE(am335x_nand_partitions), 0, 0,
&am335x_nand_timings);
if (!pdata)
return;
pdata->ecc_opt =OMAP_ECC_BCH8_CODE_HW;
pdata->elm_used = true;
gpmc_device[0].pdata = pdata;
gpmc_device[0].flag = GPMC_DEVICE_NAND;
omap_init_gpmc(gpmc_device, sizeof(gpmc_device));
omap_init_elm();
}
像我这种只支持1bit ECC的Flash应该用什么ecc_opt ?
请高手指导,谢谢!
PS: BSP版本为:linux-3.2.0-psp04.06.00.11
kooking:
理论上hw sw应该都可以,也可以直接关闭ecc校验试试
还有一个要注意的是,335x的nand好像是按16bit处理的,和你的硬件确认一下
Jian Zhou:
回复 kooking:
我们SDK是支持NAND 8位的,虽然GPEVM的原理图是16位的,但是实际上是用的8位NAND。
你MTD ulities命令所用的参数是什么呢?
kooking:
回复 Jian Zhou:
我们的文件系统是直接nfs后,挂载nand分区,解压*.tar.gz烧写的。
我觉得是不是应该首先确认写内核对该nand是支持,可以nfs后,挂载一个nand分区,看能否正常的读写