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

Serial DFU Timed Out Issue

Hi

 Development software- Nrf sdk 15.2.0

Computer platform, with versions (Windows/Linux/OSX, ...) : Using windows 7 and Segger IDE

hardware revisions - NRF52840 Development Kit,UART connected to  P0.6 and P0.8

I have tried  Serial DFU in nrf52840 kit With available example under DFU folder .For application Upgrade,i am using hrs-application.zip .

While run nrf util command immediately i got timed out error and My board get resetting. While upgrade board is in DFU mode . Please find the attached Screenshots for your reference.

Please help  me to resolve this.

Parents
  • Hi Raji, 

    Which version of nrfutil are you using to perform the DFU?

    How are you connecting the nRF52840 to the computer? Are you using a FTDI adapter?

    The UART bootloader in our SDK uses Hardware Flow Control (HWFC) by default, i.e. NRF_DFU_SERIAL_UART_USES_HWFC is set to 1 in sdk_config.h in the bootloader project. So you need set this to zero if you do not have any CTS/RTS pins. Note: The serial bootloader is designed to use HWFC so it may not work properly without HWFC for high baudrates. 

    Best regards

    Bjørn

  • Hi

     

    Which version of nrfutil are you using to perform the DFU? Version - 0.3.0

    How are you connecting the nRF52840 to the computer? Are you using a FTDI adapter? – Connecting to a computer via a FTDI adaptor

    The UART bootloader in our SDK uses Hardware Flow Control (HWFC) by default, i.e. NRF_DFU_SERIAL_UART_USES_HWFC is set to 1 in sdk_config.h in the bootloader project. So you need set this to zero if you do not have any CTS/RTS pins. Note: The serial bootloader is designed to use HWFC so it may not work properly without HWFC for high baudrates.  – Flow Control is disabled and have checked with baudrate of 9600 as well.

    Regards

    Raji

  • Hi Raji, 

    You are using a very old version of nrfutil that is not compatible with SDK v15.2.0. The following is stated in the nrfutil documentation

    The DFU package format transitioned from legacy to modern in SDK 12.0. Depending on the SDK version that you are using you will need to select a release of this tool compatible with it:

    • Version 0.5.2 generates legacy firmware packages compatible with nRF SDK 11.0 and older
    • Versions 1.5.0 and later generate modern firmware packages compatible with nRF SDK 12.0 and newer
    • Versions 4.0.0 and later generate modern firmware packages compatible with nRF SDK 15.1 and newer
    • Versions 5.0.0 and later generate modern firmware packages compatible with nRF SDK 15.3 and newer

    Please download version v4.0.0 using this link and generate a new image. Also make sure that you connect the CTS/RTS pins of your FTDI adapter. If it does not have CTS/RTS pins, then you need to disable HWFC in the bootloader firmware as I have explained in my previous reply. 

    -Best regards

    Bjørn

  • Hi

      I have tested with V4.0.0 nrfutil for serial update.

    Here i have attached the screenshot of the error  during serial update... .Please help to solve this issue.

