楼主的排错笔记真的很有用。我在100ask的bbs上看到有相同的提问,但是没有答案。
看下来,似乎是全志usb的驱动程序里把端点类型写死了,找不到中断类型的端点导致配置hid小机的时候bind失败。是这样吗?
laocai 发布的最佳帖子
-
回复: V853做hid gadget小机排故笔记
-
回复: 【FAQ】全志D1芯片 如何解决Gstreamer:fb UI旋转(直接修改内核参数)后,sunxifbsink显示异常问题?
@houxiaoni 全志对gstreamer做了适配支持,怎么tina的开发文档里都没有提及?还是我漏看了什么重要内容?我看到的文档,多媒体开发只有tplayer工具这一种,楼主能否澄清一下?
-
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]
-
回复: 关于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库只有在低版本内核上才有可能正常工作;高版本内核上,内存只能申请,无法释放。
laocai 发布的最新帖子
-
回复: T113主机副屏项目(mipi屏幕)
@eestr 楼主你的项目进展如何了?我做了一个8.8寸mipi屏的驱动板,是用T113-S4做的。你有没有兴趣一起来做上位机的应用开发?
-
回复: 用T113-S4搭建一个8.8寸长条屏HMI开发平台
板子已经打样回来,BSP也调试通过。下面是1080p硬解的资源占用情况。
解码用的VE,颜色空间转换用的arm核。
-
用T113-S4搭建一个8.8寸长条屏HMI开发平台
中秋节快乐!
愿景就是用最流行的硬件元素搭建一个通用的HMI开发平台,方便广大工程师朋友和电子发烧友验证和拓展自己的想法。SOC选用T113-S4,是当红的全志SOC平台,双A7自带256MB内存,足够支撑Qt之类的图形应用开发;屏幕选用8.8寸MIPI长条屏,国内众多厂家都有出品,淘宝上早卖成了白菜价。最后希望这个平台能够做到5年之内不过时,不停产。
板子已经画好了。带一个USB Type A和一个Type C接口,液晶屏和触摸屏接口在左侧。SOC多余的引脚通过下方的双排针引出。板子比较紧凑84mmx50mm。
我会在这里更新后续的开发调试进展,有问题欢迎一起讨论。大家一起出力把论坛建设好。参考资料
whycan的长条屏开发板 -
回复: V853做hid gadget小机排故笔记
楼主的排错笔记真的很有用。我在100ask的bbs上看到有相同的提问,但是没有答案。
看下来,似乎是全志usb的驱动程序里把端点类型写死了,找不到中断类型的端点导致配置hid小机的时候bind失败。是这样吗? -
回复: 全志哪些芯片是DRM驱动?哪些是fb+de驱动?
我知道的,只有v3s和f1c100主线有drm驱动,而且都是支持不完整的。你可以到挖坑网上去搜索一下,那上面信息多一些。
-
回复: 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
-
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]