Hello
i'm use nrf52840 and I want write external qspi flash over BLE DFU but cannot be use
how can i solve this problem?
DFU log
<info> app: Inside main <debug> app: In nrf_bootloader_init <debug> nrf_dfu_settings: Calling nrf_dfu_settings_init()... <debug> nrf_dfu_flash: Initializing nrf_fstorage_nvmc backend. <debug> nrf_dfu_settings: Using settings page. <debug> nrf_dfu_settings: Copying forbidden parts from backup page. <debug> nrf_dfu_settings: Destination settings are identical to source, write not needed. Skipping. <info> nrf_dfu_settings: Backing up settings page to address 0xFE000. <debug> nrf_dfu_settings: Destination settings are identical to source, write not needed. Skipping. <debug> app: Enter nrf_bootloader_fw_activate <info> app: No firmware to activate. <info> app: Boot validation failed. No valid app to boot. <debug> app: DFU mode because app is not valid. <info> nrf_bootloader_wdt: WDT is not enabled <debug> app: in weak nrf_dfu_init_user <debug> app: timer_stop (0x200059A0) <debug> app: timer_activate (0x200059A0) <info> app: Entering DFU mode. <debug> app: Initializing transports (found: 1) <debug> nrf_dfu_ble: Initializing BLE DFU transport <debug> nrf_dfu_ble: Setting up vector table: 0x000EE000 <debug> nrf_dfu_ble: Enabling SoftDevice. <debug> app: nrf_fstorage_sdh_req_handler <debug> app: nrf_fstorage_sdh_state_handler state 0 <debug> app: nrf_fstorage_sdh_state_handler state 1 <debug> nrf_dfu_ble: Configuring BLE stack. <debug> nrf_dfu_ble: Enabling the BLE stack. <debug> nrf_dfu_ble: No advertising name found <debug> nrf_dfu_ble: Using default advertising name <debug> nrf_dfu_ble: Advertising... <debug> nrf_dfu_ble: BLE DFU transport initialized. <debug> nrf_dfu_flash: Initializing nrf_fstorage_sd backend. <debug> app: Enter main loop <debug> nrf_dfu_ble: Connected <debug> nrf_dfu_ble: Received BLE_GAP_EVT_CONN_PARAM_UPDATE <debug> nrf_dfu_ble: max_conn_interval: 12 <debug> nrf_dfu_ble: min_conn_interval: 12 <debug> nrf_dfu_ble: slave_latency: 0 <debug> nrf_dfu_ble: conn_sup_timeout: 600 <debug> nrf_dfu_ble: Received BLE_GAP_EVT_CONN_PARAM_UPDATE <debug> nrf_dfu_ble: max_conn_interval: 6 <debug> nrf_dfu_ble: min_conn_interval: 6 <debug> nrf_dfu_ble: slave_latency: 0 <debug> nrf_dfu_ble: conn_sup_timeout: 500 <debug> nrf_dfu_ble: Received BLE_GAP_EVT_CONN_PARAM_UPDATE <debug> nrf_dfu_ble: max_conn_interval: 12 <debug> nrf_dfu_ble: min_conn_interval: 12 <debug> nrf_dfu_ble: slave_latency: 0 <debug> nrf_dfu_ble: conn_sup_timeout: 600 <debug> nrf_dfu_ble: Received BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST (request: 517, reply: 247). <debug> nrf_dfu_ble: Received BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST. <debug> nrf_dfu_ble: Received BLE_GAP_EVT_DATA_LENGTH_UPDATE (251, max_rx_time 2120). <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: CMD req <debug> nrf_dfu_req_handler: nrf_dfu_command_req() REQ : 6 <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_SELECT (command) <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_ble: Set receipt notif <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_RECEIPT_NOTIF_SET <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> app: Shutting down transports (found: 1) <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: CMD req <debug> nrf_dfu_req_handler: nrf_dfu_command_req() REQ : 1 <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_CREATE (command) <debug> app: timer_stop (0x200059A0) <debug> app: timer_activate (0x200059A0) <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_ble: Buffer 0x200076FC acquired, len 141 (244) <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: CMD req <debug> nrf_dfu_req_handler: nrf_dfu_command_req() REQ : 8 <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (command) <debug> nrf_dfu_ble: Freeing buffer 0x200076FC <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: CMD req <debug> nrf_dfu_req_handler: nrf_dfu_command_req() REQ : 3 <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_CRC_GET (command) <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: CMD req <debug> nrf_dfu_req_handler: nrf_dfu_command_req() REQ : 4 <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_EXECUTE (command) <debug> nrf_dfu_validation: PB: Init packet data len: 64 <info> nrf_dfu_validation: Signature required. Checking signature. <info> nrf_dfu_validation: Calculating hash (len: 64) <info> nrf_dfu_validation: Verify signature <info> nrf_dfu_validation: Image verified <debug> app: Enter nrf_dfu_cache_prepare() <debug> app: required_size: 0x2D598. <debug> app: single_bank: false. <debug> app: keep_app: false. <debug> app: keep_softdevice: true. <debug> app: SD_PRESENT: true. <debug> app: Bank contents: <debug> app: Bank 0 code: 0x00: Size: 0x0 <debug> app: Bank 1 code: 0x00: Size: 0x0 <debug> app: pass: 0. <debug> app: cache_address: 0x27000. <debug> app: cache_too_small: false. <debug> app: keep_firmware: false. <debug> app: delete_more: false. <debug> nrf_dfu_validation: Write address set to 0x00027000 <debug> nrf_dfu_settings: Writing settings... <debug> nrf_dfu_settings: Erasing old settings at: 0x000FF000 <debug> nrf_dfu_flash: nrf_fstorage_erase(addr=0x0x000FF000, len=1 pages), queue usage: 0 <debug> app: sd erase <debug> app: queue_start() queue_running : 0, paused : 0 <debug> app: SD Erase page address : 0xFF000 <debug> app: Que Excute code : 1, rc : 1 <debug> app: Queue Excute sd_enabled : 1 <debug> app: queue process error 0x1 <debug> nrf_dfu_flash: dfu_fstorage_evt_handler() <debug> nrf_dfu_flash: Flash erase failed (0x3): addr=0x000FF000, len=0x1 bytes, pending 0 <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000FF000, src=0x20008798, len=896 bytes), queue usage: 1 <debug> app: sd Write <debug> app: queue_start() queue_running : 0, paused : 0 <debug> app: Que Excute code : 0, rc : 0 <debug> app: Queue Excute sd_enabled : 1 <info> nrf_dfu_settings: Backing up settings page to address 0xFE000. <debug> nrf_dfu_settings: Writing settings... <debug> nrf_dfu_settings: Erasing old settings at: 0x000FE000 <debug> nrf_dfu_flash: nrf_fstorage_erase(addr=0x0x000FE000, len=1 pages), queue usage: 2 <debug> app: sd erase <debug> app: queue_start() queue_running : 1, paused : 0 <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000FE000, src=0x20008B18, len=896 bytes), queue usage: 3 <debug> app: sd Write <debug> app: queue_start() queue_running : 1, paused : 0 <debug> nrf_dfu_req_handler: Writing valid init command to flash. <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_ble: Set receipt notif <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_RECEIPT_NOTIF_SET <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: DFU req <debug> nrf_dfu_req_handler: Req on_data_obj_select_request <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_SELECT (data) <debug> nrf_dfu_req_handler: crc = 0x0, offset = 0x0, max_size = 0x1000 <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: DFU req <debug> nrf_dfu_req_handler: Req on_data_obj_create_request <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_CREATE (data) <debug> nrf_dfu_flash: nrf_fstorage_erase(addr=0x0x00027000, len=1 pages), queue usage: 4 <debug> app: sd erase <debug> app: queue_start() queue_running : 1, paused : 0 <debug> nrf_dfu_req_handler: Creating object with size: 4096. Offset: 0x00000000, CRC: 0x00000000 <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_ble: Buffer 0x200076FC acquired, len 244 (244) <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: DFU req <debug> nrf_dfu_req_handler: Req on_data_obj_write_request <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data) <debug> nrf_dfu_req_handler: Start address : 0x27000, address offset 0x0 <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00027000, src=0x200076FC, len=244 bytes), queue usage: 5 <debug> app: sd Write <debug> app: queue_start() queue_running : 1, paused : 0 <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_ble: Buffer 0x200077F0 acquired, len 244 (244) <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: DFU req <debug> nrf_dfu_req_handler: Req on_data_obj_write_request <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data) <debug> nrf_dfu_req_handler: Start address : 0x27000, address offset 0xF4 <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000270F4, src=0x200077F0, len=244 bytes), queue usage: 6 <debug> app: sd Write <debug> app: queue_start() queue_running : 1, paused : 0 <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_ble: Buffer 0x200078E4 acquired, len 244 (244) <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000271E8, src=0x200078E4, len=244 bytes), queue usage: 7 <debug> app: sd Write <debug> app: queue_start() queue_running : 1, paused : 0 <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_ble: Buffer 0x200079D8 acquired, len 244 (244) <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000272DC, src=0x200079D8, len=244 bytes), queue usage: 8 <debug> app: sd Write <debug> app: queue_start() queue_running : 1, paused : 0 <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000273D0, src=0x20007ACC, len=244 bytes), queue usage: 9 <debug> app: sd Write <debug> app: sd Write <debug> app: queue_start() queue_running : 1, paused : 0 <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> app: sd Write <debug> app: queue_start() queue_running : 1, paused : 0 <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_ble: Buffer 0x20007DA8 acquired, len 244 (244) <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_ble: Buffer 0x20007E9C acquired, len 244 (244) <debug> nrf_dfu_ble: Buffer 0x20007F90 acquired, len 244 (244) <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: DFU req Logs dropped (1) <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00027988, src=0x20008084, len=244 bytes), queue usage: 15 Logs dropped (1) <debug> app: sd Write Logs dropped (2) <debug> app: queue_start() queue_running : 1, paused : 0 Logs dropped (2) <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_ble: Buffer 0x20008178 acquired, len 244 (244) <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: DFU req <debug> nrf_dfu_req_handler: Req on_data_obj_write_request <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data) Logs dropped (2) <debug> nrf_dfu_req_handler: Start address : 0x27000, address offset 0xA7C Logs dropped (1) <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00027A7C, src=0x20008178, len=244 bytes), queue usage: 16 <debug> nrf_dfu_ble: Buffer 0x2000826C acquired, len 244 (244) <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: DFU req Logs dropped (2) <debug> nrf_dfu_req_handler: Start address : 0x27000, address offset 0xB70 Logs dropped (1) <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00027B70, src=0x2000826C, len=244 bytes), queue usage: 17 Logs dropped (1) <debug> app: sd Write Logs dropped (2) <warning> nrf_dfu_flash: nrf_fstorage_write() failed with error 0x4. <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: DFU req <debug> nrf_dfu_req_handler: Req on_data_obj_write_request Logs dropped (1) <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data) <debug> nrf_dfu_req_handler: Start address : 0x27000, address offset 0xB70 Logs dropped (3) <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00027B70, src=0x2000826C, len=244 bytes), queue usage: 17 Logs dropped (1) <debug> app: sd Write Logs dropped (2) <warning> nrf_dfu_flash: nrf_fstorage_write() failed with error 0x4. <debug> nrf_dfu_req_handler: Write flash error Logs dropped (1) <debug> nrf_dfu_ble: Freeing buffer 0x2000826C <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_ble: Buffer 0x2000826C acquired, len 244 (244) <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: DFU req <debug> nrf_dfu_req_handler: Req on_data_obj_write_request <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data) Logs dropped (2) <debug> nrf_dfu_req_handler: Start address : 0x27000, address offset 0xB70 Logs dropped (3) <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00027B70, src=0x2000826C, len=244 bytes), queue usage: 17 Logs dropped (1) <debug> app: sd Write Logs dropped (1) <warning> nrf_dfu_flash: nrf_fstorage_write() failed with error 0x4. <debug> nrf_dfu_req_handler: Write flash error <debug> nrf_dfu_ble: Freeing buffer 0x2000826C Logs dropped (2) <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_ble: Buffer 0x2000826C acquired, len 244 (244) <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: DFU req Logs dropped (1) <debug> nrf_dfu_req_handler: Req on_data_obj_write_request Logs dropped (1) <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data) Logs dropped (2) <debug> nrf_dfu_req_handler: Start address : 0x27000, address offset 0xB70 Logs dropped (2) <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00027B70, src=0x2000826C, len=244 bytes), queue usage: 17 Logs dropped (1) <debug> app: sd Write <warning> nrf_dfu_flash: nrf_fstorage_write() failed with error 0x4. Logs dropped (1) <debug> nrf_dfu_req_handler: Write flash error Logs dropped (1) <debug> nrf_dfu_ble: Freeing buffer 0x2000826C Logs dropped (1) <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_ble: Buffer 0x2000826C acquired, len 192 (244) <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() Logs dropped (1) <debug> nrf_dfu_req_handler: DFU req Logs dropped (1) <debug> nrf_dfu_req_handler: Req on_data_obj_write_request Logs dropped (1) <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data) Logs dropped (2) <debug> nrf_dfu_req_handler: Start address : 0x27000, address offset 0xB70 Logs dropped (1) <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00027B70, src=0x2000826C, len=192 bytes), queue usage: 17 <debug> app: sd Write Logs dropped (5) <warning> nrf_dfu_flash: nrf_fstorage_write() failed with error 0x4. <debug> nrf_dfu_req_handler: Write flash error Logs dropped (3) <debug> nrf_dfu_ble: Freeing buffer 0x2000826C Logs dropped (1) <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: DFU req <debug> nrf_dfu_req_handler: Req on_data_obj_crc_request Logs dropped (1) <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_CRC_GET (data) Logs dropped (2) <debug> nrf_dfu_req_handler: Offset:2928, CRC:0xCCAD3863 <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_ble: Set receipt notif <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_RECEIPT_NOTIF_SET <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_ble: Buffer 0x2000826C acquired, len 244 (244) <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: DFU req <debug> nrf_dfu_req_handler: Req on_data_obj_write_request <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data) <debug> nrf_dfu_req_handler: Start address : 0x27000, address offset 0xB70 <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00027B70, src=0x2000826C, len=244 bytes), queue usage: 17 <debug> app: sd Write <warning> nrf_dfu_flash: nrf_fstorage_write() failed with error 0x4. Logs dropped (2) <debug> nrf_dfu_req_handler: Write flash error Logs dropped (3) <debug> nrf_dfu_ble: Freeing buffer 0x2000826C Logs dropped (3) <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: DFU req <debug> nrf_dfu_req_handler: Req on_data_obj_crc_request <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_CRC_GET (data) Logs dropped (2) <debug> nrf_dfu_req_handler: Offset:2928, CRC:0xCCAD3863 Logs dropped (1) <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1 <debug> nrf_dfu_req_handler: nrf_dfu_req_handler_req_process() <debug> nrf_dfu_req_handler: nrf_dfu_obj_op() <debug> nrf_dfu_req_handler: DFU req <debug> nrf_dfu_req_handler: Req on_data_obj_create_request <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_CREATE (data) <debug> nrf_dfu_flash: nrf_fstorage_erase(addr=0x0x00027000, len=1 pages), queue usage: 17 Logs dropped (2) <debug> app: sd erase Logs dropped (2) <warning> nrf_dfu_flash: nrf_fstorage_erase() failed with error 0x4. Logs dropped (2) <error> nrf_dfu_req_handler: Erase operation failed Logs dropped (1) <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x5 Logs dropped (1) <warning> nrf_dfu_ble: DFU request 1 failed with error: 0x5 <debug> nrf_dfu_ble: Received BLE_GAP_EVT_CONN_PARAM_UPDATE <debug> nrf_dfu_ble: max_conn_interval: 6 <debug> nrf_dfu_ble: min_conn_interval: 6 <debug> nrf_dfu_ble: slave_latency: 0 <debug> nrf_dfu_ble: conn_sup_timeout: 500 <debug> nrf_dfu_ble: Received BLE_GAP_EVT_CONN_PARAM_UPDATE <debug> nrf_dfu_ble: max_conn_interval: 12 <debug> nrf_dfu_ble: min_conn_interval: 12 <debug> nrf_dfu_ble: slave_latency: 0 <debug> nrf_dfu_ble: conn_sup_timeout: 600
modified nrf_fstorage_sd.c
static uint32_t write_execute(nrf_fstorage_sd_op_t const * p_op)
{
//uint32_t chunk_len;
//chunk_len = MIN(p_op->write.len - p_op->write.offset, NRF_FSTORAGE_SD_MAX_WRITE_SIZE);
//chunk_len = MAX(1, chunk_len / m_flash_info.program_unit);
///* Cast to p_src to uint32_t to perform arithmetic. */
//uint32_t * p_dest = (uint32_t*)(p_op->write.dest + p_op->write.offset);
//uint32_t const * p_src = (uint32_t*)((uint32_t)p_op->write.p_src + p_op->write.offset);
//return sd_flash_write(p_dest, p_src, chunk_len);
uint32_t err_code;
uint32_t chunk_len;
chunk_len = MIN(p_op->write.len - p_op->write.offset, NRF_FSTORAGE_SD_MAX_WRITE_SIZE);
chunk_len = MAX(1, chunk_len / m_flash_info.program_unit);
/* Cast to p_src to uint32_t to perform arithmetic. */
uint32_t p_dest = (p_op->write.dest + p_op->write.offset);
uint32_t const * p_src = (uint32_t*)((uint32_t)p_op->write.p_src + p_op->write.offset);
err_code = nrfx_qspi_write(p_src, chunk_len, p_dest);
return err_code;
}
static uint32_t erase_execute(nrf_fstorage_sd_op_t const * p_op)
{
//NRF_LOG_DEBUG("Erase page number %d, progress %d", p_op->erase.page, p_op->erase.progress);
//return sd_flash_page_erase(p_op->erase.page + p_op->erase.progress);
uint32_t err_code;
uint32_t erase_start_addr = (p_op->erase.page + p_op->erase.progress) * 4096;
nrfx_qspi_erase(NRF_QSPI_ERASE_LEN_4KB, erase_start_addr);
NRF_LOG_DEBUG("SD Erase page address : 0x%x", erase_start_addr);
return err_code;
}
static ret_code_t read(nrf_fstorage_t const * p_fs, uint32_t src, void * p_dest, uint32_t len)
{
//memcpy(p_dest, (uint32_t*)src, len);
//NRF_LOG_DEBUG("sd Read");
//return NRF_SUCCESS;
ret_code_t err_code;
err_code = nrfx_qspi_read(p_dest, len, src);
return err_code;
}