Firefly开源社区

12
发表新贴
打印 上一主题 下一主题

关于VGA和HDMI同时显示的问题

28

积分

0

威望

0

贡献

技术小白

积分
28

关于VGA和HDMI同时显示的问题

发表于 2015-3-2 15:56:48      浏览:20949 | 回复:25        打印     [复制链接] 楼主
版主你好,
我们用fb0作为lcdc0的hdmi输出,fb5作为lcdc1的vga输出,
请问fb5和fb0在rk_fb_alloc_buffer_by_ion中如何处理?两个fb能否公用一个dma buffer或者screen_base呢?
也就是说上层往fb0的screen_base写了数据触发了lcdc0的dma,能否有方法也立刻触发lcdc1的 dma呢?
只有两个fb公用一个内存池,双显才能流畅。我们目前做了两套dma和screen_base,然后在kernel中用memcpy拷贝,可以双显,但是很卡!

感谢版主!
回复

使用道具 举报

28

积分

0

威望

0

贡献

技术小白

积分
28
发表于 2015-3-2 17:07:45      沙发
本帖最后由 ggstone 于 2015-3-2 17:40 编辑

首先谢谢版主!
是两个屏幕显示一样的画面,我在想 dma_buf 能不能用一样的,这是rk_fb_alloc_buffer_by_ion的代码:
win->area[0].dma_buf = ion_share_dma_buf(rk_fb->ion_client, handle);
win->area[0].ion_hdl = handle;
fbi->screen_base = ion_map_kernel(rk_fb->ion_client, handle);
回复

使用道具 举报

28

积分

0

威望

0

贡献

技术小白

积分
28
发表于 2015-3-3 10:35:33      板凳
isle 发表于 2015-3-2 18:05
lcdc0的hdmi输出 ?lcdc1的vga输出?
是你们自己做的板子吗?目前firefly的VGA是接lcdc0的 无法切换到lcdc1 ...

感谢你的回复。
我们是lcdc0做hdmi,lcdc1做vga。
板子用你的你们的firefly 3288 box。
你们默认代码是lcdc0可以切换显示hdmi和vga,但是只能显示一个。
我们需要同时显示,必须启用lcdc1来控制vga通道。
那么lcdc1和lcdc0共享内存池吗? 如果不需要两套dma和screen_base,那么同显如何让hdmi的数据 给到vga上呢?
还请指点,谢谢!
回复

使用道具 举报

28

积分

0

威望

0

贡献

技术小白

积分
28
发表于 2015-3-3 14:15:03      地板
我看到rk_fb_alloc_buffer()函数,应该只给lcdc0的fb0分配物理地址和dma地址
如何能让lcdc1也关联到fb0呢?
回复

使用道具 举报

28

积分

0

威望

0

贡献

技术小白

积分
28
发表于 2015-3-3 15:38:57      5#
zhansb 发表于 2015-3-3 14:31
可以参考PAD版的代码做一些移植,PAD版支持同显

感谢版主回复。
我们现在做成这样,基本也是参照pad版做的。
我们现在lcdc1 始终无法和lcdc0共享fb0,只能用lcdc1自己的一套fb,然后fb到fb的内容copy,导致卡顿。
还请版主能指点一下。
回复

使用道具 举报

28

积分

0

威望

0

贡献

技术小白

积分
28
发表于 2015-3-9 13:45:24      6#
isle 发表于 2015-3-4 09:21
首先告诉你的是  控制VGA通道 是硬件决定的,软件无法改。如果你用我们的开发板。这个是实现不了的 。
另 ...

firefly的vga显示,在box方案上是和hdmi共享lcdc0,切换显示。
我们要让vga单独工作,必然要enable lcdc1,必然要为lcdc1创建一套fb。
但是fb上报给Android的节点又只能是fb0(系统默认的,当然这里可以扩展,修改Android就复杂了。)
所以我lcdc1的fb5 想显示fb0同样的内容,要么从fb0拷贝所有内容到fb5,然后显示。(拷贝效率较低)
要么lcdc1直接从fb0内存池取数据(直接触发lcdc1的DMA),然后显示。
回复

使用道具 举报

28

积分

0

威望

0

贡献

技术小白

积分
28
发表于 2015-3-11 09:15:32      7#
所以问题就是VGA如何触发DMA操作呢?
回复

使用道具 举报

28

积分

0

威望

0

贡献

技术小白

积分
28
发表于 2015-3-16 18:20:03      8#
原来是这样啊!这是很重要的线索!
谢谢版主的回复!!
必须是VGA用lcdc0 。HDMI用lcdc1对吧?
如果我设置HDMI lcdc0,VGA LCDC1,硬件上是无法实现的,是这样吗?
回复

使用道具 举报

28

积分

0

威望

0

贡献

技术小白

积分
28
发表于 2015-3-16 18:20:28      9#
本帖最后由 ggstone 于 2015-3-16 20:27 编辑
isle 发表于 2015-3-11 10:54
正确的设置是VGA用lcdc0 。HDMI用lcdc1.
如何同时显示 请参考pad版本的代码。原理是一样的。

原来是这样啊!这是很重要的线索!!
谢谢版主的回复!!
必须是VGA(lvds或者edp)用lcdc0 。HDMI用lcdc1对吧?
如果我设置HDMI lcdc0,VGA LCDC1,硬件上是无法实现的,是这样吗?
回复

使用道具 举报

28

积分

0

威望

0

贡献

技术小白

积分
28
发表于 2015-3-17 09:31:19      10#
isle 发表于 2015-3-17 09:03
是的,
VGA  是外部设备,通道是硬件选择的,软件无法改。
HDMI,内部设备,通道可以由软件选择。

感谢isle!!!
支持firefly!
回复

使用道具 举报

返回列表
12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表