I am getting the following error with Linux on an iMX35 system:
UBI error: ubi_io_read: error -74 while reading 64 bytes from PEB 1654:0, read 64 bytes
UnCorrectable RS-ECC Error
The NAND flash is a Samsung K9K8G08U0E-SIB0000 which is a die shrink of the K9K8G08U0D-SIB0000 part that works fine. The specifications between the two parts are nearly identical.
Solved! Go to Solution.
Not sure if this is the same thing but there's a similar U0D -> U0E transition for another Samsung part that went from allowing 4 NOPs to 1 NOP. NOP = Number of Partial Program Cycles. Check if that's the same thing for you, and if that's the case you can change the driver not to use partial programming.
Hello,
How i can change NOP in driver? i can't find NOP in driver. Please help me.
I am using kernel 2.6.33 from freescale bsp 1.5
Regards
There was another couple of problems here that need to be fixed.
- The UBI file system need to be rebuilt
- The UBI raw binary file system image need to rebuilt
- There is a hard coded value associated with the NAND subpage write in the nand_ids.c file (linux/drivers/mtd/nand in the 2.6.26 kernel)
I added the macro "NAND_NO_SUBPAGE_WRITE" to the 0xD3 NAND id.
Not sure if this is the same thing but there's a similar U0D -> U0E transition for another Samsung part that went from allowing 4 NOPs to 1 NOP. NOP = Number of Partial Program Cycles. Check if that's the same thing for you, and if that's the case you can change the driver not to use partial programming.
Awesome! Thanks for your help here. I went back and looked at the specification for both the rev D and rev E parts. I confirmed that the U0D part has 4 NOPs and the U0E part has 1 NOP. I rebuilt the UBI file system image(mkfs.ubifs) and the UBI raw NAND binary image(ubinize) with the sub-page size set equal to the page size(2048) and the error moved. The kernel is reporting a sub-page size of 512B. Is there something in the kernel code that has this NAND flash part hard coded to a 512B sub-page size? Below is the output from the console window:
UBI: attaching mtd4 to ubi0
UBI: physical eraseblock size: 131072 bytes (128 KiB)
UBI: logical eraseblock size: 129024 bytes
UBI: smallest flash I/O unit: 2048
UBI: sub-page size: 512
UBI: VID header offset: 512 (aligned 512)
UBI: data offset: 2048
UBI error: validate_ec_hdr: bad VID header offset 2048, expected 512
UBI error: validate_ec_hdr: bad EC header
UBI error: ubi_io_read_ec_hdr: validation failed for PEB 0
UBI error: ubi_init: cannot attach mtd4
UBI error: ubi_init: UBI error: cannot initialize UBI, error -22