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

APP fail after DFU

Hello, Nordic!

I'm developing with nrf52832, s132_nrf52_6.1.0_softdevice, sdk nRF5_SDK_15.2.0_9412b96

I had test power down chip, close APP while being DFU.

It would roll back to original FW as expected.

But sometimes I got an error after excute DFU by APP ( about 30/1000 ). So I saw that log

 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> <debug> app: Valid App
 0> <debug> app: Enter nrf_dfu_app_continue
 0> <error> app: Received a fault! id: 0x00004002, pc: 0x00000000, info: 0x20006240

It roll back to original FW fail after DFU.

Maybe both DFU and original fw are damaged?

And it is weird that I can read out SD, bootloader and App by nrf_Studio evne original FW readback_protect is enable.

As I known the only way to disable readback_protect is erase_all the flash.

I don't know the reason why to happen.

Let me know how to deal pleaze.

Thank you

Parents
  • Hello,

    Fault id 0x4002 corresponds to NRF_FAULT_ID_SDK_ASSERT which indicates that one of the assert checks failed during FW activation. Can you try to read out the info pointer like we do in the app_error_weak.c:app_error_fault_handler() used by the regular BLE examples to find out which assertion it is? I think it's a bit strange that it doesn't occur more consistently. 

    Log file name and line number of where the assertion occurred:

            case NRF_FAULT_ID_SDK_ASSERT:
            {
                assert_info_t * p_info = (assert_info_t *)info;
                NRF_LOG_ERROR("ASSERTION FAILED at %s:%u",
                              p_info->p_file_name,
                              p_info->line_num);
                break;
            }

    Best regards,

    Vidar

Reply
  • Hello,

    Fault id 0x4002 corresponds to NRF_FAULT_ID_SDK_ASSERT which indicates that one of the assert checks failed during FW activation. Can you try to read out the info pointer like we do in the app_error_weak.c:app_error_fault_handler() used by the regular BLE examples to find out which assertion it is? I think it's a bit strange that it doesn't occur more consistently. 

    Log file name and line number of where the assertion occurred:

            case NRF_FAULT_ID_SDK_ASSERT:
            {
                assert_info_t * p_info = (assert_info_t *)info;
                NRF_LOG_ERROR("ASSERTION FAILED at %s:%u",
                              p_info->p_file_name,
                              p_info->line_num);
                break;
            }

    Best regards,

    Vidar

Children
No Data
Related