Step 2: I read data from flash directly, the print info as below:
DPET:flashr 0xd73e00 1 20
DPET:FLASH READ(addr=0xd73e00, unit=1, length=0x14) OK!
74 65 73 74 64 61 74 61 30 69 6e 6c 6f 67 66 69
6c 65 2e 00
Step 3: reset the CPU
Step 4: I dump the file /log/dat.bin ,the print info as:
DPET:dump /log/dat.bin
DPET:[FileSystemFileDumpCmd:466]:File /log/dat.bin len=0!
I get the file length through ff_filelength() function. I can not find the data in my file!
Step 5: I read the data from flash, the info as below:
DPET:flashr 0xd73e00 1 20
DPET:FLASH READ(addr=0xd73e00, unit=1, length=0x14) OK!
74 65 73 74 64 61 74 61 30 69 6e 6c 6f 67 66 69
6c 65 2e 00.
My question is the data was writen to the flash sucessfully, but the FAT system can not read it. Why?
I do not find a function like fflush() in linux.
Please help me.
Thank you.
Would it be possible that data has not been flushed to the flash at the moment the CPU gets a reset?
What I do know is that FreeRTOS+FAT will always flush data to disk as soon as you call ff_fclose().
But I do not know about your driver for the Spansion? Can you point out where to find that driver?
Hi Hein Tibosch,
The data has been flushed to the flash at the moment the CPU gets a reset.
In Step 5 : After reset, I read the data from flash, the info as below:
DPET:flashr 0xd73e00 1 20
DPET:FLASH READ(addr=0xd73e00, unit=1, length=0x14) OK!
74 65 73 74 64 61 74 61 30 69 6e 6c 6f 67 66 69
6c 65 2e 00.
wo can see that after reset, the data is in flash,but FAT can not get it.
Hi Hein Tibosch,
Thank you very much.
I made a mistake in my code. There are to methods to solve this problem .
1, In Spansion FTL configuration file ftl_if_ex.h, the FTL_RPB_CACHE should be set to FALSE.
2, The function FTL_FlushTableCache() and FTL_FlushDataCache() should be called when FF_FlushCache( FF_IOManager_t pxIOManager ) is called.