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