diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/targets/f6/Inc/FreeRTOSConfig.h | 3 | ||||
-rw-r--r-- | firmware/targets/f6/Src/main.c | 3 | ||||
-rw-r--r-- | firmware/targets/f6/furi-hal/furi-hal-interrupt.c | 14 | ||||
-rw-r--r-- | firmware/targets/f6/furi-hal/furi-hal-os.c | 3 | ||||
-rw-r--r-- | firmware/targets/f6/furi-hal/furi-hal-rtc.c | 8 | ||||
-rw-r--r-- | firmware/targets/f7/Inc/FreeRTOSConfig.h | 3 | ||||
-rw-r--r-- | firmware/targets/f7/Src/main.c | 3 | ||||
-rw-r--r-- | firmware/targets/f7/furi-hal/furi-hal-interrupt.c | 14 | ||||
-rw-r--r-- | firmware/targets/f7/furi-hal/furi-hal-os.c | 3 | ||||
-rw-r--r-- | firmware/targets/f7/furi-hal/furi-hal-rtc.c | 8 | ||||
-rw-r--r-- | firmware/targets/furi-hal-include/furi-hal-rtc.h | 5 |
11 files changed, 37 insertions, 30 deletions
diff --git a/firmware/targets/f6/Inc/FreeRTOSConfig.h b/firmware/targets/f6/Inc/FreeRTOSConfig.h index 4a031f70..6235a2d4 100644 --- a/firmware/targets/f6/Inc/FreeRTOSConfig.h +++ b/firmware/targets/f6/Inc/FreeRTOSConfig.h @@ -119,7 +119,8 @@ See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ /* Normal assert() semantics without relying on the provision of an assert.h header file. */ -#define configASSERT( x ) if ((x) == 0) { taskDISABLE_INTERRUPTS(); asm("bkpt 1"); for( ;; ); } +#include <furi/check.h> +#define configASSERT( x ) if ((x) == 0) { furi_crash("FreeRTOS Assert"); } /* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS standard names. */ diff --git a/firmware/targets/f6/Src/main.c b/firmware/targets/f6/Src/main.c index a546086f..44c5013e 100644 --- a/firmware/targets/f6/Src/main.c +++ b/firmware/targets/f6/Src/main.c @@ -30,8 +30,7 @@ int main(void) { } void Error_Handler(void) { - asm("bkpt 1"); - while(1) {} + furi_crash("ErrorHandler"); } #ifdef USE_FULL_ASSERT diff --git a/firmware/targets/f6/furi-hal/furi-hal-interrupt.c b/firmware/targets/f6/furi-hal/furi-hal-interrupt.c index 4ff2bc7b..8e24c488 100644 --- a/firmware/targets/f6/furi-hal/furi-hal-interrupt.c +++ b/firmware/targets/f6/furi-hal/furi-hal-interrupt.c @@ -182,25 +182,19 @@ void NMI_Handler(void) { } void HardFault_Handler(void) { - if ((*(volatile uint32_t *)CoreDebug_BASE) & (1 << 0)) { - __asm("bkpt 1"); - } - while (1) {} + furi_crash("HardFault"); } void MemManage_Handler(void) { - __asm("bkpt 1"); - while (1) {} + furi_crash("MemManage"); } void BusFault_Handler(void) { - __asm("bkpt 1"); - while (1) {} + furi_crash("BusFault"); } void UsageFault_Handler(void) { - __asm("bkpt 1"); - while (1) {} + furi_crash("UsageFault"); } void DebugMon_Handler(void) { diff --git a/firmware/targets/f6/furi-hal/furi-hal-os.c b/firmware/targets/f6/furi-hal/furi-hal-os.c index cd182136..f166c5ec 100644 --- a/firmware/targets/f6/furi-hal/furi-hal-os.c +++ b/firmware/targets/f6/furi-hal/furi-hal-os.c @@ -140,6 +140,5 @@ void vPortSuppressTicksAndSleep(TickType_t expected_idle_ticks) { } void vApplicationStackOverflowHook(TaskHandle_t xTask, char * pcTaskName) { - asm("bkpt 1"); - while(1) {}; + furi_crash("StackOverflow"); } diff --git a/firmware/targets/f6/furi-hal/furi-hal-rtc.c b/firmware/targets/f6/furi-hal/furi-hal-rtc.c index 45498077..a13913a1 100644 --- a/firmware/targets/f6/furi-hal/furi-hal-rtc.c +++ b/firmware/targets/f6/furi-hal/furi-hal-rtc.c @@ -153,3 +153,11 @@ bool furi_hal_rtc_validate_datetime(FuriHalRtcDateTime* datetime) { return !invalid; } + +void furi_hal_rtc_set_fault_data(uint32_t value) { + furi_hal_rtc_set_register(FuriHalRtcRegisterFaultData, value); +} + +uint32_t furi_hal_rtc_get_fault_data() { + return furi_hal_rtc_get_register(FuriHalRtcRegisterFaultData); +} diff --git a/firmware/targets/f7/Inc/FreeRTOSConfig.h b/firmware/targets/f7/Inc/FreeRTOSConfig.h index 4a031f70..6235a2d4 100644 --- a/firmware/targets/f7/Inc/FreeRTOSConfig.h +++ b/firmware/targets/f7/Inc/FreeRTOSConfig.h @@ -119,7 +119,8 @@ See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ /* Normal assert() semantics without relying on the provision of an assert.h header file. */ -#define configASSERT( x ) if ((x) == 0) { taskDISABLE_INTERRUPTS(); asm("bkpt 1"); for( ;; ); } +#include <furi/check.h> +#define configASSERT( x ) if ((x) == 0) { furi_crash("FreeRTOS Assert"); } /* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS standard names. */ diff --git a/firmware/targets/f7/Src/main.c b/firmware/targets/f7/Src/main.c index a546086f..44c5013e 100644 --- a/firmware/targets/f7/Src/main.c +++ b/firmware/targets/f7/Src/main.c @@ -30,8 +30,7 @@ int main(void) { } void Error_Handler(void) { - asm("bkpt 1"); - while(1) {} + furi_crash("ErrorHandler"); } #ifdef USE_FULL_ASSERT diff --git a/firmware/targets/f7/furi-hal/furi-hal-interrupt.c b/firmware/targets/f7/furi-hal/furi-hal-interrupt.c index 4ff2bc7b..8e24c488 100644 --- a/firmware/targets/f7/furi-hal/furi-hal-interrupt.c +++ b/firmware/targets/f7/furi-hal/furi-hal-interrupt.c @@ -182,25 +182,19 @@ void NMI_Handler(void) { } void HardFault_Handler(void) { - if ((*(volatile uint32_t *)CoreDebug_BASE) & (1 << 0)) { - __asm("bkpt 1"); - } - while (1) {} + furi_crash("HardFault"); } void MemManage_Handler(void) { - __asm("bkpt 1"); - while (1) {} + furi_crash("MemManage"); } void BusFault_Handler(void) { - __asm("bkpt 1"); - while (1) {} + furi_crash("BusFault"); } void UsageFault_Handler(void) { - __asm("bkpt 1"); - while (1) {} + furi_crash("UsageFault"); } void DebugMon_Handler(void) { diff --git a/firmware/targets/f7/furi-hal/furi-hal-os.c b/firmware/targets/f7/furi-hal/furi-hal-os.c index cd182136..f166c5ec 100644 --- a/firmware/targets/f7/furi-hal/furi-hal-os.c +++ b/firmware/targets/f7/furi-hal/furi-hal-os.c @@ -140,6 +140,5 @@ void vPortSuppressTicksAndSleep(TickType_t expected_idle_ticks) { } void vApplicationStackOverflowHook(TaskHandle_t xTask, char * pcTaskName) { - asm("bkpt 1"); - while(1) {}; + furi_crash("StackOverflow"); } diff --git a/firmware/targets/f7/furi-hal/furi-hal-rtc.c b/firmware/targets/f7/furi-hal/furi-hal-rtc.c index 45498077..a13913a1 100644 --- a/firmware/targets/f7/furi-hal/furi-hal-rtc.c +++ b/firmware/targets/f7/furi-hal/furi-hal-rtc.c @@ -153,3 +153,11 @@ bool furi_hal_rtc_validate_datetime(FuriHalRtcDateTime* datetime) { return !invalid; } + +void furi_hal_rtc_set_fault_data(uint32_t value) { + furi_hal_rtc_set_register(FuriHalRtcRegisterFaultData, value); +} + +uint32_t furi_hal_rtc_get_fault_data() { + return furi_hal_rtc_get_register(FuriHalRtcRegisterFaultData); +} diff --git a/firmware/targets/furi-hal-include/furi-hal-rtc.h b/firmware/targets/furi-hal-include/furi-hal-rtc.h index 36bf218c..3a00b0da 100644 --- a/firmware/targets/furi-hal-include/furi-hal-rtc.h +++ b/firmware/targets/furi-hal-include/furi-hal-rtc.h @@ -37,6 +37,7 @@ typedef enum { FuriHalRtcRegisterSystem, FuriHalRtcRegisterSystemVersion, FuriHalRtcRegisterLfsFingerprint, + FuriHalRtcRegisterFaultData, } FuriHalRtcRegister; /** Initialize RTC subsystem */ @@ -62,6 +63,10 @@ void furi_hal_rtc_get_datetime(FuriHalRtcDateTime* datetime); bool furi_hal_rtc_validate_datetime(FuriHalRtcDateTime* datetime); +void furi_hal_rtc_set_fault_data(uint32_t value); + +uint32_t furi_hal_rtc_get_fault_data(); + #ifdef __cplusplus } #endif |