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

The Buttonless DFU Template Application is not working on a custom board

Hi,

I am currently working on a custom product that uses module BMD-300 from u-blox, which has nrf52382 chip in it. My application works fine and now I want to integrate the Secure DFU function into it. I programmed the board with the DFU test image sd_s132_bootloader_buttonless_with_setting_page_dfu_secure_ble_debug_without_bonds.hex but I could not see it advertising when I scan for devices on nrf Connect. Does anyone know what problem could cause it to not advertising? I am using sdk v15.0.0.

Thank you in advance.

Parents
  • The BMD-300 lacks the 32768 Hz RTC (LFXO) quarz crystal that most Nordic examples require. You need to change the LF clock configuration in the source code and recompile - or populate the quarz circuit on XTAL1/XTAL2.

  • I tried your suggestion but the problem still exists. I followed the instruction on this link Add Nordic DFU to SDK Example from u-blox, and then changed the clock configuration afterward, but I still could not see it on the nRF Connect Scanner.

    Now I think the custom board may behave different than the eval board, so I go straight into modify my firmware, which I know is working, and the scanner can see the device. After following the instruction on the link above, I can connect to it through nRF Connect and see the DFU service, but the device is frozen after a few seconds. Same thing happened when I use nRF Connect on Android. The nRF Connect on iOS, on the other hand, can connect to the device without any problem, but it doesn't see the DFU service.

    I know these maybe 2 different problems, but I just want to put it here in case you (or anybody) know the answer for the problems.

  • Edvin said:
    nrf_uarte_error_mask_t point to? Where is this defined?

     I am struggling with this one. Where is this defined? What file?

    in nrf_drv_uart.h, is NRF_DRV_UART_WITH_UARTE or NRF_DRV_UART_WITH_UART defined? Because in my project, with the sdk_config.h that you use, none of them are.

    In your sdk_config.h:

    UARTE_PRESENT 1
    NRFX_UARTE_ENABLED 0
    UART_PRESENT is defined
    NRFX_UART_ENABLED 0

    This makes neither of the checks:

    #if defined(UARTE_PRESENT) && NRFX_CHECK(NRFX_UARTE_ENABLED)
        #define NRF_DRV_UART_WITH_UARTE
    #endif
    #if defined(UART_PRESENT) && NRFX_CHECK(NRFX_UART_ENABLED)
        #define NRF_DRV_UART_WITH_UART
    #endif

    return true, so NRF_DRV_UART_WITH_UART nor NRF_DRV_UART_WITH_UARTE is defined.

    Best regards,

    Edvin

  • I am confused, I don't use uart and uarte in my project so I don't have them enabled in my sdk_config.h. Could you take out all the uart and uarte related file from the project and try again (also comment out the include "nrf_uart.h" and "nrf_uarte.h" in main.c)?

    Thank you,

    Vu

  • Hello,

    Sorry. I tried to copy your main.c file and the other files to the ble_app_uart example, hoping to be able to compile it, so that was why the uart drivers were still included.

    I spoke to our softdevice team. They say, based on your screenshot that it looks like an assert in sd_softdevice_enable. Do you happen to have optimization turned on? Can you try to turn it off? How does it behave then? Does it still stop in the same place?

    And can you confirm that you are using s132v6.0.0?

  • What interrupt priority does this hardfault occur? Where do you call send_update_request() from? I see that it is from a timeout handler, but on what IRQ is that?

  • What interrupt priority does this hardfault occur? Where do you call send_update_request() from? I see that it is from a timeout handler, but on what IRQ is that?

    How can I check these?

    Do you happen to have optimization turned on? Can you try to turn it off? How does it behave then?

    I already had optimization turn off.

    can you confirm that you are using s132v6.0.0?

    Yes, I am using s132v6.0.0.

Reply Children
Related