3908|12

80

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

2440 camera 问题 急!! [复制链接]

请教2440的camera 驱动中Display_Cam_Image中用memcpy将P模式DMA buffer中拷到LCD 显示buffer中
memcpy((void *)(FRAMEBUF_BASE+ (240*pos_y + pos_x) + y*240*2),(void *)buffer_rgb,(QCIF_XSIZE)*2);
1,2参数都是物理地址--WHY???

为什么不启用DMA传而用memcpy而且memcpy还没有经过地址映射????

最新回复

不明白你问题是什么意思? 我记得wince提供了4GB的虚拟地址空间,0~0x7fffffff为用户空间,0x80000000~0xffffffff为内核空间。 在进入kmode之后,有转换 buffer_rgb += VIRTUAL_OFFSET;(VIRTUAL_OFFSET=0x7c000000)  详情 回复 发表于 2009-3-26 18:02
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
(FRAMEBUF_BASE+ (240*pos_y + pos_x) + y*240*2)这应该是放场行同步信息的物理地址
buffer_rgb这个R G B值转换的存储buffer的物理地址。
理论上是启用了DMA传输走的地址就应该是FRAMEBUF_BASE+ (240*pos_y + pos_x) + y*240*2获取的地址
看看后面有没有用到DMA。这里只是一个值的转换。
个人理解的。可能有问题。。。等待牛人来解答
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我跟你理解差不多 但就是没看到DMA操作 怀疑下的源码有问题 但下了好几个版本 都是用memcpy直接操作的...刚接触CE还望高手多指点!
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
不能显示出图像?可能不是驱动层的问题哦。检查下dirce上面的
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
就是可以显示图像 所以奇怪 为什么memcpy用 物理地址也可以将图像拷贝到LCD frame
_buffer中 (FRAMEBUF_BASE地址定义为0xac120000 buffer_rgb地址为P模式一个fifo地址)按理说应该将FRAMEBUF_BASE和buffer_rgb经映射才可以在memcpy中使用啊??但实际上没有映射也成功了 所以觉得奇怪 是不是我的理解有问题啊???
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

6
 
我也碰到这问题了
 
 
 

回复

91

帖子

0

TA的资源

一粒金砂(初级)

7
 
记得应该有进入kernel mode的设置吧!
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

8
 
内存COPY也很快啊
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

9
 
billy14 说的进入kernel mode设置  是没有的
xqhrs232 说的 COPY很快啊 的确 对于一帧图像用DMA 和memcpy 差别不是太大  但memcpy 是在MMU下使用的 所以传给它的参数应该是虚地址而不是物理地址 而语句 memcpy((void *)(FRAMEBUF_BASE+ (240*pos_y + pos_x) + y*240*2),(void *)buffer_rgb,(QCIF_XSIZE)*2) 中用的确是没有进过映射的物理地址 如果FRAMEBUF_BASE 和buffer_rgb 都落在slot0的free virtual space 可以不映射 但显然不是这样的 难道这两个地址就是虚地址???再次请高手讲解~~~~I will always looking forwards 高手‘s answer!!O(∩_∩)O~
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(中级)

10
 
mark
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

11
 
不会吧,我这边好像有SetKMode(TRUE)啊,你把你的Display_Cam_Image函数复制上来看看!
 
 
 

回复

62

帖子

0

TA的资源

禁止发言

12
 
billy14 说得对 Display_Cam_Image 应该有SetKMode(TRUE) 但我下的代码中只有在Copy_Cam_Image才调用SetKMode(TRUE)进行模式转换 Display_Cam_Image中没有可能漏掉了  这样用memcpy就合理了 但是我还想请问billy14 如果Display_Cam_Image前调用了SetKMode(TRUE) 再用memcpy这样可以的还有一个必然条件是FRAMEBUF_BASE和 buffer_rgb地址虚拟地址和物理地址完全一样 我这边没有看到这样的静态映射你那边有吗????可以贴出来看看不 谢~~~~~~~~~~~
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

13
 
不明白你问题是什么意思?
我记得wince提供了4GB的虚拟地址空间,0~0x7fffffff为用户空间,0x80000000~0xffffffff为内核空间。
在进入kmode之后,有转换
buffer_rgb += VIRTUAL_OFFSET;(VIRTUAL_OFFSET=0x7c000000)
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表