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 Reply Children
  • 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.

  • Thanks for your great support! Data of fstorage written data and reading back are same after keeping the source data in static memory until the write is complete.

Related