nrf52832 OTA over ESB based on SDK17.1.0

Hi everyone:    I developed an application based on ESB wireless communication protocol ofr the nRF52832, and I would like to perform an OTA DFU with it.    Do you know any example of some over the air FW upgrade of nRF52832 chip via ESB protocol.

    SDK is 17.1.0.

Best regards,

Lurn.

Parents
  • I only found examples of ble and uart in the dfu/secure_bootloader folder, Which one should I use or how should I modify it to adapt my program.

  • Hello,

    It is correct that you will only find BLE and UART in our samples, but I know that several customers have ported this to SPI, so if you need it over ESB, then that should also be possible. The transport layers in the bootloader for the nRF5 SDK are on purpose quite separated from the rest of the libraries, to make it easier to change the transport layer, or to add your own transport layer.

    But you do need to implement it yourself. Also note that we do not have the "DFU Master" as an official part of our SDK. We have tools like nrfutil (open source) or nRF Connect for Desktop (not open source), and applications for mobile phones that are open source (but mobile phones doesn't have ESB). However, there is an unofficial implementation (not properly tested. You can use it, but on your own "risk"), which you can find here. I have not tested these myself, but you can give it a go. I suggest you test out the UART master, in combination with the uart bootloader, and then you can port both to ESB once you are up and running.

    Best regards,

    Edvin

  • yes,I need a UART bootloader to update, so I just need use bootloader and MBR to test?

    If the test passes, how do I update the application.

    BR

    Lurn

  • So, I just use bootloader and MBR, the commands is

    nrfjprog --eraseall -f NRF52
    nrfjprog --program mbr_nrf52_2.4.1_mbr.hex --verify -f NRF52
    nrfjprog --program bootloader.hex --verify -f NRF52
    nrfjprog --reset -f NRF52

     I don't know if the commands is correct, so I also try this

    nrfutil settings generate --family NRF52 --application-version 0 --bootloader-version 0 --bl-settings-version 2 settings.hex
    nrfjprog --eraseall -f NRF52
    nrfjprog --program mbr_nrf52_2.4.1_mbr.hex --verify -f NRF52
    nrfjprog --program bootloader.hex --verify -f NRF52
    nrfjprog --program settings.hex --verify -f NRF52
    nrfjprog --reset -f NRF52

    but I can't see any logs. The bootloader is pca10040_uart_debug.

    BR

    Lurn

  • Lurn_Z said:
    If the test passes, how do I update the application.

    you can use nrfutil if you can send UART messages from your computer to your custom board.

    Make sure that in your bootloader project's (pca10040_uart_debug) sdk_config.h file these are set:

    NRF_LOG_ENABLED 1
    NRF_LOG_BACKEND_RTT 1

    They should be set to this by default, but it is worth checking if you can't see any logs.

    Make sure that you program the mbr and the bootloader, reset the device (nrfjprog --reset), and then open Segger RTT Viewer (in that order). Still no logs?

    You are able to see the logs from your application, so it should be possible.

    1. What SDK version are you using?

    2. Did you do something particular to make the application run on your custom board in your other application? Did you have to modify/change the board files?

    3. How do you compile your bootloader? (What compiler/IDE do you use?)

    4. Did you try debugging the bootloader? Set a breakpoint inside main(). Is it reached?

    5. Does your custom board have an LFXTAL?

  • I‘m sure sdk_config.h file are set like you said.

    Make sure that you program the mbr and the bootloader, reset the device (nrfjprog --reset), and then open Segger RTT Viewer (in that order). Still no logs?

    so I just program the mbr and bootloader without settings.hex?

    For your question.

    1. SDK is 17.1.0

    2. I just modify the uart TX/RX pin.

    3.The IDE is Keil5.

    4.I will try this.

    5.I only have a 32MHz Crystal

    BR

    Lurn

  • 4. Did you try debugging the bootloader? Set a breakpoint inside main(). Is it reached?

    The debugging process is OK, I will retry to program bootloader and mbr, maybe something wrong when I programing.

    5.I only have a 32MHz Crystal

    Sorry, I also have a 32.768khz clk.

    BR

    Lurn

Reply Children
No Data
Related