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

The Buttonless DFU Template Application is not working on a custom board

Hi,

I am currently working on a custom product that uses module BMD-300 from u-blox, which has nrf52382 chip in it. My application works fine and now I want to integrate the Secure DFU function into it. I programmed the board with the DFU test image sd_s132_bootloader_buttonless_with_setting_page_dfu_secure_ble_debug_without_bonds.hex but I could not see it advertising when I scan for devices on nrf Connect. Does anyone know what problem could cause it to not advertising? I am using sdk v15.0.0.

Thank you in advance.

  • 00> <info> app: Inside main
    00> <debug> app: In nrf_bootloader_init
    00> <debug> nrf_dfu_settings: Calling nrf_dfu_settings_init()...
    00> <debug> nrf_dfu_flash: Initializing nrf_fstorage_nvmc backend.
    00> <debug> nrf_dfu_settings: Resetting bootloader settings.
    00> <debug> nrf_dfu_settings: Writing settings...
    00> <debug> nrf_dfu_settings: Erasing old settings at: 0x0007F000
    00> <debug> nrf_dfu_flash: nrf_fstorage_erase(addr=0x0x0007F000, len=1 pages), queue usage: 0
    00> <debug> nrf_dfu_flash: Flash erase success: addr=0x0007F000, pending 0
    00> <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x0007F000, src=0x200092A4, len=440 bytes), queue usage: 1
    00> <debug> nrf_dfu_flash: Flash write success: addr=0x0007F000, pending 0
    00> <debug> app: Enter nrf_bootloader_fw_activate
    00> <info> app: No firmwareto activate.
    00> <debug> app: Enter nrf_dfu_app_is_valid
    00> <debug> app: Return false in valid app check
    00> <debug> app: DFU mode because app is not valid.
    00> <info> nrf_bootloader_wdt: WDT is not enabled
    00> <debug> app: in weak nrf_dfu_init_user
    00> <info> app_timer: <info> app: Inside main
    00> <debug> app: In nrf_bootloader_init
    00> <debug> nrf_dfu_settings: Calling nrf_dfu_settings_init()...
    00> <debug> nrf_dfu_flash: Initializing nrf_fstorage_nvmc backend.
    00> <debug> app: Enter nrf_bootloader_fw_activate
    00> <info> app: No firmware to activate.
    00> <debug> app: Enter nrf_dfu_app_is_valid
    00> <debug> app: Return false in valid app check
    00> <debug> app: DFU mode because app is not valid.
    00> <info> nrf_bootloader_wdt: WDT is not enabled
    00> <debug> app: in weak nrf_dfu_init_user
    00> <info> app_timer: RTC: initialized.
    00> <info> app: Entering DFU mode.
    00> <debug> app: Initializing transports (found: 1)
    00> <debug> nrf_dfu_ble: Initializing BLE DFU transport
    00> <debug> nrf_dfu_ble: Setting up vector table: 0x00072000
    00> <debug> nrf_dfu_ble: Enabling SoftDevice.
    00> <debug> nrf_dfu_ble: Configuring BLE stack.
    00> <debug> nrf_dfu_ble: Enabling the BLE stack.
    00> <debug> nrf_dfu_ble: No advertising name found
    00> <debug> nrf_dfu_ble: Using default advertising name
    00> <debug> nrf_dfu_ble: Advertising...
    00> <debug> nrf_dfu_ble: BLE DFU transport initialized.
    00> <debug> nrf_dfu_flash: Initializing nrf_fstorage_sd backend.
    00> <debug> app: Enter main loop

    Here is the log when I run the _debug project. I still can't see the Dfu Targ device when scanning on nRF Connect

  • Now when I rerun it I got an error

    00> <error> app: Fatal error at line 61 in F:\2790_002\sdk\components\libraries\util\app_error_weak.c

    Tracing in the code, line 61 is in the function __WEAK void app_error_fault_handler(uint32_t id, uint32_t pc, uint32_t info), which is called in sd_softdevice_enable(&clock_lf_cfg, app_error_fault_handler) or __WEAK void assert_nrf_callback(uint16_t line_num, const uint8_t * file_name). The clock is set as follow:

    nrf_clock_lf_cfg_t const clock_lf_cfg =
    {
    .source = NRF_CLOCK_LF_SRC_RC ,
    .rc_ctiv = 0,
    .rc_temp_ctiv = 0,
    .accuracy = NRF_CLOCK_LF_ACCURACY_500_PPM
    };

  • Try setting:

    NRF_SDH_CLOCK_LF_RC_CTIV = 16 and

    NRF_SDH_CLOCK_LF_RC_TEMP_CTIV = 2 in sdk_config.h of your bootloader project.

    You should set these equal to what you set them to in your application's sdk_config.h file.

  • Thank you, my bootloader works now. But my application still freeze after connect on nRF Connect on PC (I haven't even tried to connect to DFU yet). On iOS, I can connect to nRF Connect without freezing, but cannot get into DFU mode. What do you think could cause the problem?

Related