.. _ecu_reset: ECU Reset ==================== OpenECU can reset for various reasons. The **put_Reset** block provides an output flag for the events below. The flag is set to 1 for the event causing the last reset. +---------------+------------------------------------------+---------------------------------------------------+ | **Flag** | **Cause** | **How to Debug** | +===============+==========================================+===================================================+ | power_reset | Loss of power to the module | - Check intermittent power connections | | | | - Monitor for voltage drops | +---------------+------------------------------------------+---------------------------------------------------+ | watchdog_reset| Watchdog timeout | - Monitor CPU load | | | | - Verify usage of Kick Watchdog | +---------------+------------------------------------------+---------------------------------------------------+ | access_reset | Invalid memory access | | +---------------+------------------------------------------+---------------------------------------------------+ | fp_reset | Invalid floating-point operation | | +---------------+------------------------------------------+---------------------------------------------------+ | mem_reset | Memory corruption | - Reset or reprogram might solve | | | | - If persistent, contact OpenECU Support | +---------------+------------------------------------------+---------------------------------------------------+ | forced_reset | Forced reset by application | - Check Reset block input | +---------------+------------------------------------------+---------------------------------------------------+ | unknown_reset | Other unknown causes | - Check for stack overflow | | | | - Monitor resource usage | +---------------+------------------------------------------+---------------------------------------------------+ If the application can't run long enough to read reset flags, consult the :ref:`Flash Code Output `. Watchdog Reset -------------- The ECU has an internal watchdog requiring periodic updates. The **psc_CpuLoading** block can monitor CPU load. Absent a **psc_KickWatchdog** block, OpenECU updates the watchdog automatically. .. note:: Infinite loops could cause watchdog resets, although unlikely in pure Simulink models. Stack Overflow -------------- Monitor stack usage with the **psc_StackUsed** block. The default stack size is 8192 bytes. To change it, see :ref:`How to change the stack size `.