@@ -211,24 +211,16 @@ mbed_error_status_t mbed_error_initialize(void)
211
211
//Read report_error_ctx and check if CRC is correct, and with valid status code
212
212
if ((report_error_ctx -> crc_error_ctx == crc_val ) && (report_error_ctx -> is_error_processed == 0 )) {
213
213
is_reboot_error_valid = true;
214
- //Report the error info
215
- #ifndef NDEBUG
216
- printf ("\n== The system has been rebooted due to a fatal error. ==\n" );
217
- #endif
218
214
219
215
//Call the mbed_error_reboot_callback, this enables applications to do some handling before we do the handling
220
216
mbed_error_reboot_callback (report_error_ctx );
221
217
222
218
//We let the callback reset the error info, so check if its still valid and do the rest only if its still valid.
223
- if (report_error_ctx -> error_reboot_count < 0 ) {
219
+ if (report_error_ctx -> error_reboot_count > 0 ) {
224
220
225
221
//Enforce max-reboot only if auto reboot is enabled
226
222
#if MBED_CONF_PLATFORM_FATAL_ERROR_AUTO_REBOOT_ENABLED
227
223
if (report_error_ctx -> error_reboot_count >= MBED_CONF_PLATFORM_ERROR_REBOOT_MAX ) {
228
- //We have rebooted more than enough, hold the system here.
229
- #ifndef NDEBUG
230
- printf ("\n== Reboot count(=%ld) exceeded maximum, system halting ==\n" , report_error_ctx -> error_reboot_count );
231
- #endif
232
224
mbed_halt_system ();
233
225
}
234
226
#endif
@@ -300,6 +292,13 @@ WEAK MBED_NORETURN mbed_error_status_t mbed_error(mbed_error_status_t error_stat
300
292
core_util_critical_section_exit ();
301
293
//We need not call delete_mbed_crc(crc_obj) here as we are going to reset the system anyway, and calling delete while handling a fatal error may cause nested exception
302
294
#if MBED_CONF_PLATFORM_FATAL_ERROR_AUTO_REBOOT_ENABLED && (MBED_CONF_PLATFORM_ERROR_REBOOT_MAX > 0 )
295
+ #ifndef NDEBUG
296
+ mbed_error_printf ("\n= System will be rebooted due to a fatal error =\n" );
297
+ if (report_error_ctx -> error_reboot_count >= MBED_CONF_PLATFORM_ERROR_REBOOT_MAX ) {
298
+ //We have rebooted more than enough, hold the system here.
299
+ mbed_error_printf ("= Reboot count(=%ld) reached maximum, system will halt after rebooting =\n" , report_error_ctx -> error_reboot_count );
300
+ }
301
+ #endif
303
302
system_reset ();//do a system reset to get the system rebooted
304
303
#endif
305
304
#endif
0 commit comments