在EVM板的NAND上顺利运行的ubi.img,在自己做的板子上启动到ubi的时候报错
[ 4.189462] UBIFS: start fixing up free space
[ 12.806157] UBIFS: free space fixup complete
[ 12.849312] UBIFS: mounted UBI device 0, volume 0, name "rootfs"
[ 12.855597] UBIFS: file system size: 126849024 bytes (123876 KiB, 120 MiB, 999 LEBs)
[ 12.863902] UBIFS: journal size: 9023488 bytes (8812 KiB, 8 MiB, 72 LEBs)
[ 12.871550] UBIFS: media format: w4/r0 (latest is w4/r0)
[ 12.877644] UBIFS: default compressor: lzo
[ 12.881928] UBIFS: reserved for root: 0 bytes (0 KiB)
[ 12.932650] VFS: Mounted root (ubifs filesystem) on device 0:13.
[ 12.939302] Freeing init memory: 248K
INIT: [ 13.451399] UBI: run torture test for PEB 1023
version 2.88 booting
[ 13.569904] UBI error: torture_peb: read problems on freshly erased PEB 1023, must be bad
[ 13.578476] UBI error: erase_worker: failed to erase PEB 1023, error -5
[ 13.585390] UBI: mark PEB 1023 as bad
[ 13.589786] UBI: 9 PEBs left in the reserve
[ 13.640814] UBI: run torture test for PEB 975
[ 13.758902] UBI error: torture_peb: read problems on freshly erased PEB 975, must be bad
[ 13.767369] UBI error: erase_worker: failed to erase PEB 975, error -5
[ 13.774201] UBI: mark PEB 975 as bad
[ 13.778553] UBI: 8 PEBs left in the reserve
[ 13.877933] UBI: run torture test for PEB 1022
[ 13.996207] UBI error: torture_peb: read problems on freshly erased PEB 1022, must be bad
[ 14.004785] UBI error: erase_worker: failed to erase PEB 1022, error -5
[ 14.011707] UBI: mark PEB 1022 as bad
[ 14.016145] UBI: 7 PEBs left in the reserve
[ 14.329447] UBI: run torture test for PEB 1021
[ 14.447663] UBI error: torture_peb: read problems on freshly erased PEB 1021, must be bad
[ 14.456233] UBI error: erase_worker: failed to erase PEB 1021, error -5
[ 14.463156] UBI: mark PEB 1021 as bad
[ 14.467547] UBI: 6 PEBs left in the reserve
唯一的区别是自己的板子上用的Spansion NAND 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的NAND,ecc_opt应该选择什么?
BSP版本为linux-3.2.0-psp04.06.00.11
请TI高手帮忙,非常感谢!