wangxd5429 发表于 2008-7-22 09:10

嵌入式LINUX的问题33

技术类问题<br />1.小弟正在使用一种芯片,它以SD存储卡的形式与MCU接口。现在需要向SD存储卡指定扇区写入数据后,从相同的扇区读出数据。数据将发生变化。Linux&nbsp;kernel使用montavista的商用内核。遇到的问题是:向指定扇区写入数据后,从相同扇区读出数据未发生变化。初步定位是高速缓存的原因。即数据被写入高速缓存,然后从高速缓存中读出数据。所以数据真实的变化未反映出来。请教各位高手:如何避开高速缓存,直接对SD卡的扇区操作?谢谢各位高手。<br />

xinzha 发表于 2008-7-24 14:10

ll

首先我有疑问,MCU是否有高速缓存?如果是有高速缓存的CPU,都有各自的方法指定不使用cache,因为架构不同方法不同,你使用哪种架构需要自己去找。如果实在不知道怎么禁止cache,可以采用GPIO模式写SD卡,别用DMA模式,这样就可以避开cache的影响。<br />另外一种可能是SD卡内部cache问题,在ATA/ATAPI命令集中有同步cache的命令,具体是啥忘了,好像叫flush&nbsp;cache,可以尝试一下。

wangxd5429 发表于 2009-8-24 09:13

谢谢xinzha!问题已经解决.

sinanjj 发表于 2009-8-24 12:45

linux文件系统的构造问题。

你写入的时候并不真正写入。。。。。
页: [1]
查看完整版本: 嵌入式LINUX的问题33