【Display】高通HQX(QNX+Android hypervisor)系统屏幕相关调试命令

高通 Q+A Hypervisor系统,显示方案涵盖了 高通QDI + WFD,QNX screen,Android surface等框架,整体还是比较麻烦的,有时间再针对各个框架做下整理和总结。

下面先简单整理了下显示相关的调试命令。

1. 调试 - 屏幕 - Android系统

1.1 调试 - 屏幕 - 截屏 - screencap

Android系统的截屏命令

$ adb shell screencap /sdcard/capture/screen1.png

$ adb pull /sdcard/capture/screen1.png .

1.2 调试 - 屏幕 - 显示系统相关内容dump

当主机发生黑屏并且系统处于运行状态的情况下,可借助人为触发方式(硬按键、中控特殊touch手势、诊断等)主动触发Android截屏显示相关log

$ adb dumpsys window windows

$ adb dumpsys activity activities

$ adb dumpsys SurfaceFlinger

$ adb dumpsys display

$ adb dumpsys input

1.3 调试 - 屏幕 - DumpLayer

#!/bin/bash

adb root

adb remount

adb shell

mkdir /data/misc/display/

vndservice call display.qservice 21 i32 10 i32 7 i32 3

最后把“/data/misc/display/” 用adb pull命令上传到本地

PS:该命令有即时性,必须在问题发生时dump

2. 调试 - 屏幕 - QNX系统

2.1 调试 - 屏幕 - 截屏 - screenshot

QNX系统的截屏命令

screenshot Options:

-size=[width]x[height] Sets the dimension of the screenshot

-pos=[x],[y] Sets the starting position of the capture region

-display=[str] The display to acquire

-file=[str] Sets target screenshot file name, Default is

"screenshot.bmp"

-verbose or -v Enable extra information messages on stdout

-format=[str] Sets target format. Default is rgbx8888.

$ screenshot -display=1 -file=dpy1.png

$ screenshot -display=2 -file=dpy2.png

默认不带路径,存于“/”下

2.2 调试 - 屏幕 -保存QNX screen log

QNX系统/dev/screen目录下保存了qnx侧显示应用使用screen框架包含的各种信息,比如display windows buffer等

$ tar -zcvf /var/log/screen.tar.gz.log $(find /dev/screen/ -type f)

2.3 调试 - 屏幕 -保存QNX display framebuffer

保存经DPU合成后的framebuffer,用以判断DPU是否正常

$ echo surfacedump=0xFF > /dev/displaylog

2.4 调试 - 屏幕 -保存DPU 相关寄存器log

保存DPU相关寄存器的配置,用以判断DPU是否正常

$ echo rd=1 > /dev/displaylog

cp /tmp/displog_register_dump /var/log/displog_register_dump.log

2.5 调试 - 屏幕 -screencmd命令解析

命令解读

修改screen对象的属性。一个程序在创建screen组件完成后,screen进程会将程序设置的一些信息输出在/dev/screen/process name/win-id文件中,cat /dev/screen/process name/win-id 后会看到screen的相关信息。

$ screencmd

如:

screencmd setcv grp-11 SCREEN_PROPERTY_NAME "My Group Name"

screencmd setiv win-1 SCREEN_PROPERTY_BUFFER_SIZE 100,100

screencmd setpv win-1 SCREEN_PROPERTY_ALTERNATE win-2

screencmd setllv dpy-1 SCREEN_PROPERTY_IDLE_TIMEOUT 1234

screencmd setgp win-1 "My Group Name"

screencmd apply

[cmd]:

表示要应用于属性的值的类型,取决于你想要设置的属性。

命令属性值类型/格式
setcv想要设置一个字符串属性
setgp对象应该加入的组的名称
setiv要将属性设置为的整数或以逗号分隔的整数列表。(例如,1280,760)
setllv要将属性设置为的长整数。
setpv要将属性设置为的屏幕对象。指定对象的方法与指定对象参数的方法相同。

[Objects (obj)]:

指定要改变属性的目标对象,通过<对象类型前缀>-的形式指定对象。对象类型的ID可以通过查看屏幕调试文件来确定,例如/dev/screen/mem。screencmd支持以下Screen对象,并列出了它们的关联前缀:

比如一个window类型对象的ID为1,那么win-1就可以用来表示这个对象。

ctx-[int] to specify a context

dev-[int] to specify a device

dpy-[int] to specify a display

grp-[int] to specify a group

pix-[int] to specify a pixmap

ssn-[int] to specify a session

str-[int] to specify a stream

win-[int] to specify a window

[property]:

要应用于Screen对象的属性。screencmd支持每种对象类型的所有有效属性。

大小写不敏感,并且省略“SCREEN_PROPERTY_”也是可以的。

screencmd setiv win-1 SCREEN_PROPERTY_ZORDER(或ZORDER或zorder) 1

列表有:

命令属性值类型/格式
idscreen窗口的唯一标识符,在创建窗口时生成,dpy-1表示窗口在display id 1上
permissions窗口权限
status显示状态 ,FULLY表示显示在显示屏上,VISIBLE表示是可见的,FULL表示全屏显示,INVISIBLE表示窗口隐藏
pipeline设置使用的pipeline
name对象应该加入的组的名称,screencmd setcv grp-11 name "My Group Name"
size设置对象的大小,screencmd setiv win-1 size 400,800
buffer_size设置buffer的尺寸,要将属性设置为的整数或以逗号分隔的整数列表。(例如,1280,760),
screencmd setiv win-1 buffer_size 100,100
global_alpha设置透明度,screencmd setiv win-6 global_alpha 0
color设置背景色,
zorder设置对象的窗口层级,screencmd setiv win-1 zorder 1
scale_mode设置scale模式
rotation设置图像翻转度数,screencmd setiv win-6 rotation 90

2.6 调试 - 屏幕 -screencmd命令实例

1. 首先查询对应的window ,比如ui_hmi对应的window为win-6

        ls /dev/screen/ui_hmi

                ui_hmictx-7 ssn-4 win-6 grp-0 str-5

2. 设置win-6的窗口大小为(500,500)

        $ screencmd setiv win-6 size 500,500

3. 设置win-6窗口旋转 90度

        $ screencmd setiv win-6 rotation 90

4. 设置win-6窗口的Z-ORDER为1000

        $ screencmd setiv win-6 zorder 1000

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值