Reply Children
  • Can you post the nrfutil command that generated the output ?

    Which pins on the nRF52840 DK are you connecting the FTDI cables to?

    Have you disabled HWFC in the bootloader code?

    Can you attach the log output from the bootloader example?

  • 1. HWFC is disabled in sdkconfig.h

    2. UART PINS i have connected with P0.6 and P0.8 for tx and Rx respectively.

    3. nrfutil Version 4.0.0 ,SDK Version -15.2

    4. nrfutil command screenshot here i have attached while updatiing firmware.

    5. Bootloader debug messages also attached for your reference.

    Please help me to solve this issue.

     0> <info> app: Inside main
     0> <debug> app: In nrf_bootloader_init
     0> <debug> nrf_dfu_settings: Calling nrf_dfu_settings_init()...
     0> <debug> nrf_dfu_flash: Initializing nrf_fstorage_nvmc backend.
     0> <debug> nrf_dfu_settings: Settings OK
     0> <debug> app: Enter nrf_bootloader_fw_activate
     0> <info> app: No firmware to activate.
     0> <debug> app: Enter nrf_dfu_app_is_valid
     0> <debug> app: CRC check of app failed. Return 1
     0> <debug> app: DFU mode requested via button.
     0> <info> nrf_bootloader_wdt: WDT is not enabled
     0> <debug> app: in weak nrf_dfu_init_user
     0> <debug> app: timer_stop (0x20000024)
     0> <debug> app: timer_activate (0x20000024)
     0> <info> app: Entering DFU mode.
     0> <debug> app: Initializing transports (found: 1)
     0> <debug> nrf_dfu_serial_uart: serial_dfu_transport_init()
     0> <debug> nrf_dfu_serial_uart: serial_dfu_transport_init() completed
     0> <debug> nrf_dfu_flash: Initializing nrf_fstorage_nvmc backend.
     0> <debug> app: Enter main loop
     0> <debug> app: timer_stop (0x20000024)
     0> <debug> app: timer_fire (0x20000024)
     0> <info> app: Inactivity timeout.
     0> <debug> app: Resetting bootloader.
     0> <info> nrf_dfu_settings: Backing up settings page to address 0xFE000.
     0> <debug> nrf_dfu_settings: Destination settings are identical to source, write not needed. Skipping.
     0> lid
     0> <debug> app: CRC check of app failed. Return 1
     0> <warning> nrf_dfu_settings: No additional data erased
     0> <info> nrf_dfu_settings: Backing up settings page to address 0xFE000.
     0> <debug> nrf_dfu_settings: Destination settings are identical to source, write not needed. Skipping.
     0> <debug> app: Running nrf_bootloader_app_start with address: 0x00001000
     0> <debug> app: Disabling interrupts. NVIC->ICER[0]: 0x0
     0> <debug> app: running irq table set
     0> <debug> app: After running irq table set
     0> <info> app: Inside main
     0> <debug> app: In nrf_bootloader_init
     0> <debug> nrf_dfu_settings: Calling nrf_dfu_settings_init()...
     0> <debug> nrf_dfu_flash: Initializing nrf_fstorage_nvmc backend.
     0> <debug> nrf_dfu_settings: Settings OK
     0> <debug> app: Enter nrf_bootloader_fw_activate
     0> <info> app: No firmware to activate.
     0> <debug> app: Enter nrf_dfu_app_is_valid
     0> <debug> app: CRC check of app failed. Return 1
     0> <warning> nrf_dfu_settings: No additional data erased
     0> <info> nrf_dfu_settings: Backing up settings page to address 0xFE000.
     0> <debug> nrf_dfu_settings: Destination settings are identical to source, write not needed. Skipping.
     0> <debug> app: Running nrf_bootloader_app_start with address: 0x00001000
     0> <debug> app: Disabling interrupts. NVIC->ICER[0]: 0x0
     0> <debug> app: running irq table set
     0> <debug> app: After running irq table set
     0> <info> app: Inside main
     0> <debug> app: In nrf_bootloader_init
     0> <debug> nrf_dfu_settings: Calling nrf_dfu_settings_init()...
     0> <debug> nrf_dfu_flash: Initializing nrf_fstorage_nvmc backend.
     0> <debug> nrf_dfu_settings: Settings OK
     0> <debug> app: Enter nrf_bootloader_fw_activate
     0> <info> app: No firmware to activate.
     0> <debug> app: Enter nrf_dfu_app_is_valid
     0> <debug> app: CRC check of app failed. Return 1
     0> <warning> nrf_dfu_settings: No additional data erased
     0> <info> nrf_dfu_settings: Backing up settings page to address 0xFE000.
     0> <debug> nrf_dfu_settings: Destination settings are identical to source, write not needed. Skipping.
     0> <debug> app: Running nrf_bootloader_app_start with address: 0x00001000
     0> <debug> app: Disabling interrupts. NVIC->ICER[0]: 0x0
     0> <debug> app: running irq table set
     0> <debug> app: After running irq table set
     0> <info> app: Inside main
     0> <debug> app: In nrf_bootloader_init
     0> <debug> nrf_dfu_settings: Calling nrf_dfu_settings_init()...
     0> <debug> nrf_dfu_flash: Initializing nrf_fstorage_nvmc backend.
     0> <debug> nrf_dfu_settings: Settings OK
     0> <debug> app: Enter nrf_bootloader_fw_activate
     0> <info> app: No firmware to activate.
     0> <debug> app: Enter nrf_dfu_app_is_valid
     0> <debug> app: CRC check of app failed. Return 1
     0> <debug> app: DFU mode requested via button.
     0> <info> nrf_bootloader_wdt: WDT is not enabled
     0> <debug> app: in weak nrf_dfu_init_user
     0> <debug> app: timer_stop (0x20000024)
     0> <debug> app: timer_activate (0x20000024)
     0> <info> app: Entering DFU mode.
     0> <debug> app: Initializing transports (found: 1)
     0> <debug> nrf_dfu_serial_uart: serial_dfu_transport_init()
     0> <debug> nrf_dfu_serial_uart: serial_dfu_transport_init() completed
     0> <debug> nrf_dfu_flash: Initializing nrf_fstorage_nvmc backend.
     0> <debug> app: Enter main loop
    

    Regards

    Raji

  • Could you try to change the UART pins from P0.06 and P0.07 to pins that are not connected to the interface MCU, e.g. P0.28 and P0.29?

Related