NAND Flash UnCorrectable RS-ECC Error on the iMX35

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

NAND Flash UnCorrectable RS-ECC Error on the iMX35

Jump to solution
5,393 Views
jdeg
Contributor II

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.

Labels (1)
1 Solution
2,091 Views
KursadOney
NXP Employee
NXP Employee

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.

View solution in original post

4 Replies
2,091 Views
afalt
Contributor I

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

0 Kudos
Reply
2,091 Views
jdeg
Contributor II

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.

2,092 Views
KursadOney
NXP Employee
NXP Employee

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.

2,091 Views
jdeg
Contributor II

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

0 Kudos
Reply