This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

problem to adding AES encription to secure DFU SDK15.0

Hi!

nRF52832, SDK15, SD6.0.0, S132

I try to use secure_bootloader from SDK15 examples. All works.

Now I need encrypt my firmware with AES. I already made it on a SDK13- works fine. 

Now after encrypt .bin file in the dfu.zip package, I try to decrypt it in the bootloader project. For that I in a file 

nrf_dfu_req_handler.c in a on_data_obj_write_request() function insert my decode function:

static void on_data_obj_write_request(nrf_dfu_request_t * p_req, nrf_dfu_response_t * p_res)
{
    NRF_LOG_DEBUG("Handle NRF_DFU_OP_OBJECT_WRITE (data)");

    if (!nrf_dfu_validation_init_cmd_present())
    {
        /* Can't accept data because DFU isn't initialized by init command. */
        p_res->result = NRF_DFU_RES_CODE_OPERATION_NOT_PERMITTED;
        return;
    }

    uint32_t const data_object_offset = s_dfu_settings.progress.firmware_image_offset -
                                        s_dfu_settings.progress.firmware_image_offset_last;

    if ((p_req->write.len + data_object_offset) > s_dfu_settings.progress.data_object_size)
    {
        /* Can't accept data because too much data has been received. */
        NRF_LOG_ERROR("Write request too long");
        p_res->result = NRF_DFU_RES_CODE_INVALID_PARAMETER;
        return;
    }

    uint32_t const write_addr = m_firmware_start_addr + s_dfu_settings.write_offset;

    ASSERT(p_req->callback.write);
    
                // az
                for (int i = 0; i < p_req->write.len; i+=16)
                {
                    AES128_ECB_decrypt (p_req->write.p_data + i, key, p_req->write.p_data + i); 
                }
                
    ret_code_t ret =
        nrf_dfu_flash_store(write_addr, p_req->write.p_data, p_req->write.len, p_req->callback.write);

    if (ret != NRF_SUCCESS)
    {
        /* When nrf_dfu_flash_store() fails because there is no space in the queue,
         * stop processing the request so that the peer can detect a CRC error
         * and retransmit this object. Remember to manually free the buffer !
         */
        p_req->callback.write((void*)p_req->write.p_data);
        return;
    }

    /* Update the CRC of the firmware image. */
    s_dfu_settings.write_offset                   += p_req->write.len;
    s_dfu_settings.progress.firmware_image_offset += p_req->write.len;
    s_dfu_settings.progress.firmware_image_crc     =
        crc32_compute(p_req->write.p_data, p_req->write.len, &s_dfu_settings.progress.firmware_image_crc);

    /* This is only used when the PRN is triggered and the 'write' message
     * is answered with a CRC message and these field are copied into the response.
     */
    p_res->write.crc    = s_dfu_settings.progress.firmware_image_crc;
    p_res->write.offset = s_dfu_settings.progress.firmware_image_offset;
}

AES128_ECB_decrypt().....

One more- this function works fine with same syntax on the SDK13.

But in the SDK13 after that I write another CRC and it works.

Now on SDK15 when I try to update via smartphone, I see error on the smartphone - ERROC CRC.

