[FL-3299] furi_crash: added C2 status; added fw-version gdb command (#2638)

* furi_crash: added C2 status
* debug: Added "fw-version" gdb command; vscode: updated configuration to use new command
* debug: added fw-info command to debug_other session
* Toolbox: versioned structure for Version
* debug: fw-version: no longer needs an ELF file loaded
* debug: flipperversion: removed unused variable
* debug_other: print running fw version

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
hedger
2023-05-09 07:31:39 +09:00
committed by GitHub
co-authored by Aleksandr Kutuzov
parent 268b88be0d
commit 241b4ef6e4
12 changed files with 205 additions and 22 deletions
+2 -1
View File
@@ -1,5 +1,5 @@
entry,status,name,type,params
Version,+,26.0,,
Version,+,26.1,,
Header,+,applications/services/bt/bt_service/bt.h,,
Header,+,applications/services/cli/cli.h,,
Header,+,applications/services/cli/cli_vcp.h,,
@@ -823,6 +823,7 @@ Function,+,furi_hal_bt_change_app,_Bool,"FuriHalBtProfile, GapEventCallback, voi
Function,+,furi_hal_bt_clear_white_list,_Bool,
Function,+,furi_hal_bt_dump_state,void,FuriString*
Function,+,furi_hal_bt_ensure_c2_mode,_Bool,BleGlueC2Mode
Function,-,furi_hal_bt_get_hardfault_info,const FuriHalBtHardfaultInfo*,
Function,+,furi_hal_bt_get_key_storage_buff,void,"uint8_t**, uint16_t*"
Function,+,furi_hal_bt_get_radio_stack,FuriHalBtStack,
Function,+,furi_hal_bt_get_rssi,float,
1 entry status name type params
2 Version + 26.0 26.1
3 Header + applications/services/bt/bt_service/bt.h
4 Header + applications/services/cli/cli.h
5 Header + applications/services/cli/cli_vcp.h
823 Function + furi_hal_bt_clear_white_list _Bool
824 Function + furi_hal_bt_dump_state void FuriString*
825 Function + furi_hal_bt_ensure_c2_mode _Bool BleGlueC2Mode
826 Function - furi_hal_bt_get_hardfault_info const FuriHalBtHardfaultInfo*
827 Function + furi_hal_bt_get_key_storage_buff void uint8_t**, uint16_t*
828 Function + furi_hal_bt_get_radio_stack FuriHalBtStack
829 Function + furi_hal_bt_get_rssi float
+2 -1
View File
@@ -1,5 +1,5 @@
entry,status,name,type,params
Version,+,26.0,,
Version,+,26.1,,
Header,+,applications/services/bt/bt_service/bt.h,,
Header,+,applications/services/cli/cli.h,,
Header,+,applications/services/cli/cli_vcp.h,,
@@ -1004,6 +1004,7 @@ Function,+,furi_hal_bt_change_app,_Bool,"FuriHalBtProfile, GapEventCallback, voi
Function,+,furi_hal_bt_clear_white_list,_Bool,
Function,+,furi_hal_bt_dump_state,void,FuriString*
Function,+,furi_hal_bt_ensure_c2_mode,_Bool,BleGlueC2Mode
Function,-,furi_hal_bt_get_hardfault_info,const FuriHalBtHardfaultInfo*,
Function,+,furi_hal_bt_get_key_storage_buff,void,"uint8_t**, uint16_t*"
Function,+,furi_hal_bt_get_radio_stack,FuriHalBtStack,
Function,+,furi_hal_bt_get_rssi,float,
1 entry status name type params
2 Version + 26.0 26.1
3 Header + applications/services/bt/bt_service/bt.h
4 Header + applications/services/cli/cli.h
5 Header + applications/services/cli/cli_vcp.h
1004 Function + furi_hal_bt_clear_white_list _Bool
1005 Function + furi_hal_bt_dump_state void FuriString*
1006 Function + furi_hal_bt_ensure_c2_mode _Bool BleGlueC2Mode
1007 Function - furi_hal_bt_get_hardfault_info const FuriHalBtHardfaultInfo*
1008 Function + furi_hal_bt_get_key_storage_buff void uint8_t**, uint16_t*
1009 Function + furi_hal_bt_get_radio_stack FuriHalBtStack
1010 Function + furi_hal_bt_get_rssi float
@@ -19,6 +19,8 @@
/* Time, in ms, to wait for mode transition before crashing */
#define C2_MODE_SWITCH_TIMEOUT 10000
#define FURI_HAL_BT_HARDFAULT_INFO_MAGIC 0x1170FD0F
FuriMutex* furi_hal_bt_core2_mtx = NULL;
static FuriHalBtStack furi_hal_bt_stack = FuriHalBtStackUnknown;
@@ -440,3 +442,12 @@ bool furi_hal_bt_ensure_c2_mode(BleGlueC2Mode mode) {
FURI_LOG_E(TAG, "Failed to switch C2 mode: %d", fw_start_res);
return false;
}
const FuriHalBtHardfaultInfo* furi_hal_bt_get_hardfault_info() {
/* AN5289, 4.8.2 */
const FuriHalBtHardfaultInfo* info = (FuriHalBtHardfaultInfo*)(SRAM2A_BASE);
if(info->magic != FURI_HAL_BT_HARDFAULT_INFO_MAGIC) {
return NULL;
}
return info;
}
@@ -224,6 +224,19 @@ uint32_t furi_hal_bt_get_transmitted_packets();
*/
bool furi_hal_bt_ensure_c2_mode(BleGlueC2Mode mode);
typedef struct {
uint32_t magic;
uint32_t source_pc;
uint32_t source_lr;
uint32_t source_sp;
} FuriHalBtHardfaultInfo;
/** Get hardfault info
*
* @return hardfault info. NULL if no hardfault
*/
const FuriHalBtHardfaultInfo* furi_hal_bt_get_hardfault_info();
#ifdef __cplusplus
}
#endif