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
    1. Regardless whether the peripheral pairs or bond with the central (in this case, the iPhone),

    does iOS caches the attribute table? This is the reason why, after changing the device's name,

    the iPhone shows the past name, is it?

    1. This example uses Heart Rate Service. Due to this reason, I cannot clear bonding

    in settings -> Bluetooth because this service only pairs. Then what should I do?

    Added : Sorry for not mentioning. I was using SDK7.2.

Reply
    1. Regardless whether the peripheral pairs or bond with the central (in this case, the iPhone),

    does iOS caches the attribute table? This is the reason why, after changing the device's name,

    the iPhone shows the past name, is it?

    1. This example uses Heart Rate Service. Due to this reason, I cannot clear bonding

    in settings -> Bluetooth because this service only pairs. Then what should I do?

    Added : Sorry for not mentioning. I was using SDK7.2.

Children
No Data
Related