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

Enabling DFU service in application

Hello,

I am using MDBT40 (www.raytac.com/.../MDBT40 spec-Version A5.pdf) in my project. Also I am using arduino IDE to create .hex file for MDBT40 using this reference link- github.com/.../arduino-nRF5

I tried OTA- DFU example provided in SDK V11 (S130 SoftDevice v2.0.0) infocenter guide. I created .zip file created by nrfutil.exe which includes .hex file arduino IDE and It worked fine.

Steps which I followed:

  1. Erase all (using nrfGo studio)

  2. Used bootloader example provided in install folder/nRF5_SDK_11.0.0_89a8197/examples/dfu/bootloader/hex/dfu_dual_bank_ble_s130_pca10028.hex

  3. Created .zip file using nrfutil.exe (using .hex file created by arduino IDE)- Command used: nrfutil.exe dfu genpkg --application Blink.hex --application-version 0xffffffff --dev-revision 1 --dev-type 1 --sd-req 0xfffe final.zip

  4. Nrf-toolbox app in android to upload .zip (directly uploaded without using 0x001 command)

  5. Done.

However, I want to enable DFU service in my application for consequent OTA update.

How can I enable DFU service in my application written in arduino IDE?

Creating .zip which includes application.hex file and dfu_dual_bank_ble_s130_pca10028.hex will work? I tried this, but code size exceed the limit to update firmware over the air. Just including bootloader will do my job?

"Extending your application" guide mentions that I need to include three files. Do I need to include this file in arduino sketch?

Thank you.

Parents
  • Hi Dhiraj,

    the Infocenter guide you're referring to explains how to add DFU support to an application that is written in C, i.e. using our SDK directly and not through a 3rd party library. Thus, including the 3 files mentioned in the guide will not work.

    I took a quick look at sandeepmistry's arduino-BLEPeripheral library and it appears that you will have to create the DFU service using the .cpp source, like sandeep did for the HID example.

    If you need support for Device Firmware Updates in your project, then I would recommend moving from the Arduino IDE and Sandeep's Library to using our SDK in Keil, Eclipse or Segger Embedded Studio.

    Bjørn

Reply
  • Hi Dhiraj,

    the Infocenter guide you're referring to explains how to add DFU support to an application that is written in C, i.e. using our SDK directly and not through a 3rd party library. Thus, including the 3 files mentioned in the guide will not work.

    I took a quick look at sandeepmistry's arduino-BLEPeripheral library and it appears that you will have to create the DFU service using the .cpp source, like sandeep did for the HID example.

    If you need support for Device Firmware Updates in your project, then I would recommend moving from the Arduino IDE and Sandeep's Library to using our SDK in Keil, Eclipse or Segger Embedded Studio.

    Bjørn

Children
Related