From 63bce97cbd521fd464c2e11bfbb034edf602f68c Mon Sep 17 00:00:00 2001 From: Richard Eoin Meadows Date: Mon, 26 May 2014 13:25:53 +0100 Subject: [PATCH] PLATFORM_FATAL_ERRORs are now caught even when they happen in the initial JTAG scan that occours during platform_init. Previously any fatal errors that occoured during this scan caused a hardfault. --- src/platforms/f4discovery/platform.c | 5 +++++ src/platforms/native/platform.c | 5 +++++ src/platforms/stlink/platform.c | 5 +++++ src/platforms/swlink/platform.c | 5 +++++ 4 files changed, 20 insertions(+) diff --git a/src/platforms/f4discovery/platform.c b/src/platforms/f4discovery/platform.c index 5b073e9c..efe80506 100644 --- a/src/platforms/f4discovery/platform.c +++ b/src/platforms/f4discovery/platform.c @@ -92,6 +92,11 @@ int platform_init(void) cdcacm_init(); + // Set recovery point + if (setjmp(fatal_error_jmpbuf)) { + return 0; // Do nothing on failure + } + jtag_scan(NULL); return 0; diff --git a/src/platforms/native/platform.c b/src/platforms/native/platform.c index cb9e69e0..81a54d8f 100644 --- a/src/platforms/native/platform.c +++ b/src/platforms/native/platform.c @@ -140,6 +140,11 @@ int platform_init(void) cdcacm_init(); usbuart_init(); + // Set recovery point + if (setjmp(fatal_error_jmpbuf)) { + return 0; // Do nothing on failure + } + jtag_scan(NULL); return 0; diff --git a/src/platforms/stlink/platform.c b/src/platforms/stlink/platform.c index 1369c37a..cf2d9546 100644 --- a/src/platforms/stlink/platform.c +++ b/src/platforms/stlink/platform.c @@ -121,6 +121,11 @@ int platform_init(void) cdcacm_init(); + // Set recovery point + if (setjmp(fatal_error_jmpbuf)) { + return 0; // Do nothing on failure + } + jtag_scan(NULL); return 0; diff --git a/src/platforms/swlink/platform.c b/src/platforms/swlink/platform.c index 0f5695db..74f86912 100644 --- a/src/platforms/swlink/platform.c +++ b/src/platforms/swlink/platform.c @@ -99,6 +99,11 @@ int platform_init(void) cdcacm_init(); + // Set recovery point + if (setjmp(fatal_error_jmpbuf)) { + return 0; // Do nothing on failure + } + jtag_scan(NULL); return 0;