Also I have RTT log of it:

 0> <debug> nrf_dfu_req_handler:  
 0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_CRC_GET (data)
 0> <debug> nrf_dfu_req_handler: Offset:2928, CRC:0xA907DD27
 0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
 0> <debug> app: Shutting down transports (found: 1)
 0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_CREATE (data)
 0> <debug> nrf_dfu_flash: nrf_fstorage_erase(addr=0x0x00039000, len=1 pages), queue usage: 0
 0> <debug> nrf_dfu_req_handler: Creating object with size: 4096. Offset: 0x00000000, CRC: 0x00000000
 0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
 0> <debug> nrf_dfu_ble: Buffer 0x20005EB8 acquired, len 244 (244)
 0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
 0> <debug> nrf_dfu_flash: Flash erase success: addr=0x00039000, pending 0
 0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00039000, src=0x20005EB8, len=244 bytes), queue usage: 0
 0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
 0> <debug> nrf_dfu_flash: Flash write success: addr=0x00039000, pending 0
 0> <debug> nrf_dfu_ble: Freeing buffer 0x20005EB8
 0> <debug> nrf_dfu_ble: Buffer 0x20005EB8 acquired, len 244 (244)
 0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
 0> <debug> nrf_dfu_ble: Buffer 0x20005FAC acquired, len 244 (244)
 0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000390F4, src=0x20005EB8, len=244 bytes), queue usage: 0
 0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
 0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
 0> <debug> nrf_dfu_ble: Buffer 0x20006194 acquired, len 244 (244)
 0> <debug> nrf_dfu_flash: Flash write success: addr=0x000390F4, pending 0
 0> <debug> nrf_dfu_ble: Freeing buffer 0x20005EB8
 0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000391E8, src=0x20005FAC, len=244 bytes), queue usage: 0
 0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
 0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
 0> <debug> nrf_dfu_ble: Buffer 0x20005EB8 acquired, len 244 (244)
 0> <debug> nrf_dfu_flash: Flash write success: addr=0x000391E8, pending 0
 0> <debug> nrf_dfu_ble: Freeing buffer 0x20005FAC
 0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000392DC, src=0x20006194, len=244 bytes), queue usage: 0
 0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
 0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
 0> <debug> nrf_dfu_ble: Buffer 0x20005FAC acquired, len 244 (244)
 0> <debug> nrf_dfu_ble: Buffer 0x20006288 acquired, len 244 (244)
 0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000393D0, src=0x20005EB8, len=244 bytes), queue usage: 1
 0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
 0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
 0> <debug> nrf_dfu_flash: Flash write success: addr=0x000392DC, pending 1
 0> <debug> nrf_dfu_ble: Freeing buffer 0x20006194
 0> <debug> nrf_dfu_ble: Buffer 0x20006194 acquired, len 244 (244)
 0> <debug> nrf_dfu_flash: Flash write success: addr=0x000393D0, pending 0
 0> <debug> nrf_dfu_ble: Freeing buffer 0x20005EB8
 0> <debug> nrf_dfu_ble: Buffer 0x20005EB8 acquired, len 244 (244)
 0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000394C4, src=0x20005FAC, len=244 bytes), queue usage: 0
 0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
 0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
 0> <debug> nrf_dfu_flash: Flash write success: addr=0x000394C4, pending 0
 0> <debug> nrf_dfu_ble: Freeing buffer 0x20005FAC
 0> <debug> nrf_dfu_ble: Buffer 0x20005FAC acquired, len 244 (244)
 0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000395B8, src=0x20006288, len=244 bytes), queue usage: 0
 0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
 0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
 0> <debug> nrf_dfu_ble: Buffer 0x200060A0 acquired, len 244 (244)
 0> <debug> nrf_dfu_flash: Flash write success: addr=0x000395B8, pending 0
 0> <debug> nrf_dfu_ble: Freeing buffer 0x20006288
 0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000396AC, src=0x20006194, len=244 bytes), queue usage: 0
 0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
 0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
 0> <debug> nrf_dfu_ble: Buffer 0x20006288 acquired, len 244 (244)
 0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000397A0, src=0x20005EB8, len=244 bytes), queue usage: 1
 0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
 0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
 0> <debug> nrf_dfu_flash: Flash write success: addr=0x000396AC, pending 1
 0> <debug> nrf_dfu_ble: Freeing buffer 0x20006194
 0> <debug> nrf_dfu_flash: Flash write success: addr=0x000397A0, pending 0
 0> <debug> nrf_dfu_ble: Freeing buffer 0x20005EB8
 0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00039894, src=0x20005FAC, len=244 bytes), queue usage: 0
 0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
 0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
 0> <debug> nrf_dfu_flash: Flash write success: addr=0x00039894, pending 0
 0> <debug> nrf_dfu_ble: Freeing buffer 0x20005FAC
 0> x200060A0, len=244 bytes), queue usage: 0
 0> a)
 0> <debug> nrf_dfu_ble: Advertising...
 0> <info> nrf_bootloader_wdt: Internal feed

In wich place of bootloader should I clear or replace CRC ? I just want to reject this verification from bootloader.  

