编号:EB-00003
环境:创龙RK3568开发板 (嵌入式linux 4.19.232) + HDMI&USB电容触摸屏;Host:win10专业版
现象:同事们用RK3568做QT UI开发,需要使用截图工具,一方面记录问题,一方面远程调试也需要。之前同事用过嵌入式截图工具gscap,觉得挺好用。自己移植过来后,发现在Rk3568平台上不能用。
解决:
移植两个开源的小工具(很小众,但是尝试了很多其他工具,只有这两个好用,在此也感谢作者的开源精神)。一个是drmcap,用于抓包得到RGB RAW格式的截图源文件;另一个YUVplayer,用于在win10上查看raw格式的文件。
drmcap移植和使用
1. github下载源码drmcap ,比较简单只有一个.c文件和Makefile文件
2. 修改Makefile指定编译工具链和ROOTFS、编译选项指定静态链接-static(以免工具在开发板上运行时动态库加载找不到)
3. 修改源文件drmcap.c:删除不必要的宏定义(直接编译会报错重复定义的宏)、修改截图输出文件的命名方式(这个视需要修改,默认是每次截图文件会覆盖之前)
4. 编译得到可执行文件drmcap。
5. 将编译好的drmcap上传到3568开发板,直接运行"./drmcap"。默认会捕获所有planes的数据并在当前目录下得到截图raw文件。当然工具支持很多参数(-h查看),可以指定捕获特定plane。例如, "./drmcap -p 57"
6. 注意,运行过程的打印信息也很重要,显示了截图文件的分辨率和色彩空间等信息,在后面查看该文件时需要。如下图所示。我们使用文件,默认分辨率1024*768,RGB32。
YUVplayer移植和使用
1. github下载源码YUVplayer
2. 其实也不需要移植修改什么,软件本身就能用。只不过打开一个截图文件,每次需要设置一下分辨率大小和色彩空间。每次这样操作比较麻烦,所以就改了一点:默认的分辨率和色彩空间与我们触摸屏截图一致,然后增加了默认打开raw截图文件就自动转成png图片格式并保存(改动很小,但是同事们用起来会方便很多)。
3. 运行yuvplayer.exe,将raw格式截图文件拖进来就好了(如果是没有移植直接使用,拖进来后需要根据raw截图文件的信息,设置一下分辨率和色彩空间),如下所示。
分析:
网上大量的嵌入式截图工具移植资料都是用的gsnap,但是它是只基于framebuffer的。对于基于DRM架构的显示驱动,是没法用的。基于DRM的嵌入式linux截图工具,网上资料居然少之又少,所以特地写出来跟大家分享一下。因为不是通用工具,所以就不发源码了,如果大家有需要请评论或私信,我把移植前后的源码包和可执行程序分享出来。
扩展:
对于DRM框架的扩展学习,可以参考DRM Display Driver Guide