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?
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.