AnsweredAssumed Answered

i.mx537 can't boot from nand汉

Question asked by henry_lee on Mar 25, 2013
Latest reply on Apr 1, 2013 by henry_lee

Hi ,

 

 

We have developed a board based on the i.mx537,We try to boot from nand flash (MT29F4G08) with u-boot-2009.08.But we got some error when boot.

 

 

We modify mx53_ard.c and mx53_ard.h ,add setup_nfc function and some Macro definition in u-boot source. also add nand device and partitions in mx53_ard.c of linux kernel.  Then we download uboot.bin and uImage with MFG TOOL.

 

 

Sometimes(80%)we got noting.Another(20%),we got u-boot info in serial,u-boot can read correct Nand flash ID.But can't load kernel,the message as follow:

 

 

NAND read: device 0 offset 0x1000000, size 0x500000

UnCorrectable RS-ECC Error

UnCorrectable RS-ECC Error

.

.

UnCorrectable RS-ECC Error

5242880 bytes read: OK

## Booting kernel from Legacy Image at 70800000 ...

   Image Name:   Linux-<opal.wolf.henry.lee>

   Image Type:   ARM Linux Kernel Image (uncompressed)

   Data Size:    3128204 Bytes =  3 MB

   Load Address: 70008000

   Entry Point:  70008000

   Verifying Checksum ... Bad Data CRC

ERROR: can't get kernel image!

 

 

What is it that I'm still doing wrong? please help .

 

 

Thanks

 

 

lee

 

 

 

 

Our hardware interface of nand flash :

    i.mx537                      MT29F4G08  

NANDF_ALE (ALT0)==> ALE

NANDF_CLE (ALT0)==> CLE

NANDF_CS0 (ALT0)==> CS0

PATA_DATA0 (ALT3)==>DATA0

PATA_DATA1 (ALT3)==>DATA1

PATA_DATA2 (ALT3)==>DATA2

PATA_DATA3 (ALT3)==>DATA3

PATA_DATA4 (ALT3)==>DATA4

PATA_DATA5 (ALT3)==>DATA5

PATA_DATA6 (ALT3)==>DATA6

PATA_DATA7 (ALT3)==>DATA7

NANDF_RB0 (ALT0)==> RB

NANDF_RE_B (ALT0)==>RE

NANDF_WE_B (ALT0)==>WE

NANDF_WP_B (ALT0)==>WP

 

 

When boot from nand , the BOOT_CFG pin as follow:

BOOT_MODE0==>0

BOOT_MODE1==>0 //internal boot

BOOT_CFG1_7==>1 //boot from nand

BOOT_CFG1_6==>0 //muxed on PATA pads

BOOT_CFG1_5==>0

BOOT_CFG1_4==>0 //no interleaving

BOOT_CFG1_3==>1

BOOT_CFG1_2==>0 //4 address cycles

BOOT_CFG2_7==>0

BOOT_CFG2_6==>1 //2K+64byte(4-bit ECC)

BOOT_CFG2_5==>0 //8 bit BUS width

BOOT_CFG3_7==>0 //stride size =1 block

BOOT_CFG3_6==>0 //Non LBA

BOOT_CFG3_5==>0 //Not use R/B signal

BOOT_CFG3_4==>0

BOOT_CFG3_3==>0 //4 bit ECC

BOOT_CFG3_2==>0

BOOT_CFG3_1==>1 //64 pages per block

Outcomes