背景需求:通常在应用开发过程中需要做显示相关内容,通常需要获取显示接口相关信息,这个过程就涉及相关的操作命令。
前言:在RK系列平台通常显示框架走的是DRM这套框架,buildroot系统应用层显示使用的是weston,因此下述命令均基于这两点作为前提。
查看支持的显示器接口:
cat /sys/class/drm/
ls
1.查看显示器支持的分辨率信息,以HDMI、MIPI LCD为例
cat /sys/class/drm/card0-HDMI-A-1/modes
MIPI LCD分辨率支持查看
cat /sys/class/drm/card0-DSI-1/modes
2.查看显示接口的DRM相关信息
需求:当板卡默认接入多个屏幕时,通常系统会默认有一个接口屏幕做为主屏,其余的作为幅屏,在某种需求下我们需要指定想要的屏幕作为主屏,这种情况下就需要了解DRM框架,使用相关的命令获取对应的DRM信息实现屏幕指定。
使用modetest命令查看屏幕接口的DRM信息,仍以HDMI、MIPI LCD为例进行演示
从这里就可以通过Connector字段的name值确认屏幕接口为HDMI,并且可以通过encoder值180确认Encoders字段对应的crtc值为73(后续我们指定屏幕显示需要用到上面的信息),通过modes值可以确认屏幕支持的分辨率,通常在多个分辨率之中带perferred为屏幕主推分辨率,也是首选分辨率。
同理MIPI DSI接口:
Planes字段:可以通过上述查询的crtc确认HDMI对应的Planes,此字段的id值需要关注,后续指定屏幕会用上,这里HDMI是57
可以获取屏幕接口支持的图像格式
MIPI LCD同理:
3.显示分辨率切换
下述演示为动态切换,即当前系统生效,重启系统恢复默认
切换显示接口为主屏:
echo "output:HDMI-A-1:primary" >> /tmp/.weston_drm.conf
设置分辨率:
echo "output:HDMI-A-1:mode=1920x1080@60.0" > /tmp/.weston_drm.conf
配置HDMI-A-1为接下来视频数据的输出屏幕,即配置为首选 :
echo "output:HDMI-A-1:prefer" >> /tmp/.weston_drm.conf
配置HDMI-A-1画布开始位置为坐标(100,200) :
echo "output:HDMI-A-1:pos=100,200" >> /tmp/.weston_drm.conf
配置HDMI-A-1画布大小为1920x1080:
echo "output:HDMI-A-1:size=1920x1080" >> /tmp/.weston_drm.conf
MIPI LCD同理:
echo "output:DSI-1:primary" >> /tmp/.weston_drm.conf
echo "output:HDMI-A-1:mode=800x1280" > /tmp/.weston_drm.conf
echo "output:DSI-1:prefer" >> /tmp/.weston_drm.conf
拓展:静态分辨率切换(即重启系统不失效)
修改weston配置文件:
vi /etc/xdg/weston/weston.ini
配置屏幕接口信息:
[output]
name=HDMI-A-1
mode=1920x1080
4.指定屏幕显示
需求:通常在调试MIPI CSI摄像头是可能需要将摄像头输出的画面显示到指定的屏幕上,这个时候就需要指定屏幕显示了。
CAMERA采集图像显示到HDMI:我们重点讲解与显示相关的参数,有关其他参数请自行学习了解。
gst-launch-1.0 v4l2src device=/dev/video51 ! video/x-raw,format=NV12,width=640,height=480,framerate=30/1 ! kmssink connector-id=181 plane-id=57
命令参数说明:
connector-id:为上述查的connetor字段对应的id
plane-id:为上述查的Planes字段对应的id