Hi:
Hardware: STM32F207+S25FL128P
Software:Freertos+FAT, Spansion FFS FTL Driver.
Step 1: I write 20 bytes data into file /log/dat.bin, the print info as;
[FileSystemFileWriteCmd:587]:Write File:/log/dat.bin data(len=20) OK!
[slldWriteOp:4791]:sysaddr=0xde0020, leninbytes=32
[slldWriteOp:4791]:sysaddr=0xd73e00, leninbytes=512
[slldWriteOp:4791]:sysaddr=0xde0040, leninbytes=32
Write file(/log/dat.bin, testdata0inlogfile.) ok!
I dump the file /log/dat.bin ,the print info as:
DPET:dump /log/dat.bin
DPET:[FileSystemFileDumpCmd:472]:File /log/dat.bin len=20!
0000: 74 65 73 74 64 61 74 61 30 69 6E 6C 6F 67 66 69
0100: 6C 65 2E 00
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.
Freertos+FAT, data is lost.
Freertos+FAT, data is lost.
Hi Lifei Yan,
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?
Regards.
Freertos+FAT, data is lost.
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.
We can apply Spansion driver through the link:
http://www.cypress.com/forum/nor-flash/where-get-spansion-flash-file-system-and-block-driver
Regards.
Freertos+FAT, data is lost.
Lifei Yan, I looked at the Cypress forum but didn’t find a link to the driver. It looks like one has to apply for it. And I’m not going to do that.
I do not find a function like fflush() in linux.Yes there is this function: ~~~ FFErrort FFFlushCache( FFIOManager_t *pxIOManager ) ~~~ Now if you want me to check the source code, you can send it privately to h [dot] tibosch [at] freertos [dot].org
Freertos+FAT, data is lost.
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 ftlifex.h, the FTLRPBCACHE should be set to FALSE.
2, The function FTLFlushTableCache() and FTLFlushDataCache() should be called when FFFlushCache( FFIOManager_t pxIOManager ) is called.