xajhuang
驱动牛犊
驱动牛犊
  • 注册日期2006-03-10
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分6分
  • 威望20点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:2773回复:1

2440 WinCE5.0 显存DMA操作问题

楼主#
更多 发布于:2008-08-12 14:56
请教一个问题 在2440 + CE5.0 下 我用DMA把内存中一段数据传输到外设,没有任何问题,但是我用DMA把显存中的数据传输到外设就有问题,好像DMA不能读写显存,有谁知道是怎么回事。
代码:
g_pDMAregs->DISRC3 = (UINT32)(0x30100000);// + g_ptDisplayPos.x * 2);    
    g_pDMAregs->DISRCC3 = (0x00 << 1) | (0x0 << 0);        
    g_pDMAregs->DIDST3 = 0x28400000;
    g_pDMAregs->DIDSTC3 = (0x00 << 2) | (0x00 < 1) | (0x01 << 0);
    g_pDMAregs->DCON3 = (0x01 << 31) | (0x01 << 30) | (0x01 << 29) | (0x00 < 28) | (0x01 << 27) |\
                        (0x00 << 23) | (0x00 << 22) | (0x01 << 20) | (320);                        
    g_pDMAregs->DMASKTRIG3 = (0x01 << 1) | (0x01 << 0);
0x30100000 是我显存物理地址, 0x28400000 是我外设物理地址。
我把0x30100000修改成内存其它地址也工作正常, 就是显存区域不能工作
在ADS下面工作正常,在WinCE下面操作就有问题。
abo77281
驱动牛犊
驱动牛犊
  • 注册日期2008-07-22
  • 最后登录2010-12-30
  • 粉丝1
  • 关注0
  • 积分9分
  • 威望81点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-08-29 16:13
在wince下面,你把物理地址转换成虚拟地址,然后操作虚拟地址试试.
游客

返回顶部