linux笔记(6):东山哪吒D1H测试HDMI显示内置图片-命令行调试
文章目录
测试开发板的HDMI输出。
参考文档:全志官方文档。
1.测试流程和结果
测试结果,只显示了约五分之二:
2.测试过程详解
2.1 挂载测试工具
输入命令:
mount -t debugfs none /sys/kernel/debug
查看显示调试节点 dispdbg:
> cd /sys/kernel/debug
> ls
asoc extfrag pwm
bdi fault_around_bytes regmap
block gpio regulator
bluetooth hid sleep_time
clear_warn_once ieee80211 sunxi_leds
clk ion suspend_stats
device_component mmc0 ubi
devices_deferred mmc1 ubifs
dispdbg mtd usb
dma_buf pinctrl wakeup_sources
enc_test pm_qos
进入目录 dispdbg:
> cd dispdbg/
> ls
command dbglvl info name param start
1.2 设置参数
1.2.1设置name
name有下面几个选项:
- disp0/1/2 – 显示通道
- lcd0/1/2 – LCD
- enhance0/1/2 – 色彩增强模式
- smbl0/1/2 – 背光
目前我还不知道这几个有什么区别,现在选择disp0:
echo disp0 > name
1.2.2选择命令
这里使用的是switch命令:
echo switch > command
官方文档开放的命令有7个:
- switch – 切换显示通道
- blank – 显示开关
- suspend – 显示进入休眠
- resume – 显示从休眠中唤醒
- setbl – 背光调节
- vsync – 消息开关
- getinfo – 查看智能背光的状态
1.2.3 设置命令参数
这个命令的格式是这样的:
echo type mode > param
这里我们选择type = 4,mode = 10。
输入命令:
echo 4 10 > param
每个命令都有自己的参数,switch命令有2个参数:
- type ,HDMI对应 4
typedef enum
{
DISP_OUTPUT_TYPE_NONE = 0,
DISP_OUTPUT_TYPE_LCD = 1,
DISP_OUTPUT_TYPE_TV = 2,
DISP_OUTPUT_TYPE_HDMI = 4,
DISP_OUTPUT_TYPE_VGA = 8,
}disp_output_type;
2.mode,这里我随便选择一个10,对应 DISP_TV_MOD_1080P_60HZ
typedef enum
{
DISP_TV_MOD_480I = 0,
DISP_TV_MOD_576I = 1,
DISP_TV_MOD_480P = 2,
DISP_TV_MOD_576P = 3,
DISP_TV_MOD_720P_50HZ = 4,
DISP_TV_MOD_720P_60HZ = 5,
DISP_TV_MOD_1080I_50HZ = 6,
DISP_TV_MOD_1080I_60HZ = 7,
DISP_TV_MOD_1080P_24HZ = 8,
DISP_TV_MOD_1080P_50HZ = 9,
DISP_TV_MOD_1080P_60HZ = 0xa,
DISP_TV_MOD_1080P_24HZ_3D_FP = 0x17,
DISP_TV_MOD_720P_50HZ_3D_FP = 0x18,
DISP_TV_MOD_720P_60HZ_3D_FP = 0x19,
DISP_TV_MOD_1080P_25HZ = 0x1a,
DISP_TV_MOD_1080P_30HZ = 0x1b,
DISP_TV_MOD_PAL = 0xb,
DISP_TV_MOD_PAL_SVIDEO = 0xc,
DISP_TV_MOD_NTSC = 0xe,
DISP_TV_MOD_NTSC_SVIDEO = 0xf,
DISP_TV_MOD_PAL_M = 0x11,
DISP_TV_MOD_PAL_M_SVIDEO = 0x12,
DISP_TV_MOD_PAL_NC = 0x14,
DISP_TV_MOD_PAL_NC_SVIDEO = 0x15,
DISP_TV_MOD_3840_2160P_30HZ = 0x1c,
DISP_TV_MOD_3840_2160P_25HZ = 0x1d,
DISP_TV_MOD_3840_2160P_24HZ = 0x1e,
DISP_TV_MODE_NUM = 0x1f,
}disp_tv_mode;
1.3 指定显示测试图片
echo 1 > /sys/class/disp/disp/attr/colorbar
1.4开启显示
输入命令:
echo 1 > start
开发板反馈信息:
[ 5059.601019] disp 0, type 4, mode4
[ 5060.623495] [HDMI receive params]: tv mode: 0x4 format:0x1 data bits:0x0 eotf:0x4 cs:0x101 dvi_h dmi:2 range:2 scan:0 aspect_ratio:8
[ 5061.683548] disp_al_manager_apply ouput_type:0
[ 5061.689240] disp_al_hdmi_cfg
[ 5061.802820] HDMI Audio Enable Successfully
[ 5061.807427] [DISP] disp_device_attached_and_enable,line:233:
[ 5061.807432] attached ok, mgr0<-->dev0
[ 5061.818195] [DISP] disp_device_attached_and_enable,line:236:
[ 5061.818205] type:4,mode:4,fmt:yuv444,bits:8bits,eotf:4,cs:257 dvi_hdmi:2, range:2 scan:0 ratio:8
3.使用bash初始化HDMI
把上面的命令写到 hdmi.sh
文件,上传到开发板,更改可执行属性,使用 sh ./hdmi.sh 执行文件,就可以开启。
#!/bin/bash
# 0.挂载debug 节点
mount -t debugfs none /sys/kernel/debug
# 1.进入目录
cd /sys/kernel/debug/dispdbg
# 2.设置 name
echo disp0 > /sys/kernel/debug/dispdbg/name
# 3.设置命令
echo switch > /sys/kernel/debug/dispdbg/command
# 4.设置参数
echo 4 10 > /sys/kernel/debug/dispdbg/param
# 5.启动
echo 1 > start