i.MX233, Booting via BCB, ERROR_DDI_SD_MULTI_READ_TIMEOUT

cancel
Showing results for 
Search instead for 
Did you mean: 

i.MX233, Booting via BCB, ERROR_DDI_SD_MULTI_READ_TIMEOUT

506 Views
mbergmann
Contributor II
Hi,

I'm trying to boot from SD card via BCB on i.MX233. The startup sequence looks fine until it comes to my own binary and then I get an ROM error code ERROR_DDI_SD_MULTI_READ_TIMEOUT (0x8020a023). If I boot via MBR all works fine. Playing with the size of my bootloader binary (e.g. by filling the unused code) sometimes make the booting work.

Anyone seen this before?

Here the startup sequence:

LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFC
PowerPrep start initialize power...
Battery Voltage = 4.30V
5v source detected.Valid battery voltage detected.
Booting from battery voltage source.
LLCMay  7 201310:33:34
EMI_CTRL 0x1C084040
FRAC 0x92925E92
init_mddr_mt46h32m16lf_96Mhz
init 00001400
power 0x00820710
Frac 0x92925E92
start change cpu freq
hbus 0x00000003
cpu 0x00010001
L
0x8020a023


Thanks

Mike


Labels (1)
0 Kudos
7 Replies

118 Views
mbergmann
Contributor II

We decided to boot via MBR now.

Nevertheless, if anyone finds a solution for this problem, I would appreciate a message.

Thanks

Mike

0 Kudos

118 Views
mbergmann
Contributor II

I did some more research and tried several different micro SD cards, from 128MB up to 8GB, different vendors. It seems NOT to depend on the card, rather on the ELF binary. If the binary is working, it works on all cards (or on no card otherwise).

In case of failure: The BCB boots up to a certain point all the time. To be specific: it boots until the last LOAD in the startup sequence.

So if the elftosb prints to following sequence:

  LOAD | adr=0x00000000 | len=0x00000f38 | crc=0x88ca9ec4 | flg=0x00000000
[other 70 LOADs]
  FILL | adr=0x000027f8 | len=0x00000024 | ptn=0x00000000
   CALL | adr=0x00000d5c | arg=0x00000000 | flg=0x00000000
   LOAD | adr=0x00000000 | len=0x00000ed8 | crc=0x90323100 | flg=0x00000000
   LOAD | adr=0x00000ed8 | len=0x000000d0 | crc=0xf84d91f6 | flg=0x00000000
   CALL | adr=0x00000cb0 | arg=0x00000000 | flg=0x00000000
   LOAD | adr=0x40000000 | len=0x000005cc | crc=0xb071af08 | flg=0x00000000
   LOAD | adr=0x40001000 | len=0x00012e30 | crc=0x17c2ec17 | flg=0x00000000
   LOAD | adr=0x40013e30 | len=0x00000018 | crc=0x96782872 | flg=0x00000000
   LOAD | adr=0x40013e48 | len=0x000007b0 | crc=0x362f0dbd | flg=0x00000000
  LOAD | adr=0x400145f8 | len=0x0000067f | crc=0x463ebdfd | flg=0x00000000
   FILL | adr=0x40014c78 | len=0x000007b0 | ptn=0x00000000
   FILL | adr=0x40015428 | len=0x0003939d | ptn=0x00000000
   FILL | adr=0x4004e7c8 | len=0x00020408 | ptn=0x00000000
   FILL | adr=0x43e00000 | len=0x00001000 | ptn=0x00000000
   JUMP | adr=0x40000000 | arg=0x00000000 | flg=0x00000000

It starts until the last LOAD (marked bold) and then prints the MULTI_READ_TIMEOUT. Strange: It seems always be the last LOAD in the sequence.

It seems not to depend on the size of the last ELF, I had working ones with 32MB and non working ones with only a few KBs.  Destination of the LOAD operation has no impact, too (regardless if SDRAM or OCRAM).

Is there any alignment the ELF binary has to fulfill if we boot by BCB?

Any idea?

Thanks

Mike


0 Kudos

118 Views
YixingKong
Senior Contributor IV

Mike, please click Correct Answer/Helpful Answer if your question has been answered.

Thanks,

Yixing

0 Kudos

118 Views
fabio_estevam
NXP Employee
NXP Employee

Hi Mike,

What if you boot U-boot and then launch your application from there?

You could use U-boot  2013.04 version.

Regards,

Fabio Estevam

0 Kudos

118 Views
mbergmann
Contributor II

Hi Fabio,

thanks for the sugestion. Unfortunately booting via UBoot is not an option for our product.

Regards

Mike

0 Kudos

118 Views
fabio_estevam
NXP Employee
NXP Employee

Hi Mike,

Just for my understanding: what prevents you from using U-boot in your case?

Regards,

Fabio Estevam

0 Kudos

118 Views
mbergmann
Contributor II

Hi Fabio,

its all about boot time and user experience.

Btw: I doubt that U-Boot would boot without problem via BCB boot code in all circumstances. It seems not to be the user boot code making problems rather that the ROM boot code. Unfortunately nobody seems to use BCB booting with SD cards nowadays. Even Freescales excellent support team has not dev board without the MBR fuse blown on site, so we decided to boot via MBR now.

Thanks

Mike

0 Kudos