导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    T507的LINUX下的多屏显示,DISP2_SUNXI_MUTI_SCREEN

    其它全志芯片讨论区
    2
    22
    6257
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • E
      embfly LV 5 最后由 编辑

      我们要实现这个T507的LINUX下的多屏显示,DISP2_SUNXI_MUTI_SCREEN
      目前用的2.0的SDK,大家谁有补丁?

      1 条回复 最后回复 回复 引用 分享 0
      • WhycanService
        WhycanService LV 8 最后由 编辑

        可以配置两个fb分别对应两个屏幕,即fb0对应screen0,fb1对应screen1,这样直接操作fb0,fb1即可

        如LVDS+HDMI方式

        1. 将fb1绑定到第二个屏幕,打一下这几个补丁
          patch.zip

        2. 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>;
        ...
        };
        
        
        E 1 条回复 最后回复 回复 引用 分享 0
        • E
          embfly LV 5 @WhycanService 最后由 编辑

          @whycanservice 在 T507的LINUX下的多屏显示,DISP2_SUNXI_MUTI_SCREEN 中说:

          disp_mode

          disp_mode这个参数应该是“3”吧?

          WhycanService 1 条回复 最后回复 回复 引用 分享 0
          • WhycanService
            WhycanService LV 8 @embfly 最后由 编辑

            @embfly 根据你的屏幕来配置

            E 1 条回复 最后回复 回复 引用 分享 0
            • E
              embfly LV 5 最后由 编辑

              回复很快,十分感谢!
              看来找到队伍了!

              1 条回复 最后回复 回复 引用 分享 0
              • E
                embfly LV 5 @WhycanService 最后由 编辑

                @whycanservice
                我们之前有份文档,全志的,但是并没有发现DISP2_SUNXI_MUTI_SCREEN这个代码。请问这个代码是在哪个版本实现的?

                另外,您提供补丁,我看了下,并没有这个DISP2_SUNXI_MUTI_SCREEN的配置。是因为auto-sdk2.0里面不用这么做了?

                1 条回复 最后回复 回复 引用 分享 0
                • E
                  embfly LV 5 最后由 编辑

                  T5_longan_linuxSDK_开发环境配置手册_v1.3.pdf

                  1 条回复 最后回复 回复 引用 分享 0
                  • E
                    embfly LV 5 最后由 编辑

                    我们要实现的双屏异显。一个屏幕是HDMI,一个屏幕是LVDS.

                    另外,多请教您以下,T507是双通道的LVDS,可以每个通道单独接一个LVDS接口的液晶屏吗?这个之前没有接过,所以特来了解下。

                    WhycanService 1 条回复 最后回复 回复 引用 分享 0
                    • WhycanService
                      WhycanService LV 8 @embfly 最后由 编辑

                      @embfly

                      1. 可以单独接LVDS
                      2. DISP2_SUNXI_MUTI_SCREEN 的配置在不同SDK实现不太一样,两个方法都可以
                      E 3 条回复 最后回复 回复 引用 分享 0
                      • E
                        embfly LV 5 @WhycanService 最后由 编辑

                        @whycanservice

                        1,第一个明确的是,这个auto-sdk2.0版本的SDK,不需要关注DISP2_SUNXI_MUTI_SCREEN这个参数(代码里面也不需要有),打上您给的补丁,就可以实现双屏异显,是这个意思?

                        2,双通道的LVDS屏,可以每个通道接一个LVDS液晶屏,如果是这样的话,
                        我要接HDMI,两个LVDS的屏,在linux的/dev目录下就是有三个fb的节点了,是这样的对吧?

                        WhycanService 1 条回复 最后回复 回复 引用 分享 0
                        • E
                          embfly LV 5 @WhycanService 最后由 WhycanService 编辑

                          @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无问题。麻烦您看看如何处理下。

                          1 条回复 最后回复 回复 引用 分享 0
                          • WhycanService
                            WhycanService LV 8 @embfly 最后由 编辑

                            @embfly

                            1. 补丁也有可能不适配SDK,具体的实现也需要看看,不过方法都是一个方法
                            2. 目前 DE 仅支持双屏异显,最多两个fb节点。
                            E 1 条回复 最后回复 回复 引用 分享 0
                            • E
                              embfly LV 5 @WhycanService 最后由 编辑

                              @whycanservice
                              以上使用CSITEST-GPU这个代码测试1080P摄像头,就是这个代码csi_test_mplane_usrptr.cpp,720P的参数时可以做工作,但是1080P(1920X1080分辨率)就是会报错。

                              WhycanService 1 条回复 最后回复 回复 引用 分享 0
                              • E
                                embfly LV 5 @WhycanService 最后由 编辑

                                @whycanservice
                                最后一个问题,T507-auto-sdk2.0中,这个代码中有一个QT的例子程序,
                                程序的名字是CameraUI,请问这个程序全志公司自己跑通了吗?我们跑不通。而且,看文档中,全志官方也说没有跑通,不知道是否有最新的可以跑通的CameraUI这个程序代码?

                                WhycanService 1 条回复 最后回复 回复 引用 分享 0
                                • WhycanService
                                  WhycanService LV 8 @embfly 最后由 编辑

                                  @embfly 考虑是否超内存了,可以尝试之前多申请些内存,或者尝试增加CMA内存大小再试试

                                  E 1 条回复 最后回复 回复 引用 分享 0
                                  • WhycanService
                                    WhycanService LV 8 @embfly 最后由 编辑

                                    @embfly
                                    CameraUI可以参考这个 FAQ,不过这个例程较老目前不清楚是否有新版本

                                    T系列Linux多屏配置指南.pdf

                                    E 1 条回复 最后回复 回复 引用 分享 0
                                    • E
                                      embfly LV 5 @WhycanService 最后由 编辑

                                      @whycanservice 在 T507的LINUX下的多屏显示,DISP2_SUNXI_MUTI_SCREEN 中说:

                                      @embfly 考虑是否超内存了,可以尝试之前多申请些内存,或者尝试增加CMA内存大小再试试

                                      回复如下:
                                      我们的板是2G内存的,关键是感觉全志官方没有使用这个测试1080P的案例,代码我们看了几次,原则上应该没有问题。CMA大小,原来SDK中只给了12M大小,我们提供了256M,但是还是不行。

                                      1 条回复 最后回复 回复 引用 分享 0
                                      • E
                                        embfly LV 5 @WhycanService 最后由 编辑

                                        @whycanservice
                                        没有官方的支持,很难做出来产品。感谢您对我们的支持!
                                        我们稍微晚点把您给的补丁测试下,后续还少不了打搅您。

                                        WhycanService 1 条回复 最后回复 回复 引用 分享 0
                                        • WhycanService
                                          WhycanService LV 8 @embfly 最后由 编辑

                                          @embfly 官方支持可以联系FAE或者代理支持,社区支持不时会有工程师巡场,而且有各位大佬的挖坑踩坑,可以多在论坛问问相关问题

                                          E 1 条回复 最后回复 回复 引用 分享 0
                                          • E
                                            embfly LV 5 @WhycanService 最后由 编辑

                                            @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

                                            WhycanService 1 条回复 最后回复 回复 引用 分享 0
                                            • WhycanService
                                              WhycanService LV 8 @embfly 最后由 编辑

                                              @embfly 看上去补丁是不适配这个sdk的

                                              E 1 条回复 最后回复 回复 引用 分享 0
                                              • E
                                                embfly LV 5 @WhycanService 最后由 编辑

                                                @whycanservice

                                                我们用的就是官方下载的LINUX版本的,AUTO-SDK2.0这个版本。

                                                1 条回复 最后回复 回复 引用 分享 0
                                                • 1 / 1
                                                • First post
                                                  Last post

                                                Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

                                                行为准则 | 用户协议 | 隐私权政策