导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页
    1. 主页
    2. laocai
    L
    • 资料
    • 关注 0
    • 粉丝 1
    • 我的积分 1653
    • 主题 3
    • 帖子 23
    • 最佳 3
    • 群组 0

    laocaiLV 5

    @laocai

    1653
    积分
    3
    声望
    21
    资料浏览
    23
    帖子
    1
    粉丝
    0
    关注
    注册时间 最后登录

    laocai 取消关注 关注

    laocai 发布的最佳帖子

    • 回复: 【FAQ】全志D1芯片 如何解决Gstreamer:fb UI旋转(直接修改内核参数)后,sunxifbsink显示异常问题?

      @houxiaoni 全志对gstreamer做了适配支持,怎么tina的开发文档里都没有提及?还是我漏看了什么重要内容?我看到的文档,多媒体开发只有tplayer工具这一种,楼主能否澄清一下?

      发布在 其它全志芯片讨论区
      L
      laocai
    • sunxi图层之间的显示切换

      现在有两个图层,它们由其他app生成,我希望通过编程的方法,简单的进行切换:显示图层1-->显示图层2-->再显示图层1-- >以此类推。如果通过DISP_LAYER_SET_CONFIG调用的话,似乎要把图层所有的参数,包括缓冲区地址等统统设置一遍,而我只想简单的切换两个图层,并不知道也不关心这些图层的详细参数。请问我该怎么做?

      # cat /sys/class/disp/disp/attr/sys | more
      screen 0:
      de_rate 300000000 hz, ref_fps:62
      mgr0: 480x480 fmt[rgb] cs[0x204] range[full] eotf[0x4] bits[8bits] err[0] force_
      sync[0] unblank direct_show[false] iommu[1]
      dmabuf: cache[0] cache max[0] umap skip[0] umap skip max[18]
              lcd output      backlight(229)  fps:62.1         480x 480
              err:11428       skip:90 irq:14361       vsync:0 vsync_skip:0
         BUF    enable ch[0] lyr[0] z[0] prem[N] a[globl 255] fmt[ 11] fb[ 480, 480;
       0,   0;   0,   0] crop[   0,   0,   0,   0] frame[   0,   0, 480, 480] addr[  2
      80000,       0,       0] flags[0x       0] trd[0,0]
      depth[ 0]    BUF    enable ch[1] lyr[0] z[16] prem[N] a[pixel 255] fmt[  0] fb[
      480, 480; 480, 480; 480, 480] crop[   0,   0, 480, 480] frame[   0,   0, 480, 48
      0] addr[       0,       0,       0] flags[0x       0] trd[0,0]
      depth[ 0]
      
      发布在 其它全志芯片讨论区
      L
      laocai
    • 回复: 关于sunxi图层设置DISP_LAYER_SET_CONFIG的一个问题

      @zheng1 在 关于sunxi图层设置DISP_LAYER_SET_CONFIG的一个问题 中说:

      @laocai tina的sdk有一个libuapi库是对这部分接口的封装,我在v851s上用DISP_LAYER_SET_CONFIG2会导致内核内存泄漏,你可以试试有没有同样的问题

      我猜你遇到的问题可能和这段代码有关:

      #if defined(CONF_KERNEL_IOMMU)
                  ret = ioctl(g_ion_alloc_context->cedar_fd, AW_MEM_ENGINE_REL, 0);
                  if (ret)
                      logv("ENGINE_REL failed\n");
      
                  struct user_iommu_param iommu_param;
                  memset(&iommu_param, 0, sizeof(iommu_param));
                  iommu_param.fd = tmp->fd_data.aw_fd;
                  ret = ioctl(g_ion_alloc_context->cedar_fd, AW_MEM_FREE_IOMMU_ADDR, &iommu_param);
                  if (ret)
                      logv("FREE_IOMMU_ADDR err, ret %d\n", ret);
      #endif
      
                  /*close dma buffer fd*/
                  close(tmp->fd_data.aw_fd);
                  /* free buffer */
                  handle_data.handle = tmp->fd_data.handle;
      
                  ret = ioctl(g_ion_alloc_context->fd, AW_MEM_ION_IOC_FREE, &handle_data);
                  if (ret)
                      logv("TON_IOC_FREE failed\n");
      
                  aw_mem_list_del(&tmp->i_list);
                  free(tmp);
      
                  flag = 1;
      
              handle_data.handle = tmp->fd_data.handle;
      

      内核版本为高版本(5.4)的时候,libuapi库在申请内存时根本没有初始化这个handle。然后释放内存的时候,却又用这个空的handle去调用释放的系统调用,内存根本不可能真正释放。换句话说,这个libuapi库只有在低版本内核上才有可能正常工作;高版本内核上,内存只能申请,无法释放。

      发布在 其它全志芯片讨论区
      L
      laocai

    laocai 发布的最新帖子

    • 回复: 全志哪些芯片是DRM驱动?哪些是fb+de驱动?

      我知道的,只有v3s和f1c100主线有drm驱动,而且都是支持不完整的。你可以到挖坑网上去搜索一下,那上面信息多一些。

      发布在 T Series
      L
      laocai
    • 回复: T113主机副屏项目(mipi屏幕)

      @eestr 楼主的项目有进展了吗?我也有兴趣做一个长条的usb屏,可以一起做。

      发布在 T Series
      L
      laocai
    • 回复: Tina procd-init 与 busybox-init 切换

      @yteraa 我补充一点,Tina默认是用的procd,如果要切换到busybox-init, Base system里面要确保procd package被关闭。否则编译的时候会出现如下错误:

      Configuring canutils-candump.
      Collected errors:
       * check_data_file_clashes: Package busybox wants to install file /opt/tina5sdk-bsp/out/t113_i/maple/openwrt/build_dir/target/root-t113_i-maple/sbin/init
      	But that file is already provided by package  * procd
       * opkg_install_cmd: Cannot install package busybox.
      package/Makefile:66: recipe for target 'package/install' failed
      make[2]: *** [package/install] Error 255
      make[2]: Leaving directory '/opt/tina5sdk-bsp/openwrt/openwrt'
      package/Makefile:111: recipe for target '/opt/tina5sdk-bsp/openwrt/openwrt/staging_dir/target/stamp/.package_install' failed
      make[1]: *** [/opt/tina5sdk-bsp/openwrt/openwrt/staging_dir/target/stamp/.package_install] Error 2
      make[1]: Leaving directory '/opt/tina5sdk-bsp/openwrt/openwrt'
      /opt/tina5sdk-bsp/openwrt/openwrt/include/toplevel.mk:238: recipe for target 'world' failed
      make: *** [world] Error 2
      make: Leaving directory '/opt/tina5sdk-bsp/openwrt/openwrt'
      INFO: build_openwrt_rootfs failed
      
      
      发布在 Linux
      L
      laocai
    • 回复: 关于sunxi图层设置DISP_LAYER_SET_CONFIG的一个问题

      @laocai 为什么今天发帖,都是显示forbidden?

      发布在 其它全志芯片讨论区
      L
      laocai
    • 回复: 关于sunxi图层设置DISP_LAYER_SET_CONFIG的一个问题

      @zxdplay 谢谢回复,我后来就是这么做的,形成了一个自己专有的头文件。

      发布在 其它全志芯片讨论区
      L
      laocai
    • sunxi图层之间的显示切换

      现在有两个图层,它们由其他app生成,我希望通过编程的方法,简单的进行切换:显示图层1-->显示图层2-->再显示图层1-- >以此类推。如果通过DISP_LAYER_SET_CONFIG调用的话,似乎要把图层所有的参数,包括缓冲区地址等统统设置一遍,而我只想简单的切换两个图层,并不知道也不关心这些图层的详细参数。请问我该怎么做?

      # cat /sys/class/disp/disp/attr/sys | more
      screen 0:
      de_rate 300000000 hz, ref_fps:62
      mgr0: 480x480 fmt[rgb] cs[0x204] range[full] eotf[0x4] bits[8bits] err[0] force_
      sync[0] unblank direct_show[false] iommu[1]
      dmabuf: cache[0] cache max[0] umap skip[0] umap skip max[18]
              lcd output      backlight(229)  fps:62.1         480x 480
              err:11428       skip:90 irq:14361       vsync:0 vsync_skip:0
         BUF    enable ch[0] lyr[0] z[0] prem[N] a[globl 255] fmt[ 11] fb[ 480, 480;
       0,   0;   0,   0] crop[   0,   0,   0,   0] frame[   0,   0, 480, 480] addr[  2
      80000,       0,       0] flags[0x       0] trd[0,0]
      depth[ 0]    BUF    enable ch[1] lyr[0] z[16] prem[N] a[pixel 255] fmt[  0] fb[
      480, 480; 480, 480; 480, 480] crop[   0,   0, 480, 480] frame[   0,   0, 480, 48
      0] addr[       0,       0,       0] flags[0x       0] trd[0,0]
      depth[ 0]
      
      发布在 其它全志芯片讨论区
      L
      laocai
    • 回复: V853显示屏无法直接显示图片

      @ddrddr 可能你的framebuffer支持alpha通道,但是填充图像数据的时候没有填写相应alpha数值。检查一下framebuffer格式即可。

      发布在 V Series
      L
      laocai
    • 回复: 关于sunxi图层设置DISP_LAYER_SET_CONFIG的一个问题

      @laocai 官方文档里也到处都是错误。
      ttt.jpg

      红线处正确的代码应该是这样的:

              memset(&config, 0, sizeof(struct disp_layer_config));
              config.channel = 0;//blending channel
              config.layer_id = 0;//layer index in the blending channel
              config.enable = 1;
              config.info.mode = LAYER_MODE_BUFFER;
      
      发布在 其它全志芯片讨论区
      L
      laocai
    • 回复: 关于sunxi图层设置DISP_LAYER_SET_CONFIG的一个问题

      @zheng1 在 关于sunxi图层设置DISP_LAYER_SET_CONFIG的一个问题 中说:

      @laocai tina的sdk有一个libuapi库是对这部分接口的封装,我在v851s上用DISP_LAYER_SET_CONFIG2会导致内核内存泄漏,你可以试试有没有同样的问题

      我猜你遇到的问题可能和这段代码有关:

      #if defined(CONF_KERNEL_IOMMU)
                  ret = ioctl(g_ion_alloc_context->cedar_fd, AW_MEM_ENGINE_REL, 0);
                  if (ret)
                      logv("ENGINE_REL failed\n");
      
                  struct user_iommu_param iommu_param;
                  memset(&iommu_param, 0, sizeof(iommu_param));
                  iommu_param.fd = tmp->fd_data.aw_fd;
                  ret = ioctl(g_ion_alloc_context->cedar_fd, AW_MEM_FREE_IOMMU_ADDR, &iommu_param);
                  if (ret)
                      logv("FREE_IOMMU_ADDR err, ret %d\n", ret);
      #endif
      
                  /*close dma buffer fd*/
                  close(tmp->fd_data.aw_fd);
                  /* free buffer */
                  handle_data.handle = tmp->fd_data.handle;
      
                  ret = ioctl(g_ion_alloc_context->fd, AW_MEM_ION_IOC_FREE, &handle_data);
                  if (ret)
                      logv("TON_IOC_FREE failed\n");
      
                  aw_mem_list_del(&tmp->i_list);
                  free(tmp);
      
                  flag = 1;
      
              handle_data.handle = tmp->fd_data.handle;
      

      内核版本为高版本(5.4)的时候,libuapi库在申请内存时根本没有初始化这个handle。然后释放内存的时候,却又用这个空的handle去调用释放的系统调用,内存根本不可能真正释放。换句话说,这个libuapi库只有在低版本内核上才有可能正常工作;高版本内核上,内存只能申请,无法释放。

      发布在 其它全志芯片讨论区
      L
      laocai
    • 回复: 关于sunxi图层设置DISP_LAYER_SET_CONFIG的一个问题

      @laocai 另外关于sunxi_display2.h文件,我在tina sdk的package中发现了七个路径下有这个文件,前面三个文件的内容各不相同,和内核使用的sunxi_display2.h文件也不同。
      allwinner/libAWIspApi/src/isp522/libisp/include/device/sunxi_display2.h
      allwinner/tina_multimedia/libcedarx/demo/xplayerdemo/sunxi_display2.h
      allwinner/tina_multimedia/libcedarx/demo/recoderdemo/sunxi_display2.h
      allwinner/libuapi/src/sunxi_display_v2.h
      testtools/tinatest/testcase/base/production/displaytester/common/sunxi_display_v2.h
      allwinner/tinacvr/src/middle_ware/sunxi_display_v2.h
      gui/minigui/multimedia-test/src/middle_ware/sunxi_display_v2.h

      比较了一下,和内核头文件最接近的是allwinner/libAWIspApi/src/isp522/libisp/include/device/sunxi_display2.h
      cmp.jpg

      allwinner/tinacvr/src/middle_ware/sunxi_display_v2.h和allwinner/libuapi/src/sunxi_display_v2.h比较接近,后者像是在前者基础上修改而来。

      发布在 其它全志芯片讨论区
      L
      laocai