免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2425 | 回复: 9
打印 上一主题 下一主题

请教一个framebuffer的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-17 11:45 |只看该作者 |倒序浏览
我想做一个实时采集LCD显示信息的程序,采用framebuffer,将其地址映射到了用户空间,直接对该空间中的数据进行采集。但是,发现采集速度较慢。
  举例来说,对于分辨率为1024*768 16位显示来说,每采集一次图像要耗费大约150ms,如果要对一般的电影进行采集,则会落下很多帧,再次连续显示图像会比较卡,还请高手指教。

论坛徽章:
0
2 [报告]
发表于 2009-07-17 13:43 |只看该作者
随便找个屏幕录像软件改改就好了,开源的很多的

论坛徽章:
0
3 [报告]
发表于 2009-07-17 14:26 |只看该作者
考虑在fb驱动中加DMA功能

论坛徽章:
0
4 [报告]
发表于 2009-07-17 14:42 |只看该作者

回复 #3 garyv 的帖子

谢谢garyv,依您的意思就是说,我应该重写fb驱动,然后在驱动中加入DMA功能,最后在应用程序中调用实现,是这样的吗?

论坛徽章:
0
5 [报告]
发表于 2009-07-17 14:53 |只看该作者
都要占用内存带宽,要看你cpu及存储系统带宽够不够用,cpu什么配置,内存是DDR?

论坛徽章:
0
6 [报告]
发表于 2009-07-17 14:57 |只看该作者

回复 #5 garyv 的帖子

再次谢谢garyv。
我的CPU、内存配置如下:

处理器型号 奔腾-M(Dothan-533)
标称主频 1.73GHz
前端总线 533MHz
平台技术 支持
标配内存容量 512MB
内存类型 DDRII
最大支持内存 512MB (2x256) DDR2 400MHz SDRAM 内存

论坛徽章:
5
7 [报告]
发表于 2009-07-17 15:12 |只看该作者

回复 #3 garyv 的帖子

三楼方法很好。用DMA控制器来帮你作copy.  应用程序传入目标地址给驱动,并启动DMA。

论坛徽章:
0
8 [报告]
发表于 2009-07-17 15:27 |只看该作者

回复 #7 yidou 的帖子

谢谢版主。
那我想问一下,为什么读fb要比写fb慢很多呢,而且写得话速度非常非常快?

论坛徽章:
0
9 [报告]
发表于 2009-07-18 11:10 |只看该作者

回复 #1 zhumingyu_sy 的帖子

用DMA该怎么做呢? 是直接通过DMA将显存copy到申请的内存区域吗?
但是我每次去ioremap这块儿IO内存时,总是显示
"Device or resource busy"

还请高手指点,谢谢!!!

论坛徽章:
0
10 [报告]
发表于 2009-07-19 23:09 |只看该作者

回复 #8 zhumingyu_sy 的帖子

system bios or frame buffer driver will add the video memory range into CPU's MTRR, it means that writing into frame buffer has the "Write-combined" attribute which is much the same with cpu cache. But reading from frame buffer has no cache enabled to avoid data incomsistent in the cache since you know that the frame buffer is updated by graphic so frequently.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP