Background DFU error NRF_ERROR_SVC_HANDLER_MISSING

hello

I used nrf52840 with SDK15.3.

1.I use the example in this ticket and adjusted the baud rate to 9600 without hardware flow control.After SES is compiled, an "NRF_ERROR_SVC_HANDLER_MISSING" error is reported in the background upgrade.After keil is compiled, an "Fatal error" is reported in the background upgrade.I have tried to change the serial port interrupt priority, but failed. How do I solve this problem?

https://devzone.nordicsemi.com/f/nordic-q-a/46994/background-dfu-application-source-code.

2.where can I find ble Background DFU application source code ?

Parents
  • Hi,

    1.I use the example in this ticket and adjusted the baud rate to 9600 without hardware flow control.After SES is compiled, an "NRF_ERROR_SVC_HANDLER_MISSING" error is reported in the background upgrade.After keil is compiled, an "Fatal error" is reported in the background upgrade.I have tried to change the serial port interrupt priority, but failed. How do I solve this problem?

    Can you tell me which API returns this error? There was some mishandling of uart error handling that caused to return the ERRORSRC value as return value without changing this error source to driver related error number. Maybe you are seeing the same thing? The API which causes this error will tell more about the error cause. This error code is discussed a lot in devzone, have you checked to see if one of those helps with your issue?

    2.where can I find ble Background DFU application source code ?

    We had tihs on the older nRF5SDK where we had sample for application part and bootloader part of background DFU, you can download that SDK here

  • <info> nrf_dfu_serial_uart: Allocated buffer 20007D68

    <error> app: ERROR 1 [NRF_ERROR_SVC_HANDLER_MISSING] at F:\DFU\nRF_SDK_15.3.0_background_dfu\components\libraries\bootloader\serial_dfu\nrf_dfu_serial_uart.c:145

    PC at: 0x0003E67B

    <error> app: End of error report

Reply Children
  • What you are seeing is NRF_UARTE_ERROR_OVERRUN_MASK.in the driver that was NOT translated to application specific error number. What you are seeing is overrun error in the uart which most of the time happen when you are not using hardware flow control with the uart. Did you enable hardware flow control in the UART? if not, please enable it. It needs two additional gpios to be dedicated for the flow control to work.

  • 9600 baud no flow control can be used in the foreground upgrade program,why are there no mistakes?My progaram is ready to use RS485 bus and 9600 band without flow control ,how to achieve normal DFU data fransmission?

  • overrun error occurs when using higher baudrate than what your application can handle. Your application needs to pull/read the received bytes at a bit faster rate than the peer is transmitting. Some applications are busy doing something else in different context than reading the received bytes. With no flow control the UART peripheral has no means to tell the peer to pause the transmission. 

    Your system seems that the application is not higher priority to first read the incoming data from UART. This means that your application has other higher priority computations/processing to do (most like post processing of RX bytes taking too long). Test your system with hardware flow control if you want higher baudrate else use lower baudrate, it is just that simple.

Related