NAND Flash UnCorrectable RS-ECC Error on the iMX35

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

NAND Flash UnCorrectable RS-ECC Error on the iMX35

跳至解决方案
6,715 次查看
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.

标签 (1)
1 解答
3,413 次查看
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.

在原帖中查看解决方案

4 回复数
3,413 次查看
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 项奖励
回复
3,413 次查看
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.

3,414 次查看
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.

3,413 次查看
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 项奖励
回复