Add support for dumping board-specific information on assertion. From David Sidrane

This commit is contained in:
Gregory Nutt
2015-03-04 07:00:29 -06:00
parent 466b69fe00
commit a5043d5e60
14 changed files with 61 additions and 0 deletions
+6
View File
@@ -352,6 +352,12 @@ void up_assert(const uint8_t *filename, int lineno)
lldbg("Assertion failed at file:%s line: %d\n", lldbg("Assertion failed at file:%s line: %d\n",
filename, lineno); filename, lineno);
#endif #endif
up_dumpstate(); up_dumpstate();
#ifdef CONFIG_BOARD_CRASHDUMP
board_crashdump(up_getsp(), g_readytorun.head, filename, lineno);
#endif
_up_assert(EXIT_FAILURE); _up_assert(EXIT_FAILURE);
} }
+5
View File
@@ -369,5 +369,10 @@ void up_assert(const uint8_t *filename, int lineno)
#endif #endif
up_dumpstate(); up_dumpstate();
#ifdef CONFIG_BOARD_CRASHDUMP
board_crashdump(up_getsp(), g_readytorun.head, filename, lineno);
#endif
_up_assert(EXIT_FAILURE); _up_assert(EXIT_FAILURE);
} }
+5
View File
@@ -367,5 +367,10 @@ void up_assert(const uint8_t *filename, int lineno)
filename, lineno); filename, lineno);
#endif #endif
up_dumpstate(); up_dumpstate();
#ifdef CONFIG_BOARD_CRASHDUMP
board_crashdump(up_getsp(), g_readytorun.head, filename, lineno);
#endif
_up_assert(EXIT_FAILURE); _up_assert(EXIT_FAILURE);
} }
+5
View File
@@ -378,5 +378,10 @@ void up_assert(const uint8_t *filename, int lineno)
#endif #endif
up_dumpstate(); up_dumpstate();
#ifdef CONFIG_BOARD_CRASHDUMP
board_crashdump(up_getsp(), g_readytorun.head, filename, lineno);
#endif
_up_assert(EXIT_FAILURE); _up_assert(EXIT_FAILURE);
} }
+1
View File
@@ -46,6 +46,7 @@
#include <nuttx/kmalloc.h> #include <nuttx/kmalloc.h>
#include <nuttx/arch.h> #include <nuttx/arch.h>
#include <nuttx/board.h>
#include <arch/board/board.h> #include <arch/board/board.h>
#include "up_arch.h" #include "up_arch.h"
+4
View File
@@ -175,6 +175,10 @@ void up_assert(const uint8_t *filename, int lineno)
up_dumpstate(); up_dumpstate();
#ifdef CONFIG_BOARD_CRASHDUMP
board_crashdump(up_getsp(), g_readytorun.head, filename, lineno);
#endif
#ifdef CONFIG_ARCH_USBDUMP #ifdef CONFIG_ARCH_USBDUMP
/* Dump USB trace data */ /* Dump USB trace data */
+5
View File
@@ -337,5 +337,10 @@ void up_assert(const uint8_t *filename, int lineno)
#endif #endif
up_dumpstate(); up_dumpstate();
#ifdef CONFIG_BOARD_CRASHDUMP
board_crashdump(up_getsp(), g_readytorun.head, filename, lineno);
#endif
_up_assert(EXIT_FAILURE); _up_assert(EXIT_FAILURE);
} }
+4
View File
@@ -181,5 +181,9 @@ void up_assert(const uint8_t *filename, int lineno)
(void)usbtrace_enumerate(assert_tracecallback, NULL); (void)usbtrace_enumerate(assert_tracecallback, NULL);
#endif #endif
#ifdef CONFIG_BOARD_CRASHDUMP
board_crashdump(up_getsp(), g_readytorun.head, filename, lineno);
#endif
_up_assert(EXIT_FAILURE); _up_assert(EXIT_FAILURE);
} }
+4
View File
@@ -487,6 +487,10 @@ void up_assert(const uint8_t *filename, int line)
{ {
fprintf(stderr, "Assertion failed at file:%s line: %d\n", filename, line); fprintf(stderr, "Assertion failed at file:%s line: %d\n", filename, line);
#ifdef CONFIG_BOARD_CRASHDUMP
board_crashdump(up_getsp(), g_readytorun.head, filename, line);
#endif
// in interrupt context or idle task means kernel error // in interrupt context or idle task means kernel error
// which will stop the OS // which will stop the OS
// if in user space just terminate the task // if in user space just terminate the task
+4
View File
@@ -169,5 +169,9 @@ void up_assert(const uint8_t *filename, int lineno)
(void)usbtrace_enumerate(assert_tracecallback, NULL); (void)usbtrace_enumerate(assert_tracecallback, NULL);
#endif #endif
#ifdef CONFIG_BOARD_CRASHDUMP
board_crashdump(up_getsp(), g_readytorun.head, filename, lineno);
#endif
_up_assert(EXIT_FAILURE); _up_assert(EXIT_FAILURE);
} }
+5
View File
@@ -81,5 +81,10 @@ int main(int argc, char **argv, char **envp)
void up_assert(const uint8_t *filename, int line) void up_assert(const uint8_t *filename, int line)
{ {
fprintf(stderr, "Assertion failed at file:%s line: %d\n", filename, line); fprintf(stderr, "Assertion failed at file:%s line: %d\n", filename, line);
#ifdef CONFIG_BOARD_CRASHDUMP
board_crashdump(up_getsp(), g_readytorun.head, filename, line);
#endif
longjmp(sim_abort, 1); longjmp(sim_abort, 1);
} }
+5
View File
@@ -299,5 +299,10 @@ void up_assert(const uint8_t *filename, int lineno)
#endif #endif
up_dumpstate(); up_dumpstate();
#ifdef CONFIG_BOARD_CRASHDUMP
board_crashdump(up_getsp(), g_readytorun.head, filename, lineno);
#endif
_up_assert(EXIT_FAILURE); _up_assert(EXIT_FAILURE);
} }
+4
View File
@@ -181,5 +181,9 @@ void up_assert(void)
(void)usbtrace_enumerate(assert_tracecallback, NULL); (void)usbtrace_enumerate(assert_tracecallback, NULL);
#endif #endif
#ifdef CONFIG_BOARD_CRASHDUMP
board_crashdump(up_getsp(), g_readytorun.head, filename, lineno);
#endif
_up_assert(EXIT_FAILURE); _up_assert(EXIT_FAILURE);
} }
+4
View File
@@ -180,5 +180,9 @@ void up_assert(void)
(void)usbtrace_enumerate(assert_tracecallback, NULL); (void)usbtrace_enumerate(assert_tracecallback, NULL);
#endif #endif
#ifdef CONFIG_BOARD_CRASHDUMP
board_crashdump(up_getsp(), g_readytorun.head, filename, lineno);
#endif
_up_assert(EXIT_FAILURE); _up_assert(EXIT_FAILURE);
} }