
Peter Tyser ptyser@xes-inc.com wrote on 2010/10/19 20:39:41:
It seems like my board uses the warm start vector at all times. Padding with 4 nop's after the _start symbol fixes the problem. It might be due to a somewhat peculiar reset design but I cannot understand why. Does this work for everyone else using 83xx?
Odd... I don't have an 83xx board to test on unfortunately. Nothing jumps out as being obviously wrong in the assembly:
The difference is that I suspect execution starts at 0xXXXXXX110
rather
than 0xXXXXXX100. BTW, I have my reset vector at 0x0
What causes a warm reset?
My understanding is that a warm reset on the 8xxx CPUs isn't really a hardware reset - its just when code explicitly jumps to the warm reset entry point. For example, this board used to jump to _start_warm when "reset" was ran in U-Boot:
http://git.denx.de/?p=u-boot.git;a=commitdiff;h=3792d7436e2bf881b6abdede5a48...
During normal use I thought that the reset entry point was always 0xXXXXX100 and a warm reset would never occur.
I am not so sure about this. Perhaps the Freescale guys can set us straight?
What is the power on reset process like on your board?
A bit fuzzy ATM, will have to look at that.