
Norman Cheung wrote:
U-boot fails intermittently at the start. When it fails, it didn't make it to my first printf statement. When I use JTAG to debug it, it always works.
If the board has been let without power for 1+ hour, it will also boot up when I apply power to it(something to do with the battery perhaps). Once it booted up,it is very stable. I can run Mtest etc.
...
The only thing we can think of is Reset cycle or some h/ware init code in u-boot that might not be compatible with at91bootstrap's init code.
We had *exactly* the same problem with our AT91RM9200 based custom board recently. After battling lots of days trying to find a bug within software we realized that problem actually hides in hardware. Boards reset line is controlled via small supervisor AVR. After tuning that watchdog properly according to datasheets and leaving small reserve, finally board is working as supposed. Trying to fix this I believe we read half of the internet topics related to that :), and I have found similar problem description in details (don't remember where, though). There was one guy claiming that there should be correct reset procedure during cold reset, or AT91 CPU's memory controller will fail to initialize. Based on that, we had reviewed our watchdog timings, have separated NRST and NTRST (!) giving each personal delay, and now it rocks.
I sincerely believe that french engineers of Atmel's EK/DK boards are too competent to make such a mistake, but probably it is worth trying to test this.
Kind regards, Andrejs Cainikovs.