Add test code for the stack overflow handler
This commit is contained in:
parent
a614268c94
commit
e6d520cf6e
|
|
@ -1820,13 +1820,40 @@ static void lcd_serial_dump()
|
||||||
}
|
}
|
||||||
#endif //MENU_SERIAL_DUMP
|
#endif //MENU_SERIAL_DUMP
|
||||||
|
|
||||||
#if defined(WATCHDOG) && defined(DEBUG_BUILD) && defined(EMERGENCY_HANDLERS)
|
#defined(DEBUG_BUILD) && defined(EMERGENCY_HANDLERS)
|
||||||
|
#include <avr/wdt.h>
|
||||||
|
|
||||||
|
#ifdef WATCHDOG
|
||||||
static void lcd_wdr_crash()
|
static void lcd_wdr_crash()
|
||||||
{
|
{
|
||||||
while (1);
|
while (1);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static uint8_t lcd_stack_crash_(uint8_t arg, uint32_t sp = 0)
|
||||||
|
{
|
||||||
|
// populate the stack with an increasing value for ease of testing
|
||||||
|
volatile uint16_t tmp __attribute__((unused)) = sp;
|
||||||
|
|
||||||
|
_delay(arg);
|
||||||
|
uint8_t ret = lcd_stack_crash_(arg, SP);
|
||||||
|
|
||||||
|
// required to avoid tail call elimination and to slow down the stack growth
|
||||||
|
_delay(ret);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void lcd_stack_crash()
|
||||||
|
{
|
||||||
|
#ifdef WATCHDOG
|
||||||
|
wdt_disable();
|
||||||
|
#endif
|
||||||
|
// delay choosen in order to hit the stack-check in the temperature isr reliably
|
||||||
|
lcd_stack_crash_(10);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
//! @brief Show Support Menu
|
//! @brief Show Support Menu
|
||||||
//!
|
//!
|
||||||
|
|
@ -2027,9 +2054,12 @@ static void lcd_support_menu()
|
||||||
MENU_ITEM_FUNCTION_P(_i("Dump to serial"), lcd_serial_dump);
|
MENU_ITEM_FUNCTION_P(_i("Dump to serial"), lcd_serial_dump);
|
||||||
#endif
|
#endif
|
||||||
#ifdef DEBUG_BUILD
|
#ifdef DEBUG_BUILD
|
||||||
#if defined(WATCHDOG) && defined(EMERGENCY_HANDLERS)
|
#ifdef EMERGENCY_HANDLERS
|
||||||
|
#ifdef WATCHDOG
|
||||||
MENU_ITEM_FUNCTION_P(PSTR("WDR crash"), lcd_wdr_crash);
|
MENU_ITEM_FUNCTION_P(PSTR("WDR crash"), lcd_wdr_crash);
|
||||||
#endif
|
#endif //WATCHDOG
|
||||||
|
MENU_ITEM_FUNCTION_P(PSTR("Stack crash"), lcd_stack_crash);
|
||||||
|
#endif //EMERGENCY_HANDLERS
|
||||||
MENU_ITEM_SUBMENU_P(PSTR("Debug"), lcd_menu_debug);////MSG_DEBUG c=18
|
MENU_ITEM_SUBMENU_P(PSTR("Debug"), lcd_menu_debug);////MSG_DEBUG c=18
|
||||||
#endif /* DEBUG_BUILD */
|
#endif /* DEBUG_BUILD */
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue