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

Problem with BLE DFU

Hello!

I have a problem with ble DFU application upgrade. I use the Master Control Panel 3.10.0.14 under Win 7 on virtual machine and nordic ble usb dongle. On the firmware Soft Device S110 8.0.0, a boot loader dfu dual bank based on the example in SDK 9.0.0.

My application use the SDK 10.0.0 and it switch in bootloader/DFU mode. The communication is established and data packet transmission begin correctly but often the master control stop the communication on an acknowledgement timeout.

Did you have any feedbacks from other users with a similar issues and eventually a fix?

Regards,

  • Hi Phlb,

    Which image file did you use to update the firmware ? How did you flash your application at the beginning ? Did you modify anything with the bootloader ? Could you try to capture a sniffer trace when the failure occurs ?

  • I use HEX file generated by IAR with my application project (based on Nordic HRS example). It's the same behavior with original Nordic HRS HEX file.

    Sometimes upgrade process is done without any problem, and sometimes I retry several times the upgrade process failed at 20%, 60%... .

    In bootloader I modified the main.c. I removed led and button code management for the Nordic Development Board.

    I flashed the application, bootloader and soft device with the nrfGoStudio.

    Another detail, I use a nrf51822 AC.

    I don't have a sniffer hardware and software at this day.

    I modified the ICF file for linker.

    /###ICF### Section handled by ICF editor, don't touch! / /-Editor annotation file-/ / IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" / /-Specials-/ define symbol ICFEDIT_intvec_start = 0x3c000; /-Memory Regions-/ define symbol ICFEDIT_region_ROM_start = 0x3c000; define symbol ICFEDIT_region_ROM_end = 0x3fbff; define symbol ICFEDIT_region_RAM_start = 0x20002c00; define symbol ICFEDIT_region_RAM_end = 0x20007f7f; /-Sizes-/ define symbol ICFEDIT_size_cstack = 0x800; define symbol ICFEDIT_size_heap = 0x200; /*** End of ICF editor section. ###ICF###*/

    define memory mem with size = 4G; define region ROM_region = mem:[from ICFEDIT_region_ROM_start to ICFEDIT_region_ROM_end]; define region RAM_region = mem:[from ICFEDIT_region_RAM_start to ICFEDIT_region_RAM_end];

    define block CSTACK with alignment = 8, size = ICFEDIT_size_cstack { }; define block HEAP with alignment = 8, size = ICFEDIT_size_heap { };

    initialize by copy { readwrite }; do not initialize { section .noinit };

    keep { section .intvec }; place at address mem:ICFEDIT_intvec_start { readonly section .intvec }; place in ROM_region { readonly }; place in RAM_region { readwrite, block CSTACK, block HEAP };

  • Hi phlb,

    Attached is the hex files that I used to test here. There is a bootloader hex and the application hex. The "Enter bootloader" button is removed just in case you don't have the same button on your board. The application hex is the HRM with dfu. Could you please try to flash the bootloader and S110 v8.0 and do DFU to update the application hex ?

    This is just to clarify the issue was not with the hardware.

    Also please send us your Master Control panel log file when you test with your bootloader. nrf51422_xxac_s110.hex

    Bootloader_S110v8.0.hex

  • I will try this week end. I'll keep you informed. Thanks.

Related