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

DFU using BLE

Hello all,

I am trying to update my firmware using BLE peripheral. I followed the instructions in this [tutorial] (devzone.nordicsemi.com/.../)

I downloaded the SoftDevice then downloaded the DFU example "dfu_dual_bank_ble_s110_pca10028"

Then I am trying to connect to the device by nRF Toolbox (DFU) but I can't!!

I spent a lot of time debugging and I found that the software is stuck inside "HardFault_Handler" and the last function before it loops infinitely was "crc16_compute"

Could anyone help ?

Parents
  • FormerMember
    0 FormerMember

    When going from QFAC to QFAA (32 kB RAM to 16 kB RAM), the linker settings have to be changed to the following:

    image description

    The hardfault occurs when the bootloader tries to read data from 0x20007f80. It therefore have to be changed to 20003f80.

    Let me know if it still doesn't work.

  • No even before starting to upload the new firmware, I can't connect to the device, the BLE is not advertising.

    My board is "Wireless-Tag WT51822-S2", it is a module that uses nRF51822-QFAA as (SoC) so it isn't a devkit.

    I used the DEBUG option and tried to go through the software step by step, and found that the last called function before the HardFault is crc16_compute.

    The function contains a for loop so if I put a break point after the loop, the software goes dead inside the HardFault trap, But if I step inside the for loop until it finishs, the software jumps to the function "app_error_handler" and stuck into the while(loop);

Reply
  • No even before starting to upload the new firmware, I can't connect to the device, the BLE is not advertising.

    My board is "Wireless-Tag WT51822-S2", it is a module that uses nRF51822-QFAA as (SoC) so it isn't a devkit.

    I used the DEBUG option and tried to go through the software step by step, and found that the last called function before the HardFault is crc16_compute.

    The function contains a for loop so if I put a break point after the loop, the software goes dead inside the HardFault trap, But if I step inside the for loop until it finishs, the software jumps to the function "app_error_handler" and stuck into the while(loop);

Children
No Data
Related