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

nrf51-ble-app-temp Example - DFU App returns error

(Before debugging with IAR, I downloaded both the bootloader.hex and s110 7.1 hex with nrfjprog.exe)

  • Modified SDK files : bootloader_util_arm.c

(copied asm code SDK 8.1 since I use ICCARM, thanks to Vidar Berg for answering my prev question.)

  • Using nRFGo Studio 1.19.0

  • Board : PCA10001 V 2.0.0 (Rev. 2 MCU)

  • Test device : Nexus 5 (Android 5.1.1) and iPhone 6+ (iOS 8.4)

  • Toolbox App Version : 1.14.1 (at Nexus 5) & 2.1 (at iPhone 6+)

  • nRF Loader iOS App (Ver 1.0.0) : Cannot scan the board

/************************/

Hi, before defining "BLE_DFU_APP_SUPPORT" the example worked well.

However, after defining, both Tool kit app showed error.

At iOS,

iOS

The "nRF Loader" app doesn't scan the board.

Loader

Where as, at Android

An1

I selected "NO".

An2

An3

Master

What could be the reason?

Added 8, July, 2015 :

I noticed that, at debugging mode and after calling on_rw_auth_req (at ble_dfu.c),

the board falls into a HardFault_handler.

I couldn't check the returned error number from on_ctrl_pt_write.

Added : 12, July, 2015 : I tried to open your bootloader IAR project.

However, it showed this message 6 times.

msg

log

So, I followed your linker script settings manually.

I also changed the ble_stack_init as well.

Thanks to you, if there isn't application at memory 0x16000,

the firmware update over the air (DFU) is managed successfully.

I tested with the test devices mentioned above (Nexus 5 and iPhone 6+).

linker 1 linker 2

linker 3

After downloading the bootloader firmware,

I changed the linker setting of the nrf51-ble-app-temp example.

  1. Is this setting in the nrf51-ble-app-temp example's linker script is fine?

I took a guess using this memory layout.

  1. The hilarious thing is that, after downloading this nrf51-ble-app-temp example,

I tried the DFU using the nRF Toolbox app and failed.

With detail, when using the Nexus 5, it sometimes update the firmware.

(Edited : Now the Nexus 5 works well.)

Whereas when using the iPhone 6+, the app kept shows "waiting".

I placed a breakpoint at the bootloader project after the board was advertising HRS.

I noticed that, when using the iPhone 6+, after requesting upload, the breakpoint didn't triggered.

The firmware was kept running at the nrf51-ble-app-temp example.

However, it did not lost connection together.

So, what could be the problem?

-Regards, Mango922

Parents
  • Bond sharing between application and bootloader was added in SDK 7.0.0 which relies on the assembly routines in dfu_ble_svc.c (bootloader) to fetch the bond data. IAR support for this was added in SDK 8.1.0

    I have attached the bootloader from SDK 8.1.0 configured for running on PCA10001 with the 2nd rev chip in addition to the ble_app_hrs .zip package which can be used for testing of DFU.

    nRF Loader for iOS is deprecated and should only be used for legacy support. nRFtoolbox/Master control panel(not available on iOS) are now the recommend applications for doing DFU.

    Changes:

    • Enabled CPU blocking due to PAN #44 and #45, see ble_stack_init()
    • Changed board pinout
    • Adjusted the linker so the RAM usage would not exceed 16K.

    Attachments:

    dfu_iar_pca10001.zip

    IAR_ble_app_hrs.zip

    Note that the init file became a requirement in SDK version 7.0.0 and later. Details on how to create a init file for your own application is documented here.

Reply
  • Bond sharing between application and bootloader was added in SDK 7.0.0 which relies on the assembly routines in dfu_ble_svc.c (bootloader) to fetch the bond data. IAR support for this was added in SDK 8.1.0

    I have attached the bootloader from SDK 8.1.0 configured for running on PCA10001 with the 2nd rev chip in addition to the ble_app_hrs .zip package which can be used for testing of DFU.

    nRF Loader for iOS is deprecated and should only be used for legacy support. nRFtoolbox/Master control panel(not available on iOS) are now the recommend applications for doing DFU.

    Changes:

    • Enabled CPU blocking due to PAN #44 and #45, see ble_stack_init()
    • Changed board pinout
    • Adjusted the linker so the RAM usage would not exceed 16K.

    Attachments:

    dfu_iar_pca10001.zip

    IAR_ble_app_hrs.zip

    Note that the init file became a requirement in SDK version 7.0.0 and later. Details on how to create a init file for your own application is documented here.

Children
No Data
Related