我当前使用的是嵌入式ARM,从计算机端(在Windows 7下)充当USB设备。使用C函数fwrite(),我可以像在标准USB存储设备上一样在嵌入式DDR中写入二进制文件。效果很好。
在DDR中写入某些内容时,我的ARM会读取它,有时会对其进行修改。
我的问题如下:
当我想从PC上读回ARM使用fread()在文件中所做的修改时,该函数将返回我之前编写的相同值,就好像它在读取缓存而不是真正的修改一样值。
我知道,如果您在标准USB存储设备上复制一个巨大的文件并打开它,Windows会快速打开它,因为它会将副本保留在缓存中。但是,如果您拔下/重新插入USB存储设备并再次打开其上的文件,则速度会慢得多,因为Windows会真正读取该设备上的数据并记下缓存。使用fread()的行为似乎相同。
是否可以避免这种情况?是否有任何C函数强制read()从USB存储设备而不是从缓存返回实值?
最感谢您的帮助。
S.H。