<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>I have a Problem about Reading data from flash memory of NRF52833</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/90138/i-have-a-problem-about-reading-data-from-flash-memory-of-nrf52833</link><description>I can not read data from Flash memory after I reset my NRF. What happen. And I also wanna ask about Token. Token is for what? How can I use this ?\</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 20 Jul 2022 04:23:58 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/90138/i-have-a-problem-about-reading-data-from-flash-memory-of-nrf52833" /><item><title>RE: I have a Problem about Reading data from flash memory of NRF52833</title><link>https://devzone.nordicsemi.com/thread/377754?ContentTypeID=1</link><pubDate>Wed, 20 Jul 2022 04:23:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d6ee2400-c41d-4863-ac7e-2301412778f6</guid><dc:creator>NghiHH</dc:creator><description>&lt;p&gt;&lt;span&gt;&amp;nbsp;I&amp;#39;m developing an application using internal flash memory.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;I based on flash_fds example to implement this feature.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Now I can write and read data from flash.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;My basic feature is when device reset It will read data from memory and it will blink led it data I want to read consist in flash memory. In this case I saved &amp;quot;hello !&amp;quot;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Here is my code&lt;/p&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;div class="evolution-code-editor theme-clouds"&gt;&lt;pre class="ui-code" data-mode="text"&gt;#define FILE_ID 0x0001    /* The ID of the file to write the records into. */
#define RECORD_KEY 0x1111 /* A key for the first record. */

// record using for write
fds_record_t record;
fds_record_desc_t record_desc;
fds_flash_record_t flash_record;
fds_find_token_t ftok;

bool flash_flag = false;
int flash_count = 0;
bool m_fds_initialized = false;

static char const m_hello[] = &amp;quot;hello !&amp;quot;;

static void wait_for_fds_ready(void) {
  while (!m_fds_initialized) {
    power_manage();
  }
}

static void fds_evt_handler(fds_evt_t const *p_fds_evt) {
  switch (p_fds_evt-&amp;gt;id) {
  case FDS_EVT_INIT:
    if (p_fds_evt-&amp;gt;result == NRF_SUCCESS) {
      m_fds_initialized = true;
    }
    break;
  case FDS_EVT_WRITE:
    // NRF_LOG_INFO(&amp;quot;write&amp;quot;)
    flash_flag = true;
    memset(&amp;amp;ftok, 0x00, sizeof(fds_find_token_t));
    break;
  // case FDS_EVT_READ:
  default:
    break;
  }
}

uint8_t dataFromFlash[100];

int main(void) {
  bool erase_bonds;
  log_init();

  fds_register(fds_evt_handler);
  fds_init();
  wait_for_fds_ready();

  fds_record_open(&amp;amp;record_desc, &amp;amp;flash_record);
  sprintf(dataFromFlash, &amp;quot;%s&amp;quot;, flash_record.p_data);
  if (strstr(dataFromFlash, m_hello) != NULL) {
    blinkLED(orange);

  } else {
    blinkLED(yellow);
  }
  fds_record_close(&amp;amp;record_desc);

  record.file_id = FILE_ID;
  record.key = RECORD_KEY;

  record.data.p_data = &amp;amp;m_hello;
  record.data.length_words = (sizeof(m_hello) + 3) / 4;
  fds_record_write(&amp;amp;record_desc, &amp;amp;record);

  while (flash_flag) {

    // while (fds_record_find(FILE_ID, RECORD_KEY, &amp;amp;record_desc, &amp;amp;ftok) == NRF_SUCCESS) {
    fds_record_open(&amp;amp;record_desc, &amp;amp;flash_record);
    sprintf(dataFromFlash, &amp;quot;%s&amp;quot;, flash_record.p_data);
    NRF_LOG_INFO(&amp;quot;%s&amp;quot;, dataFromFlash);
    fds_record_close(&amp;amp;record_desc);
    break;
  }
  for (;;) {
  }
}&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: I have a Problem about Reading data from flash memory of NRF52833</title><link>https://devzone.nordicsemi.com/thread/377653?ContentTypeID=1</link><pubDate>Tue, 19 Jul 2022 13:28:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8d6d27ba-6d7b-45d1-bc97-4ea020c28311</guid><dc:creator>Susheel Nuguru</dc:creator><description>&lt;p&gt;Can you post some code snippets and context in which you attempted to read the flash before and after the reset?&lt;/p&gt;
&lt;p&gt;Which flash reading library did you use? and what error did you get after reset?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>