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个参数:

  1. 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
posted @ 2022-11-18 10:28  汉塘阿德  阅读(138)  评论(0编辑  收藏  举报  来源