data of fstorage written data and reading back are not the same

I use nrf_fstorage_write() to write data to fstorage. And then I use nrf_fstorage_read() to read data. But data of fstorage written data and reading back are not the same.

Data written log messages is as follows.

0> <debug> app: addr=0x7D000, wlen=24
 0>
 0> <debug> app: pData w
 0>
 0> <debug> app: pData[0]=0xDE
 0>
 0> <debug> app: pData[1]=0xDD
 0>
 0> <debug> app: pData[2]=0x0
 0>
 0> <debug> app: pData[3]=0x0
 0>
 0> <debug> app: pData[4]=0x0
 0>
 0> <debug> app: pData[5]=0x0
 0>
 0> <debug> app: pData[6]=0x0
 0>
 0> <debug> app: pData[7]=0x0
 0>
 0> <debug> app: pData[8]=0x0
 0>
 0> <debug> app: pData[9]=0x0
 0>
 0> <debug> app: pData[10]=0x0
 0>
 0> <debug> app: pData[11]=0x0
 0>
 0> <debug> app: pData[12]=0x0
 0>
 0> <debug> app: pData[13]=0x0
 0>
 0> <debug> app: pData[14]=0x0
 0>
 0> <debug> app: pData[15]=0x0
 0>
 0> <debug> app: pData[16]=0x0
 0>
 0> <debug> app: pData[17]=0x0
 0>
 0> <debug> app: pData[18]=0x0
 0>
 0> <debug> app: pData[19]=0x0
 0>
 0> <debug> app: pData[20]=0x0
 0>
 0> <debug> app: pData[21]=0x0
 0>
 0> <debug> app: pData[22]=0x0
 0>
 0> <debug> app: pData[23]=0x0

Data reading log messages is as follows.

0> <debug> app: addr=0x7D000, len=24
 0>
 0> <debug> app: data r
 0>
 0> <debug> app: pData[0]=0x1C
 0>
 0> <debug> app: pData[1]=0x8A
 0>
 0> <debug> app: pData[2]=0x0
 0>
 0> <debug> app: pData[3]=0x20
 0>
 0> <debug> app: pData[4]=0xE9
 0>
 0> <debug> app: pData[5]=0xFF
 0>
 0> <debug> app: pData[6]=0xFF
 0>
 0> <debug> app: pData[7]=0xFF
 0>
 0> <debug> app: pData[8]=0x98
 0>
 0> <debug> app: pData[9]=0x2
 0>
 0> <debug> app: pData[10]=0x0
 0>
 0> <debug> app: pData[11]=0x0
 0>
 0> <debug> app: pData[12]=0x61
 0>
 0> <debug> app: pData[13]=0xD0
 0>
 0> <debug> app: pData[14]=0xB
 0>
 0> <debug> app: pData[15]=0xA
 0>
 0> <debug> app: pData[16]=0x0
 0>
 0> <debug> app: pData[17]=0x40
 0>
 0> <debug> app: pData[18]=0x0
 0>
 0> <debug> app: pData[19]=0x40
 0>
 0> <debug> app: pData[20]=0x4D
 0>
 0> <debug> app: pData[21]=0x2A
 0>
 0> <debug> app: pData[22]=0x3
 0>
 0> <debug> app: pData[23]=0x0
 0>