Parents
  • You get invalid CRC because you are calculating the CRC on the decrypted data while the phone compares the CRC agains its encrypted image. If you want to skip CRC validation you need to do it in the phone app, not in the bootloader. 

  • Hi!

    In the SDK13 I use same method. I encrypted only .bin file. In the bootloader I just take old CRC and replace it CRC with a compared CRC. All works.

    In this SDK15 I want just or replace my CRC with comared CRC or (I can't find this place where  can I) insert my decode code:

    //                for (int i = 0; i < len; i+=16)
    //                {
    //                    AES128_ECB_decrypt ((uint8_t *)p_src + i, key, (uint8_t *)p_src + i); 
    //                }

    Therefore, when data from air were received, first I decrypt it and data will like on non encrypted .bin data. And CRC will compare correct.

    But if this method is difficult, possible just replace CRC one to another and compare it between themselves.

    where should it be done?

       

  • seems, 

    &s_dfu_settings.progress.firmware_image_crc

    antother due to adding some code. And address of 

    &s_dfu_settings.progress.firmware_image_crc

    some moved. It is my opinion.

  • Hi Mikhail, 

    Could you printout value of firmware_image_crc ? not the address of it. It's normal to have different address when you modified the code. 

  • without AES:

    wo_aes2.log

    with AES:

    # SEGGER J-Link RTT Viewer V5.12f Terminal Log File
    # Compiled: 16:04:47 on May 17 2016
    # Logging started @ 21 Dec 2018 12:19:16
     0> <info> app:   Starting scan.
     0> <info> app: Inside main boot
     0> <debug> app: In nrf_bootloader_init
     0> <debug> nrf_dfu_settings: Calling nrf_dfu_settings_init()...
     0> <debug> nrf_dfu_flash: Initializing nrf_fstorage_nvmc backend.
     0> <debug> app: Enter nrf_bootloader_fw_activate
     0> <info> app: No firmware to activate.
     0> <debug> app: Enter nrf_dfu_app_is_valid
     0> <debug> app:  az nrf_dfu_app_is_valid CRC = 0xBABF7A96
     0> <debug> app: Return true. App was valid
     0> <debug> app: DFU mode requested via GPREGRET.
     0> <info> nrf_bootloader_wdt: WDT enabled CRV:2048 ms
     0> <info> nrf_bootloader_wdt: Starting a timer (1536 ms) for feeding watchdog.
     0> <info> app_timer: RTC: initialized.
     0> <debug> app: in weak nrf_dfu_init_user
     0> <info> app: Entering DFU mode.
     0> <debug> app: Initializing transports (found: 1)
     0> <debug> nrf_dfu_ble: Initializing BLE DFU transport
     0> <debug> nrf_dfu_ble: Setting up vector table: 0x0006D000
     0> <debug> nrf_dfu_ble: Enabling SoftDevice.
     0> <debug> nrf_dfu_ble: Configuring BLE stack.
     0> <debug> nrf_dfu_ble: Enabling the BLE stack.
     0> <debug> nrf_dfu_settings_svci:  az nrf_dfu_settings_adv_name_is_valid CRC = 0xDCDD16C2
     0> <debug> nrf_dfu_ble: No advertising name found
     0> <debug> nrf_dfu_ble: Using default advertising name
     0> <debug> nrf_dfu_ble: Advertising...
     0> <debug> nrf_dfu_ble: BLE DFU transport initialized.
     0> <debug> nrf_dfu_flash: Initializing nrf_fstorage_sd backend.
     0> <debug> app: Enter main loop
     0> <info> nrf_bootloader_wdt: Internal feed
     0> <info> nrf_bootloader_wdt: Internal feed
     0> <info> nrf_bootloader_wdt: Internal feed
     0> <info> nrf_bootloader_wdt: Internal feed
     0> <info> nrf_bootloader_wdt: Internal feed
     0> <info> nrf_bootloader_wdt: Internal feed
     0> <debug> nrf_dfu_ble: Connected
     0> <info> nrf_bootloader_wdt: Internal feed
     0> <debug> nrf_dfu_ble: Received BLE_GAP_EVT_CONN_PARAM_UPDATE
     0> <debug> nrf_dfu_ble: max_conn_interval: 12
     0> <debug> nrf_dfu_ble: min_conn_interval: 12
     0> <debug> nrf_dfu_ble: slave_latency: 0
     0> <debug> nrf_dfu_ble: conn_sup_timeout: 600
     0> <debug> nrf_dfu_ble: Received BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST (request: 517, reply: 247).
     0> <info> nrf_bootloader_wdt: Internal feed
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_SELECT (command)
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_ble: Set receipt notif
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_RECEIPT_NOTIF_SET
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> app: Shutting down transports (found: 1)
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_CREATE (command)
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_ble: Buffer 0x20005EB8 acquired, len 135 (244)
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (command)
     0> <debug> nrf_dfu_validation:  az nrf_dfu_validation_init_cmd_append CRC = 0xB0AE0CFC
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20005EB8
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_CRC_GET (command)
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_EXECUTE (command)
     0> <debug> nrf_dfu_validation: PB: Init packet data len: 58
     0> <info> nrf_dfu_validation: Signature required. Checking signature.
     0> <info> nrf_dfu_validation: Calculating init packet hash (init packet len: 58)
     0> <info> nrf_dfu_validation: Verify signature
     0> <info> nrf_dfu_validation: Image verified
     0> <debug> app: Enter nrf_dfu_cache_prepare()
     0> <debug> app: required_size: 0x127A0.
     0> <debug> app: single_bank: false.
     0> <debug> app: keep_app: false.
     0> <debug> app: keep_softdevice: true.
     0> <debug> app: SD_PRESENT: true.
     0> <debug> app: Bank contents:
     0> <debug> app: Bank 0 code: 0x01: Size: 0x127A0
     0> <debug> app: Bank 1 code: 0x00: Size: 0x0
     0> <debug> app: pass: 0.
     0> <debug> app: cache_address: 0x39000.
     0> <debug> app: cache_too_small: false.
     0> <debug> app: keep_firmware: false.
     0> <debug> app: delete_more: false.
     0> <debug> nrf_dfu_validation: Write address set to 0x00039000
     0> <debug> nrf_dfu_settings: Writing settings...
     0> <debug> nrf_dfu_settings: Erasing old settings at: 0x0007F000
     0> <debug> nrf_dfu_flash: nrf_fstorage_erase(addr=0x0x0007F000, len=1 pages), queue usage: 0
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x0007F000, src=0x20006EEC, len=440 bytes), queue usage: 1
     0> <debug> nrf_dfu_req_handler: Writing valid init command to flash.
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_ble: Set receipt notif
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_RECEIPT_NOTIF_SET
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_SELECT (data)
     0> <debug> nrf_dfu_req_handler: crc = 0x0, offset = 0x0, max_size = 0x1000
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_flash: Flash erase success: addr=0x0007F000, pending 1
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x0007F000, pending 0
     0> <debug> app: Shutting down transports (found: 1)
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_CREATE (data)
     0> <debug> nrf_dfu_flash: nrf_fstorage_erase(addr=0x0x00039000, len=1 pages), queue usage: 0
     0> <debug> nrf_dfu_req_handler: Creating object with size: 4096. Offset: 0x00000000, CRC: 0x00000000
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_ble: Buffer 0x20005EB8 acquired, len 244 (244)
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x000000A5
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x00000000
     0> <debug> nrf_dfu_ble: Buffer 0x20005FAC acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00039000, src=0x20005EB8, len=244 bytes), queue usage: 1
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0xA5BE0D95
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x00000000
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0xA5BE0D95
     0> <debug> nrf_dfu_flash: Flash erase success: addr=0x00039000, pending 1
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x00039000, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20005EB8
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000390F4, src=0x20005FAC, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0xE5314F14
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000390F4, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20005FAC
     0> <debug> nrf_dfu_ble: Buffer 0x20005FAC acquired, len 244 (244)
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x00000065
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0xE5314F14
     0> <debug> nrf_dfu_ble: Buffer 0x20005EB8 acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000391E8, src=0x20005FAC, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0x9ECA00EB
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x00000015
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x9ECA00EB
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000391E8, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20005FAC
     0> <debug> nrf_dfu_ble: Buffer 0x20005FAC acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000392DC, src=0x20005EB8, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0x9762C394
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x00000092
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x9762C394
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000392DC, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20005EB8
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000393D0, src=0x20005FAC, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0x44ED2D93
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_ble: Buffer 0x20005EB8 acquired, len 244 (244)
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x00000095
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x44ED2D93
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000393D0, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20005FAC
     0> <debug> nrf_dfu_ble: Buffer 0x20005FAC acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000394C4, src=0x20005EB8, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0x4F9ECADF
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x000000B5
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x4F9ECADF
     0> <debug> nrf_dfu_ble: Buffer 0x200060A0 acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000394C4, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20005EB8
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000395B8, src=0x20005FAC, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0xB73F5C53
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x000000AE
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0xB73F5C53
     0> <debug> nrf_dfu_ble: Buffer 0x20005EB8 acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000395B8, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20005FAC
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000396AC, src=0x200060A0, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0x9FCD205B
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x000000A6
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x9FCD205B
     0> <debug> nrf_dfu_ble: Buffer 0x20005FAC acquired, len 244 (244)
     0> <debug> nrf_dfu_ble: Buffer 0x20006194 acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000397A0, src=0x20005EB8, len=244 bytes), queue usage: 1
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0x9E55E1B6
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x00000048
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x9E55E1B6
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000396AC, pending 1
     0> <debug> nrf_dfu_ble: Freeing buffer 0x200060A0
     0> <debug> nrf_dfu_ble: Buffer 0x200060A0 acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000397A0, pending 0
     0>  0x5A952149
     0> 0x1
     0> a)
     0> 
     0> ding 0
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x00039988, pending 1
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20006194
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x00039A7C, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x200060A0
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_CRC_GET (data)
     0> <debug> nrf_dfu_req_handler: Offset:2928, CRC:0xCE98896F
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> app: Shutting down transports (found: 1)
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_CREATE (data)
     0> <debug> nrf_dfu_flash: nrf_fstorage_erase(addr=0x0x00039000, len=1 pages), queue usage: 0
     0> <debug> nrf_dfu_req_handler: Creating object with size: 4096. Offset: 0x00000000, CRC: 0x00000000
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_ble: Buffer 0x200060A0 acquired, len 244 (244)
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x000000A5
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x00000000
     0> <debug> nrf_dfu_ble: Buffer 0x20006194 acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00039000, src=0x200060A0, len=244 bytes), queue usage: 1
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0xA5BE0D95
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x00000000
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0xA5BE0D95
     0> <debug> nrf_dfu_flash: Flash erase success: addr=0x00039000, pending 1
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x00039000, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x200060A0
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000390F4, src=0x20006194, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0xE5314F14
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000390F4, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20006194
     0> <debug> nrf_dfu_ble: Buffer 0x20006194 acquired, len 244 (244)
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x00000065
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0xE5314F14
     0> <debug> nrf_dfu_ble: Buffer 0x200060A0 acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000391E8, src=0x20006194, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0x9ECA00EB
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x00000015
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x9ECA00EB
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000391E8, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20006194
     0> <debug> nrf_dfu_ble: Buffer 0x20006194 acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000392DC, src=0x200060A0, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0x9762C394
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x00000092
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x9762C394
     0> <debug> nrf_dfu_ble: Buffer 0x20005FAC acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000392DC, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x200060A0
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000393D0, src=0x20006194, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0x44ED2D93
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x00000095
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x44ED2D93
     0> <debug> nrf_dfu_ble: Buffer 0x200060A0 acquired, len 244 (244)
     0> <debug> nrf_dfu_ble: Buffer 0x20005EB8 acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000394C4, src=0x20005FAC, len=244 bytes), queue usage: 1
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0x4F9ECADF
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x000000B5
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x4F9ECADF
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000393D0, pending 1
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20006194
     0> <debug> nrf_dfu_ble: Buffer 0x20006194 acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000394C4, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20005FAC
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000395B8, src=0 0xB73F5C53
     0> 0x1
     0> a)
     0> 
     0> ding 0
     0> 0x1
     0> a)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x18B6C697
     0> <debug> nrf_dfu_ble: Buffer 0x200060A0 acquired, len 244 (244)
     0> <debug> nrf_dfu_ble: Buffer 0x20006288 acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000396AC, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20005EB8
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000397A0, src=0x20006194, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0x9D392A1A
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x000000D0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x9D392A1A
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00039894, src=0x20005FAC, len=244 bytes), queue usage: 1
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0xC0ED8B30
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x000000E4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0xC0ED8B30
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000397A0, pending 1
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20006194
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x00039894, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20005FAC
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00039988, src=0x200060A0, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0xF78C2AF7
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x00000099
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0xF78C2AF7
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00039A7C, src=0x20006288, len=244 bytes), queue usage: 1
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0x6455C338
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x00039988, pending 1
     0> <debug> nrf_dfu_ble: Freeing buffer 0x200060A0
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x00039A7C, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20006288
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_CRC_GET (data)
     0> <debug> nrf_dfu_req_handler: Offset:2928, CRC:0x6455C338
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> app: Shutting down transports (found: 1)
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_CREATE (data)
     0> <debug> nrf_dfu_flash: nrf_fstorage_erase(addr=0x0x00039000, len=1 pages), queue usage: 0
     0> <debug> nrf_dfu_req_handler: Creating object with size: 4096. Offset: 0x00000000, CRC: 0x00000000
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_ble: Buffer 0x20006288 acquired, len 244 (244)
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x000000A5
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x00000000
     0> <debug> nrf_dfu_ble: Buffer 0x200060A0 acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00039000, src=0x20006288, len=244 bytes), queue usage: 1
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0xA5BE0D95
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x00000009
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0xA5BE0D95
     0> <debug> nrf_dfu_flash: Flash erase success: addr=0x00039000, pending 1
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x00039000, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20006288
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000390F4, src=0x200060A0, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0x65491F3A
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000390F4, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x200060A0
     0> <debug> nrf_dfu_ble: Buffer 0x200060A0 acquired, len 244 (244)
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x00000065
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x65491F3A
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000391E8, src=0x200060A0, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0xB42E4DC3
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000391E8, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x200060A0
     0> <debug> nrf_dfu_ble: Buffer 0x200060A0 acquired, len 244 (244)
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x00000015
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0xB42E4DC3
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000392DC, src=0x200060A0, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0x9C65D3A5
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_ble: Buffer 0x20006288 acquired, len 244 (244)
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x0000001B
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x9C65D3A5
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000392DC, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x200060A0
     0> <debug> nrf_dfu_ble: Buffer 0x200060A0 acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000393D0, src=0x20006288, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0xA314E743
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x00000095
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0xA314E743
     0> <debug> nrf_dfu_ble: Buffer 0x20005FAC acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000393D0, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20006288
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000394C4, src=0x200060A0, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0x6F63CA50
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x0000003A
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0x6F63CA50
     0> <debug> nrf_dfu_ble: Buffer 0x20006288 acquired, len 244 (244)
     0> <debug> nrf_dfu_ble: Buffer 0x20006194 acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000394C4, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x200060A0
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000395B8, src=0x20005FAC, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0xC2C9B9F7
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x000000D9
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0xC2C9B9F7
     0> <debug> nrf_dfu_ble: Buffer 0x200060A0 acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x000396AC, src=0x20006288, len=244 bytes), queue usage: 1
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0xD549DA26
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x000000A6
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0xD549DA26
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000395B8, pending 1
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20005FAC
     0> <debug> nrf_dfu_ble: Buffer 0x20005FAC acquired, len 244 (244)
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000396AC, pending 0
     0>  0xEFB76CD5
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x0000008F
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0xEFB76CD5
     0> <debug> nrf_dfu_flash: Flash write success: addr=0x000397A0, pending 0
     0> <debug> nrf_dfu_ble: Freeing buffer 0x20006194
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00039894, src=0x200060A0, len=244 bytes), queue usage: 0
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request CRC = 0xDA4357CB
     0> <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
     0> <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x0000007D
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_p_req->write.len = 0x000000F4
     0> <debug> nrf_dfu_req_handler:  az on_data_obj_write_request crc32_compute_s_dfu_settings.progress.firmware_image_crc = 0xDA4357CB
     0> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x00039988, src=0 0xBDB210D8
     0> 
     0> <debug> nrf_dfu_ble: Advertising...
     0> <info> nrf_bootloader_wdt: Internal feed
     0> <info> nrf_bootloader_wdt: Internal feed
     0> <info> nrf_bootloader_wdt: Internal feed
     0> <info> nrf_bootloader_wdt: Internal feed
     0> <info> nrf_bootloader_wdt: Internal feed
     0> <info> nrf_bootloader_wdt: Internal feed
     0> <info> nrf_bootloader_wdt: Internal feed
    

    Why second data is

    az on_data_obj_write_request crc32_compute_*p_req->write.p_data = 0x00000009

    ? are different.

    My oppinion is: I try to decrypt 244 bytes by AES block crypt. One data block DFU is 244 bytes. Therefore, I cant divide 244 to 16 without remainder of the division. For this reason I have changed different data p_req->write.p_data

    Is it possible? 

  • Didn't it work for you in SDK v13 ? I can see the CRCs are different after the first write command. We are only limited staff during the holiday so I can't try and test myself but I don't see any reason why we couldn't debug and find why the CRC is different, shouldn't it be very simple to put a break point and see why CRC is calculated differently ? It must start from either the size of the input data or the input data (the write packet) it self ? 

Reply
  • Didn't it work for you in SDK v13 ? I can see the CRCs are different after the first write command. We are only limited staff during the holiday so I can't try and test myself but I don't see any reason why we couldn't debug and find why the CRC is different, shouldn't it be very simple to put a break point and see why CRC is calculated differently ? It must start from either the size of the input data or the input data (the write packet) it self ? 

Children
Related