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

Flash FDS initialization failure

When the nRF52 micro-controller is programmed through batch file i.e. nrfjprog utility, the flash fds fails to initialize. Every time, flash fds initialization fails, I have code for soft_Reset.

Initialization fails 3 times and then Flash FDS initializes with success.

After a bit of debugging, I found out fds_register(flash_fds_evt_handler) returns with Success. fds_init() returns with Success.

But the flash_fds_evt_handler() never gets called in the first 3 attempts.

Any insight will be helpful.

I have attached the code snippet below. I am using nRF52932 microcontroller, SDK12.2.0, softdevice s132 v3.0.0

ble_stack_init();

// fds must be initialized after the Softdevice, as it uses the system event to run
flash_fds_init();           
// must wait for fds to initializ
while(!fds_init_complete)   
{
    power_led_red_on();
    nrf_delay_ms(1000);
    NVIC_SystemReset();
}
// use fds to get the auth params (first time though, this Writes the default auth params) 
load_auth_params();
Parents
  • You forgot to add the fstorage system event handler. If you look at the main C file there should be a function called sys_evt_dispatch. Add a call to fs_sys_evt_handler() there and pass it the system event received in that function.

    This is not necessary after the new SoftDevice handler was introduced, but SDK 12.2 didn't have that.

  • I knew about this issue. So, I have already added this. Still, it did not fix the problem.

    I have added code snippet for your reference.

    Following is part of sys_evt_dispatch(uint32_t sys_evt) function call:

    fs_sys_event_handler(sys_evt);
    ble_advertising_on_sys_evt(sys_evt);
    

    Following is part of ble_stack_init() function call: // Register with the SoftDevice handler module for BLE events. err_code = softdevice_ble_evt_handler_set(ble_evt_dispatch); APP_ERROR_CHECK(err_code);

    // Register with the SoftDevice handler module for System events.
    err_code = softdevice_sys_evt_handler_set(sys_evt_dispatch);
    APP_ERROR_CHECK(err_code);
    
Reply
  • I knew about this issue. So, I have already added this. Still, it did not fix the problem.

    I have added code snippet for your reference.

    Following is part of sys_evt_dispatch(uint32_t sys_evt) function call:

    fs_sys_event_handler(sys_evt);
    ble_advertising_on_sys_evt(sys_evt);
    

    Following is part of ble_stack_init() function call: // Register with the SoftDevice handler module for BLE events. err_code = softdevice_ble_evt_handler_set(ble_evt_dispatch); APP_ERROR_CHECK(err_code);

    // Register with the SoftDevice handler module for System events.
    err_code = softdevice_sys_evt_handler_set(sys_evt_dispatch);
    APP_ERROR_CHECK(err_code);
    
Children
No Data
Related