We have a custom OMAP-L137 board that does not always boot out of SPI0 Flash memory. When it does not boot, we have observed with a scope that there is no activity on the SPI pins. However, we can access the pin scan chain through a JTAG tool and can change the SPI pins that way. When the system does not boot, we do not have a way of examining the processor internals to gain further insight into the failure cause.
When the system does boot, it seems to run our code fine and everything else we have so far checked out in the system appears to work, including UART, sync serial ports, SDRAM, general purpose I/O.
The crystal is running fine at all times; the osc caps are wired to OSCVSS. We believe that we have the bootmode pins configured correctly (SPI0_MISO=high, SPI0_MOSI=low, SPI0_SCK=high, BOOT7=low).. We have monitored their state at reset with a scope to make sure that they are not changing.
We have good clean power, bypassing and proper power sequencing. We have tried running the board off bench supplies to make 100% sure that the supplies are sequenced correctly, but do not see a difference. We have a reliable reset signal.
If the board powers up and boots, we can hit reset any number of times and the board will continue to boot reliably out of the SPI Flash. If the board does not power up and boot, we can very rarely make it boot by placing a scope on the flash control lines or by hitting reset, but mostly not (this could be just coincidence, though). Again, once it boots, it will boot every time upon manual reset until the board is power cycled.
Any thoughts or suggestions on debug strategy would be greatly appreciated. Thanks.