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

OTA Thread DFU: Merge SDK example with custom application

Hi all!

I'm able to fully test the SDK example https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsdk_tz_v3.2.0%2Fthread_example_dfu.html and it works pretty well.

Now, the next step is the integration of this OTA DFU over Thread example in my custom application (that already exploits Thread and MQTT-SN protocol).

I haven't found a tutorial that explains step-by-step this kind of operation. 

Basically I need some help to integrate the DFU client with the user application. I think the key point is the IoT SDK CoAP library that implement a DFU algorithm that should run concurrently to the user application, but I'm a bit confused about merging process.

Thanks in advance,

Alessio

Parents
  • I think I need some clarifications about flashing different FW components.

    In order to have the OTA DFU example working, I have to flash:

    • mbr_nrf52_2.4.1_mbr.hex (MBR)
    • nrf52840_xxaa_mbr.hex (BOOTLOADER)
    • dfu_client.hex (EXAMPLE HEX)

    In order to have my application working, I have to flash:

    • s140_nrf52_7.0.1_softdevice.hex (SOFTDEVICE)
    • my_app.hex (APPLICATION HEX)

    At the moment, I have merged the two application codes and, let's say, I have the  

    my_app_DFU.hex

    I have tried to flash all the components:

    1. mbr_nrf52_2.4.1_mbr.hex (MBR)
    2. nrf52840_xxaa_mbr (BOOTLOADER)
    3. s140_nrf52_7.0.1_softdevice.hex (SOFTDEVICE)
    4. my_app_DFU.hex (APPLICATION+DFU HEX)

    I received back this when I flash the SD

    and this when I flash the application

    Moreover, the dongle is stucked with the green led lit up.

    Maybe I am supposed to do some mergehex operations?

    Thanks,

    Alessio 

     

  • Hi,

    You do not need to flash both the MBR and Softdevice HEX-files. The MBR is merged into the softdevice, and you will find that if you do a compare, the first page (0x0 - 0x1000) will be identical.

    The Bootloader needs information about the application in order to verify that it is a valid application. This means that you either needs to generate the settings using nrfutil, or create a DFU packet of the application and "flash" it using the DFU process. 

    I recommend that you follow the instructions in the Testing section of the Thread Secure OTA DFU Example, especially steps 3.c-d.

    Best regards,
    Jørgen 

  • Yes, I got it right 10min ago, I had a try flashing SD + BL + APP (app + settings) as you linked in the guide.

    The setup doesn't work, so I thought it was a code problem and I tried to enter in debug mode.

    To avoid problems, since I am newbie in these aspects, I started the debug on SES so I think the right components are flashed directly by SES via Jlink.

    I found my code stucked here:

    that is part of this function in my main:

    If I comment that line the application FW works as usual, without the DFU part.

    Seems like there are some problems with openthread lib, since the FW stucks here:

    I tried to understand more debugging DFU example and there the code run smoothly.

    The only difference I found between the two cases is this one:

    DFU example (from which I copy-paste the code) uses blue-marked files, while my application uses red-marked files (obviously because DFU example doesn't exploit SD and my application does).

    I can't keep them together otherwise I get "multiple definitions" build error.

    Could this be the problem?

Reply
  • Yes, I got it right 10min ago, I had a try flashing SD + BL + APP (app + settings) as you linked in the guide.

    The setup doesn't work, so I thought it was a code problem and I tried to enter in debug mode.

    To avoid problems, since I am newbie in these aspects, I started the debug on SES so I think the right components are flashed directly by SES via Jlink.

    I found my code stucked here:

    that is part of this function in my main:

    If I comment that line the application FW works as usual, without the DFU part.

    Seems like there are some problems with openthread lib, since the FW stucks here:

    I tried to understand more debugging DFU example and there the code run smoothly.

    The only difference I found between the two cases is this one:

    DFU example (from which I copy-paste the code) uses blue-marked files, while my application uses red-marked files (obviously because DFU example doesn't exploit SD and my application does).

    I can't keep them together otherwise I get "multiple definitions" build error.

    Could this be the problem?

Children
No Data
Related