I was just about to tell someone what the possible causes are, and thought I'd put it here for others' reference, too.
Reset Line Pulled Low
If the reset line is pulled low, even briefly, the CPU will hard reset. On the Jaguar (0.7-alpha), C6 and R5 are responsible for preventing this from occurring due to noise. Therefore this is unlikely to occur.
Power Supply Briefly Removed
This is the same as turning it off completely for a longer time and then back on again. But quicker. Can only really happen with a bad connector or connection or internally broken wire.
Power Supply Quality Issue
A noisy 5V rail can cause the CPU to lockup or reset. Noise can get here in several ways:
1) Sudden load/unload
2) Oscillating regulator
3) Extreme 12V supply variations
Software Initiated Resets
The firmware has a facility to be told to reset by external software over the serial comms line. The chances of this happening due to noise are extremely low indeed. The firmware has many independent mechanisms to reject bogus packets. Accepted packets of all types must be absolutely perfect.
Hardware Initiated Resets
The MCU has a facility to reset the device if it's not functioning properly. I have this in place on my car, however no other car I'm aware of has this. The version I have is not of sufficient quality for general distribution, hence not shared.
System Reset Generation
System reset generation from the following possible sources (My comments in bold):
- Power on reset - normal behaviour
- Low voltage reset - Low quality supply, possibly during cranking with bad battery
- Illegal address reset - Corruption or bad code
- COP reset - Software controlled or firmware failure (with future fw)
- Loss of clock reset - We don't meet conditions for this. Instead we self-clock and then recover with tell-tales in the log.
- External pin reset - First thing in above list
I may have missed some, and reserve the right to edit the above over time. Feedback welcome, comment below!