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

S130'DFU example of SDK9.0.0 can't work

Hi, I use the SDK9.0.0 S130'DFU project in the parth of pca10028\dual_bank_ble_s130\arm5_no_packs\ for testing.I found S130'DFU code is different compare to the S110 of SDK6.0.0. I read the"How to generate the INIT file for the DFU" PDF file,and found that the old file format isn't support, "hex" file isn't support anymore . I can't find the link of the " Master Control Panel 3.8.0"program and "nrf" tool,where to download? The way of creating "DISTRIBUTION PACKETS (ZIP) " is too complex, I use the SDK11's of DFU tests ZIP file for DFU transport test,because the file format is right .Unfortunately,the NRF Master Controller transport file stop when going to the step of "writting Initialize DFU Parameters".The Nrf master controller write data"0x02-00" to characteristic of '1531",and Notification received from 1531 is "0x10-02-06".I debug the code in the S130'DFU project,and find the error fix at : `case OP_CODE_RECEIVE_INIT: ble_dfu_evt.ble_dfu_evt_type = BLE_DFU_RECEIVE_INIT_DATA;

        if (p_ble_write_evt->len < PKT_INIT_DFU_PARAM_LEN)
        {
            return ble_dfu_response_send(p_dfu,
                                         (ble_dfu_procedure_t) p_ble_write_evt->data[0],
                                         BLE_DFU_RESP_VAL_OPER_FAILED);
        }
        
        ble_dfu_evt.evt.ble_dfu_pkt_write.len    = 1;
        ble_dfu_evt.evt.ble_dfu_pkt_write.p_data = &(p_ble_write_evt->data[1]);

        p_dfu->evt_handler(p_dfu, &ble_dfu_evt);
        break;`

the p_ble_write_evt->len is 0x00,what happen?Is the app bug? Can you tell me how to use the S130 DFU project to update my app fireware?I have try some methode,But it can't work correctly.

Besides,` if (dfu_start || (!bootloader_app_is_valid(DFU_BANK_0_REGION_START))) { // nrf_gpio_pin_clear(UPDATE_IN_PROGRESS_LED);

    // Initiate an update of the firmware.
    err_code = bootloader_dfu_start();
    APP_ERROR_CHECK(err_code);

// nrf_gpio_pin_set(UPDATE_IN_PROGRESS_LED); }err_code always is 0x0003D99B,evenbootloader_dfu_start()returnsNRF_SUCCESS.I use key word to declare the variable of volatile static uint32_t err_code;`,but it does't work.

Parents
  • @Songplus: Have you tried ? It would only take no more than 5 minutes to test and I already said that it should work.

    Please try with unmodified bootloader in \examples\dfu\bootloader\pca10028\dual_bank_ble_s130 . If you use SDK v9.0 you should use S130 v1.0 If you use SDK v11.0 you should use S130 v2.0 Both work fine with MCP v3.10.0. You can find SDK version compatibility matrix here.

    Make sure, when you test, you select the .hex file and let the MCP generate the init data for you. After you test and find that it works, you can generate your .zip file and continue testing.

Reply
  • @Songplus: Have you tried ? It would only take no more than 5 minutes to test and I already said that it should work.

    Please try with unmodified bootloader in \examples\dfu\bootloader\pca10028\dual_bank_ble_s130 . If you use SDK v9.0 you should use S130 v1.0 If you use SDK v11.0 you should use S130 v2.0 Both work fine with MCP v3.10.0. You can find SDK version compatibility matrix here.

    Make sure, when you test, you select the .hex file and let the MCP generate the init data for you. After you test and find that it works, you can generate your .zip file and continue testing.

Children
No Data
Related