Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

FDS Flash write operations halts device

Hello,

nRFSDK5 v16.0, device nRF52840, Softdevice v7.0.1

I am trying to write some data periodically onto device flash memory using FDS Lib, occasionally I come across following error message. Can anybody help?

00> <error> app: ERROR 34310 [Unknown error code] at E:\COBRA-Hotshot_Firing_System\Hotshot_Firmware\ignite_hw_v1.6\Hotshot_firmware\Operations\fds_driver.c:578
00> PC at: 0x000412CB
00> <error> app: End of error report

Here is my code function to write data:

#define LOG_FILE_ID     (0xE010)
#define LOG_REC_KEY     (0x6010)

// structure to save log_table
typedef  struct{
    char log_table[LOG_DATA_SIZE];
} log_value_t;



static log_value_t log_dummy_cfg =
{
    .log_table = "",
};

static fds_record_t const log_dummy_record =
{
    .file_id  = LOG_FILE_ID,
    .key      = LOG_REC_KEY,
    .data.p_data = &log_dummy_cfg,
    .data.length_words = LOG_DATA_SIZE/4,  //(sizeof(&log_dummy_cfg) + 3) / sizeof(uint32_t),
    //.data.p_data = sizeof(&rgb_dummy_cfg),
};



void record_update_log(char log_data[], int len){
    ret_code_t rc;
    fds_record_desc_t desc = {0};
    fds_find_token_t  tok  = {0};

    NRF_LOG_INFO("Updating LOG Record...");

    // copy data into log_dummy_cfg
    //int len = sizeof(log_dummy_cfg.log_table);
    int i=0; 
    for (i=0; i<len; i++){
        log_dummy_cfg.log_table[i] = log_data[i];
    }
    for (i=len; i<log_dummy_record.data.length_words*4; i++){
        log_dummy_cfg.log_table[i] = 0;
    }
    
//    NRF_LOG_INFO("Copied/dummy log");
//    NRF_LOG_HEXDUMP_INFO(log_dummy_cfg.log_table, sizeof(log_dummy_cfg.log_table));
//    NRF_LOG_INFO("Copied/dummy log len: %d", len); //strlen(scr_dummy_cfg.script))

    wait_for_fds_ready();

    rc = fds_record_find(LOG_FILE_ID, LOG_REC_KEY, &desc, &tok);
    if (rc == FDS_SUCCESS){
        // LOG record found
        NRF_LOG_INFO("LOG record found");    
        rc = fds_record_update(&desc, &log_dummy_record);
        APP_ERROR_CHECK(rc);
        if (rc == FDS_SUCCESS){
            NRF_LOG_INFO("LOG record updated: %X", log_dummy_cfg.log_table);
            NRF_LOG_INFO("LOG record id: %d", desc.record_id);
        }
    }
    else{
        // System config not found; write a new one.
        NRF_LOG_INFO("Creating new LOG file...");

        rc = fds_record_write(&desc, &log_dummy_record);
        APP_ERROR_CHECK(rc);
    }
}

Parents Reply Children
No Data
Related