Parents
  • Hi,

    The NRF_FSTORAGE_EVT_WRITE_RESULT event is raised when the  actual write is complete. Did you wait for this event before you tried to read back the data? Maybe you can you include some code snippets to show me how you perform the flash write and read?

    Best regards,

    Vidar

  • Thanks for your reply! I have read data after NRF_FSTORAGE_EVT_WRITE_RESULT event is raised.

    I have labeled NRF_FSTORAGE_EVT_WRITE_RESULT (-------1----------) and read fstorage data (-------2----------) in the following debug messages. What is start and end address of fstorage?

    0> <debug> app: NRF_FSTORAGE_EVT_ERASE_RESULT ok
     0> <debug> app: Evt x
     0>
     0> <debug> app: endAddr=0x80000
     0> <debug> app: startAddr=0x7D000
     0> <debug> app: type=0, addr=0x7D000
     0>
     0> <debug> app: state=2
     0>
     0> <debug> app: START E
     0>
     0> <debug> app: addr=0x7D000, wlen=24
     0>
     0> <debug> app: pData w
     0>
     0> <debug> app: pData[0]=0xDE
     0>
     0> <debug> app: pData[1]=0xDD
     0>
     0> <debug> app: pData[2]=0x0
     0>
     0> <debug> app: pData[3]=0x0
     0>
     0> <debug> app: pData[4]=0x0
     0>
     0> <debug> app: pData[5]=0x0
     0>
     0> <debug> app: pData[6]=0x0
     0>
     0> <debug> app: pData[7]=0x0
     0>
     0> <debug> app: pData[8]=0x0
     0>
     0> <debug> app: pData[9]=0x0
     0>
     0> <debug> app: pData[10]=0x0
     0>
     0> <debug> app: pData[11]=0x0
     0>
     0> <debug> app: pData[12]=0x0
     0>
     0> <debug> app: pData[13]=0x0
     0>
     0> <debug> app: pData[14]=0x0
     0>
     0> <debug> app: pData[15]=0x0
     0>
     0> <debug> app: pData[16]=0x0
     0>
     0> <debug> app: pData[17]=0x0
     0>
     0> <debug> app: pData[18]=0x0
     0>
     0> <debug> app: pData[19]=0x0
     0>
     0> <debug> app: pData[20]=0x0
     0>
     0> <debug> app: pData[21]=0x0
     0>
     0> <debug> app: pData[22]=0x0
     0>
     0> <debug> app: pData[23]=0x0
     0>
     0> <debug> app: START x
     0>
     0> <debug> app: Evt e
     0>
     0> <debug> app: Evt w
     0>
     0> <debug> app: NRF_FSTORAGE_EVT_WRITE_RESULT ok (-------1----------)
     0> <debug> app: Evt x
     0>
     0> <debug> app: endAddr=0x80000
     0> <debug> app: startAddr=0x7D000
     0> <debug> app: type=0, addr=0x7D000
     0>
     0> <debug> app: state=4
     0>
     0> <debug> app: START E
     0>
     0> <debug> app: START x
     0>
     0> <debug> app: endAddr=0x80000
     0> <debug> app: startAddr=0x7D000
     0> <debug> app: type=1, addr=0x7D000
     0>
     0> <debug> app: state=4
     0>
     0> <debug> app: END E
     0>
     0> <debug> app: addr=0x7D000, len=24
     0> 8
     0> <debug> app: data r (-------2----------)
     0>
     0> <debug> app: pData[0]=0x1C
     0>
     0> <debug> app: pData[1]=0x8A
     0>
     0> <debug> app: pData[2]=0x0
     0>
     0> <debug> app: pData[3]=0x20
     0>
     0> <debug> app: pData[4]=0xE9
     0>
     0> <debug> app: pData[5]=0xFF
     0>
     0> <debug> app: pData[6]=0xFF
     0>
     0> <debug> app: pData[7]=0xFF
     0>
     0> <debug> app: pData[8]=0x98
     0>
     0> <debug> app: pData[9]=0x2
     0>
     0> <debug> app: pData[10]=0x0
     0>
     0> <debug> app: pData[11]=0x0
     0>
     0> <debug> app: pData[12]=0x61
     0>
     0> <debug> app: pData[13]=0xD0
     0>
     0> <debug> app: pData[14]=0xB
     0>
     0> <debug> app: pData[15]=0xA
     0>
     0> <debug> app: pData[16]=0x0
     0>
     0> <debug> app: pData[17]=0x40
     0>
     0> <debug> app: pData[18]=0x0
     0>
     0> <debug> app: pData[19]=0x40
     0>
     0> <debug> app: pData[20]=0x4D
     0>
     0> <debug> app: pData[21]=0x2A
     0>
     0> <debug> app: pData[22]=0x3
     0>
     0> <debug> app: pData[23]=0x0
     0>
     0> <debug> app: record.offsetStart=0x20E9FF
     0> <debug> app: record.offsetEnd=0xFFFF9802

  • It's a bit difficult to follow the program flow with the code pieces and log alone. Are you making sure to keep the source data in static memory until the write is complete (as noted in the api doc: nrf_fstorage_write)?

  • Thanks for your support! I will try to keep data in static memory on next Monday.

Reply Children
Related