T507的LINUX下的多屏显示,DISP2_SUNXI_MUTI_SCREEN
-
我们要实现这个T507的LINUX下的多屏显示,DISP2_SUNXI_MUTI_SCREEN
目前用的2.0的SDK,大家谁有补丁? -
可以配置两个fb分别对应两个屏幕,即fb0对应screen0,fb1对应screen1,这样直接操作fb0,fb1即可
如LVDS+HDMI方式
-
将fb1绑定到第二个屏幕,打一下这几个补丁
patch.zip -
dts里配置一下
例如:
disp: disp@01000000 { disp_init_enable = <1>; disp_mode = <0>; ... screen1_output_type = <3>; screen1_output_mode = <10>; screen1_output_format = <0>; screen1_output_bits = <0>; screen1_output_eotf = <4>; screen1_output_cs = <257>; screen1_output_dvi_hdmi = <0>; screen1_output_range = <0>; screen1_output_scan = <0>; screen1_output_aspect_ratio = <8>; ... fb1_format = <0>; fb1_width = <1920>; fb1_height = <1080>; chn_cfg_mode = <1>; ... };
-
-
-
@embfly 根据你的屏幕来配置
-
回复很快,十分感谢!
看来找到队伍了! -
@whycanservice
我们之前有份文档,全志的,但是并没有发现DISP2_SUNXI_MUTI_SCREEN这个代码。请问这个代码是在哪个版本实现的?另外,您提供补丁,我看了下,并没有这个DISP2_SUNXI_MUTI_SCREEN的配置。是因为auto-sdk2.0里面不用这么做了?
-
-
我们要实现的双屏异显。一个屏幕是HDMI,一个屏幕是LVDS.
另外,多请教您以下,T507是双通道的LVDS,可以每个通道单独接一个LVDS接口的液晶屏吗?这个之前没有接过,所以特来了解下。
-
- 可以单独接LVDS
- DISP2_SUNXI_MUTI_SCREEN 的配置在不同SDK实现不太一样,两个方法都可以
-
1,第一个明确的是,这个auto-sdk2.0版本的SDK,不需要关注DISP2_SUNXI_MUTI_SCREEN这个参数(代码里面也不需要有),打上您给的补丁,就可以实现双屏异显,是这个意思?
2,双通道的LVDS屏,可以每个通道接一个LVDS液晶屏,如果是这样的话,
我要接HDMI,两个LVDS的屏,在linux的/dev目录下就是有三个fb的节点了,是这样的对吧? -
@whycanservice
还有最后一个问题,我们最近调试T507 1080P的摄像头,使用的是CSI-TEST GPU的例子程序,这个程序运行时,按照1080P的参数运行时,会报错,无法申请内存。for (i = 0; i < n_buffers; ++i) { struct v4l2_buffer buf; CLEAR(buf); buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; buf.memory = memtype;//V4L2_MEMORY_USERPTR;//V4L2_MEMORY_MMAP; buf.index = i; buf.length = nplanes; buf.m.planes = (struct v4l2_plane *)calloc(nplanes, sizeof(struct v4l2_plane)); for (int j = 0; j < nplanes; j++) { buf.m.planes[j].m.userptr = (unsigned long)buffers[i].start[j]; buf.m.planes[j].length = buffers[i].length[j]; } if (-1 == ioctl(fd, VIDIOC_QBUF, &buf)) { printf("VIDIOC_QBUF failed\n"); free(buf.m.planes); return -1; } free(buf.m.planes); }
VIDIOC_QBUF执行这个报错。但是720P无问题。麻烦您看看如何处理下。
-
- 补丁也有可能不适配SDK,具体的实现也需要看看,不过方法都是一个方法
- 目前 DE 仅支持双屏异显,最多两个fb节点。
-
@whycanservice
以上使用CSITEST-GPU这个代码测试1080P摄像头,就是这个代码csi_test_mplane_usrptr.cpp,720P的参数时可以做工作,但是1080P(1920X1080分辨率)就是会报错。 -
@whycanservice
最后一个问题,T507-auto-sdk2.0中,这个代码中有一个QT的例子程序,
程序的名字是CameraUI,请问这个程序全志公司自己跑通了吗?我们跑不通。而且,看文档中,全志官方也说没有跑通,不知道是否有最新的可以跑通的CameraUI这个程序代码? -
@embfly 考虑是否超内存了,可以尝试之前多申请些内存,或者尝试增加CMA内存大小再试试
-
@embfly
CameraUI可以参考这个 FAQ,不过这个例程较老目前不清楚是否有新版本 -
@whycanservice 在 T507的LINUX下的多屏显示,DISP2_SUNXI_MUTI_SCREEN 中说:
@embfly 考虑是否超内存了,可以尝试之前多申请些内存,或者尝试增加CMA内存大小再试试
回复如下:
我们的板是2G内存的,关键是感觉全志官方没有使用这个测试1080P的案例,代码我们看了几次,原则上应该没有问题。CMA大小,原来SDK中只给了12M大小,我们提供了256M,但是还是不行。 -
@whycanservice
没有官方的支持,很难做出来产品。感谢您对我们的支持!
我们稍微晚点把您给的补丁测试下,后续还少不了打搅您。 -
@embfly 官方支持可以联系FAE或者代理支持,社区支持不时会有工程师巡场,而且有各位大佬的挖坑踩坑,可以多在论坛问问相关问题
-
@whycanservice
您发来的补丁已经验证,但是无法使用;
同时有发现了这个疑问,#ifdef BIND_FB1_TO_SCREEN1
for (i = 0; i < 1; i++) {
#else
for (i = 0; i < SUNXI_FB_MAX; i++) {
#endif
g_fbi.fbinfo[i] = framebuffer_alloc(0, g_fbi.dev);
g_fbi.fbinfo[i]->node = i;
g_fbi.fbinfo[i]->fbops = &dispfb_ops;
g_fbi.fbinfo[i]->flags = 0;
g_fbi.fbinfo[i]->device = g_fbi.dev;
g_fbi.fbinfo[i]->par = &g_fbi;
g_fbi.fbinfo[i]->var.xoffset = 0;
g_fbi.fbinfo[i]->var.yoffset = 0;
g_fbi.fbinfo[i]->var.xres = 800;
我们这样做的改动(依然不行,HDMI无显示,LVDS屏启动时有LOGO):
#ifdef BIND_FB1_TO_SCREEN1
for (i = 0; i < SUNXI_FB_MAX; i++) {
#else
for (i = 0; i < 1; i++) {
#endif为什么要这么改呢,因为我们看到dev_fb.c开头这个代码:
#define VSYNC_NUM 4
#ifdef BIND_FB1_TO_SCREEN1
#define SUNXI_FB_MAX 2
#else
#define SUNXI_FB_MAX 1
#endif
#define FB_DEFAULT_ZORDER 1
#define FB0_ZORDER 5
#define FB1_ZORDER 3
#define FB2_ZORDER FB_DEFAULT_ZORDER -
@embfly 看上去补丁是不适配这个sdk的
-
我们用的就是官方下载的LINUX版本的,AUTO-SDK2.0这个版本。
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号