We have a problem with the board we've developed.
What works well:
- USB OTG works; downloading u-boot, initramfs and uimage to DDR memory works; all mentioned software and flashing SD card works
- u-boot downloaded over USB starts, uimage downloaded over USB starts, everything works correctly
- u-boot downloaded over USB can start uimage from SD card, uimage from SD card launches correctly and there are no issues with file system on SD
Booting from SD, however, doesn't seem to work at all. We believe all the boot configuration pins, gpios, voltages, etc to be set correctly. DCD initialization table must be good because boot and everything else work over USB. DDR stress tool reports no errors at all. Everything seems to work - except boot.
We've seen on the scope that there is about 80 ms of some activity on SD card pins at boot time, which roughly should be enough to read the entire u-boot. Afterwards, nothing happens/boot doesn't start, as far as we can say. A LED that is otherwise toggled in board_init(), remains unchanged; no printouts at all.
Partitions on SD card appear to be correct. The first four bytes at offset 0x400 match the four bytes at same offset in u-boot.bin. There is nothing particularly specific in ucl2.xml for our board. We've also tried toggling all the BOOT_CFG options that seemed even remotely relevant (... though there are many and we may have missed something).
We've checked power supplies, all seem good, POR goes high about 10 ms after all voltages become stable.
If we remove the SD card, CPU correctly goes into serial downloader mode.
Any hints what we could try?
Some additional, possibly relevant information. MMC flash behaves identically to SD card: everything apparently written correctly and readable, but boot won't start. SPI flash exhibits a different (related?) problem - kernel detects it not as 25P64 that we know it is, but instead non-jedec-25P05 with far smaller capacity, insufficient even for uboot.