Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/flipperzero-firmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorあく <alleteam@gmail.com>2021-09-15 17:40:09 +0300
committerGitHub <noreply@github.com>2021-09-15 17:40:09 +0300
commit72ca76097a9752cc539c22cb8961ee481939eac4 (patch)
tree22d253700986bfcf2def2b22da2c0a2e187dd662 /firmware
parent66f9d946ae0f14d4ad11810a55c7cc638ee315e5 (diff)
[FL-1811] FuriHal: move core2 startup to hal init stage, prevent working with flash controller till core2 startup finish. #704
Diffstat (limited to 'firmware')
-rw-r--r--firmware/targets/f6/ble-glue/app_entry.c2
-rw-r--r--firmware/targets/f6/furi-hal/furi-hal-bt.c30
-rw-r--r--firmware/targets/f6/furi-hal/furi-hal.c1
-rw-r--r--firmware/targets/f7/ble-glue/app_entry.c2
-rw-r--r--firmware/targets/f7/furi-hal/furi-hal-bt.c30
-rw-r--r--firmware/targets/f7/furi-hal/furi-hal.c1
6 files changed, 32 insertions, 34 deletions
diff --git a/firmware/targets/f6/ble-glue/app_entry.c b/firmware/targets/f6/ble-glue/app_entry.c
index f2367263..431fed6a 100644
--- a/firmware/targets/f6/ble-glue/app_entry.c
+++ b/firmware/targets/f6/ble-glue/app_entry.c
@@ -138,8 +138,10 @@ static void APPE_SysUserEvtRx( void * pPayload ) {
// APPD_EnableCPU2( );
if (APP_BLE_Init()) {
+ FURI_LOG_I("Core2", "BLE stack started");
ble_glue_status = BleGlueStatusStarted;
} else {
+ FURI_LOG_E("Core2", "BLE stack startup failed");
ble_glue_status = BleGlueStatusBroken;
}
furi_hal_power_insomnia_exit();
diff --git a/firmware/targets/f6/furi-hal/furi-hal-bt.c b/firmware/targets/f6/furi-hal/furi-hal-bt.c
index 36bd1fa2..4d5e0674 100644
--- a/firmware/targets/f6/furi-hal/furi-hal-bt.c
+++ b/firmware/targets/f6/furi-hal/furi-hal-bt.c
@@ -46,7 +46,7 @@ bool furi_hal_bt_is_alive() {
bool furi_hal_bt_wait_startup() {
uint8_t counter = 0;
- while (APPE_Status() == BleGlueStatusStartup) {
+ while (!(APPE_Status() == BleGlueStatusStarted || APPE_Status() == BleGlueStatusBroken)) {
osDelay(10);
counter++;
if (counter > 1000) {
@@ -60,27 +60,23 @@ bool furi_hal_bt_lock_flash() {
if (!furi_hal_bt_wait_startup()) {
return false;
}
- if (APPE_Status() == BleGlueStatusUninitialized) {
- HAL_FLASH_Unlock();
- } else {
- while (HAL_HSEM_FastTake(CFG_HW_FLASH_SEMID) != HAL_OK) {
- osDelay(1);
- }
- SHCI_C2_FLASH_EraseActivity(ERASE_ACTIVITY_ON);
- HAL_FLASH_Unlock();
- while(LL_FLASH_IsOperationSuspended()) {};
+
+ while (HAL_HSEM_FastTake(CFG_HW_FLASH_SEMID) != HAL_OK) {
+ osDelay(1);
}
+
+ SHCI_C2_FLASH_EraseActivity(ERASE_ACTIVITY_ON);
+ HAL_FLASH_Unlock();
+
+ while(LL_FLASH_IsOperationSuspended()) {};
+
return true;
}
void furi_hal_bt_unlock_flash() {
- if (APPE_Status() == BleGlueStatusUninitialized) {
- HAL_FLASH_Lock();
- } else {
- SHCI_C2_FLASH_EraseActivity(ERASE_ACTIVITY_OFF);
- HAL_FLASH_Lock();
- HAL_HSEM_Release(CFG_HW_FLASH_SEMID, HSEM_CPU1_COREID);
- }
+ SHCI_C2_FLASH_EraseActivity(ERASE_ACTIVITY_OFF);
+ HAL_FLASH_Lock();
+ HAL_HSEM_Release(CFG_HW_FLASH_SEMID, HSEM_CPU1_COREID);
}
void furi_hal_bt_start_tone_tx(uint8_t channel, uint8_t power) {
diff --git a/firmware/targets/f6/furi-hal/furi-hal.c b/firmware/targets/f6/furi-hal/furi-hal.c
index 6ea90317..2ec06dd4 100644
--- a/firmware/targets/f6/furi-hal/furi-hal.c
+++ b/firmware/targets/f6/furi-hal/furi-hal.c
@@ -47,6 +47,7 @@ void furi_hal_init() {
furi_hal_subghz_init();
furi_hal_nfc_init();
furi_hal_rfid_init();
+ furi_hal_bt_init();
// FreeRTOS glue
furi_hal_os_init();
diff --git a/firmware/targets/f7/ble-glue/app_entry.c b/firmware/targets/f7/ble-glue/app_entry.c
index f2367263..431fed6a 100644
--- a/firmware/targets/f7/ble-glue/app_entry.c
+++ b/firmware/targets/f7/ble-glue/app_entry.c
@@ -138,8 +138,10 @@ static void APPE_SysUserEvtRx( void * pPayload ) {
// APPD_EnableCPU2( );
if (APP_BLE_Init()) {
+ FURI_LOG_I("Core2", "BLE stack started");
ble_glue_status = BleGlueStatusStarted;
} else {
+ FURI_LOG_E("Core2", "BLE stack startup failed");
ble_glue_status = BleGlueStatusBroken;
}
furi_hal_power_insomnia_exit();
diff --git a/firmware/targets/f7/furi-hal/furi-hal-bt.c b/firmware/targets/f7/furi-hal/furi-hal-bt.c
index 36bd1fa2..4d5e0674 100644
--- a/firmware/targets/f7/furi-hal/furi-hal-bt.c
+++ b/firmware/targets/f7/furi-hal/furi-hal-bt.c
@@ -46,7 +46,7 @@ bool furi_hal_bt_is_alive() {
bool furi_hal_bt_wait_startup() {
uint8_t counter = 0;
- while (APPE_Status() == BleGlueStatusStartup) {
+ while (!(APPE_Status() == BleGlueStatusStarted || APPE_Status() == BleGlueStatusBroken)) {
osDelay(10);
counter++;
if (counter > 1000) {
@@ -60,27 +60,23 @@ bool furi_hal_bt_lock_flash() {
if (!furi_hal_bt_wait_startup()) {
return false;
}
- if (APPE_Status() == BleGlueStatusUninitialized) {
- HAL_FLASH_Unlock();
- } else {
- while (HAL_HSEM_FastTake(CFG_HW_FLASH_SEMID) != HAL_OK) {
- osDelay(1);
- }
- SHCI_C2_FLASH_EraseActivity(ERASE_ACTIVITY_ON);
- HAL_FLASH_Unlock();
- while(LL_FLASH_IsOperationSuspended()) {};
+
+ while (HAL_HSEM_FastTake(CFG_HW_FLASH_SEMID) != HAL_OK) {
+ osDelay(1);
}
+
+ SHCI_C2_FLASH_EraseActivity(ERASE_ACTIVITY_ON);
+ HAL_FLASH_Unlock();
+
+ while(LL_FLASH_IsOperationSuspended()) {};
+
return true;
}
void furi_hal_bt_unlock_flash() {
- if (APPE_Status() == BleGlueStatusUninitialized) {
- HAL_FLASH_Lock();
- } else {
- SHCI_C2_FLASH_EraseActivity(ERASE_ACTIVITY_OFF);
- HAL_FLASH_Lock();
- HAL_HSEM_Release(CFG_HW_FLASH_SEMID, HSEM_CPU1_COREID);
- }
+ SHCI_C2_FLASH_EraseActivity(ERASE_ACTIVITY_OFF);
+ HAL_FLASH_Lock();
+ HAL_HSEM_Release(CFG_HW_FLASH_SEMID, HSEM_CPU1_COREID);
}
void furi_hal_bt_start_tone_tx(uint8_t channel, uint8_t power) {
diff --git a/firmware/targets/f7/furi-hal/furi-hal.c b/firmware/targets/f7/furi-hal/furi-hal.c
index 6ea90317..2ec06dd4 100644
--- a/firmware/targets/f7/furi-hal/furi-hal.c
+++ b/firmware/targets/f7/furi-hal/furi-hal.c
@@ -47,6 +47,7 @@ void furi_hal_init() {
furi_hal_subghz_init();
furi_hal_nfc_init();
furi_hal_rfid_init();
+ furi_hal_bt_init();
// FreeRTOS glue
furi_hal_os_init();