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

dfu fails only if bonded

Hello,

Thanks for reading this! I have an odd behavior on my nrf52832 where I am capable of uploading a new firmware via BLE DFU to the peripheral device if it is not bonded to the central device. However, when I bond, the DFU always fails. I suspect it is for this reason, ie the NOINIT section in the ram is not retaining my bond information when passing to the bootloader. I am using Elcipse GCC, so in order to rectify this, I have to modify this linker script: dfu_gcc_nrf52.ld. I dont know how to do so, can anyone point me in the right direction? Is there any way to check that there is indeed bond information retention?

Thank you very much for your time.

edit for phone screenshot: image description

Parents
  • Hello, thank you for answering,

    1. When I flash the device with the bootloader from sdk11 and the v2.0.07 s132 softdevice, it advertises and I can connect to it using the master control panel from my nexus 5.

    2. However, when I try to upload a new firmware (dfu_test_app_hrm_s132.zip taken directly from the examples in the sdk11), the master control panel does not seem to recognize it (the file is displayed but it is grayed out and I cannot select it).

    3. I cannot enter the application from the bootloader, even if I write a 0x01 to 0x7F000. Also, if I flash the device with s132 v 2.0.07 and my application, the application does not run seeing as it was conceived using a previous version of the softdevice/sdk. If I flash my device using the older softdevice and bootloader from sdk9.2, I am capable of doing a dfu perfectly fine so long as the device is not bonded.

    Do you recommend that I port all of my code to the new sdk or is there a way around all of this, where I can still use the older bootloader/s132 from sdk9.2 and still share bonding information? I am getting Sniffer working (mind you, I'm working on a nrf52, which does not appear on the list of required hardware in the sniffer user guide) and I will get you a trace of the failure when bonded using sdk9.2. Thank you so much for your help, by the way!

Reply
  • Hello, thank you for answering,

    1. When I flash the device with the bootloader from sdk11 and the v2.0.07 s132 softdevice, it advertises and I can connect to it using the master control panel from my nexus 5.

    2. However, when I try to upload a new firmware (dfu_test_app_hrm_s132.zip taken directly from the examples in the sdk11), the master control panel does not seem to recognize it (the file is displayed but it is grayed out and I cannot select it).

    3. I cannot enter the application from the bootloader, even if I write a 0x01 to 0x7F000. Also, if I flash the device with s132 v 2.0.07 and my application, the application does not run seeing as it was conceived using a previous version of the softdevice/sdk. If I flash my device using the older softdevice and bootloader from sdk9.2, I am capable of doing a dfu perfectly fine so long as the device is not bonded.

    Do you recommend that I port all of my code to the new sdk or is there a way around all of this, where I can still use the older bootloader/s132 from sdk9.2 and still share bonding information? I am getting Sniffer working (mind you, I'm working on a nrf52, which does not appear on the list of required hardware in the sniffer user guide) and I will get you a trace of the failure when bonded using sdk9.2. Thank you so much for your help, by the way!

Children
No Data
Related