打印

w90p710 读SD卡DMA传输问题

[复制链接]
1940|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
无冕之王|  楼主 | 2010-7-4 10:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序开了cache,读SD卡数据到SDRAM的cache空间0x500000位置处,由于读SD卡要使用DMA传输,所以将cache区域的0x500000做 | 0x80000000动作,指向非cache空间0x80500000,调试程序发现DMA传输到非cache空间0x80500000的数据是对的,但是发现cache区域对应的0x500000数据还是错的,就是说这2个位置的数据部同,按照理解虽然做了| 0x80000000的动作,实际上在SDRAM中是对应的是同样物理地址0x500000,为什么会发现数据有差异呢?应该如何做才能既开cache,又能正常DMA传输

相关帖子

沙发
X-Hawk| | 2010-7-4 13:59 | 只看该作者
说明cache机制起作用了,完全符合期待的结果。

要使0x500000的数据更新,您找找看有没
sysInvalidCache
这样的函数使cache清除掉。

使用特权

评论回复
板凳
火箭球迷| | 2010-7-8 09:15 | 只看该作者
你既然用了cache的功能,就应该知道,你写数据到0x80500000,然后从0x500000读的概念是不正确的

使用特权

评论回复
地板
火箭球迷| | 2010-7-8 09:15 | 只看该作者
读0x500000的时候,是有可能被cache命中这个地址的,于是读的是0x500000对应的的cache中的数据哦,flush下cache清空,然后在读0x500000就ok啦

使用特权

评论回复
5
peiyuan1| | 2010-7-10 17:48 | 只看该作者
该物理地址的变量应该使用STATIC关键字。

使用特权

评论回复
6
sinadz| | 2010-7-10 20:51 | 只看该作者
cache功能还没用过

使用特权

评论回复
7
6019赵文| | 2010-7-20 23:14 | 只看该作者
正确配置DMA传输模式

使用特权

评论回复
8
guo_bin76| | 2010-7-31 10:18 | 只看该作者
曾经试过4楼的方法,很奇怪,不是100%Ok,就是说有时可以这样,但还是有几率出错,
函数名:int fmi_SDRead(uint32 uSector, uint32 uBufcnt, uint32 uDAddr)
不明白5楼说的,如何做该物理地址的变量应该使用STATIC关键字?
7楼的可以讲一下如何配置DMA传输模式吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:喜欢远行

160

主题

3331

帖子

0

粉丝