0
点赞
收藏
分享

微信扫一扫

RK3588-HDMIRX

weipeng2k 2023-06-09 阅读 135

1. 简介

  • HDMI IN功能可以通过桥接芯⽚的⽅式实现,将HDMI信号转换成MIPI信号接收,RK3588芯⽚平台⾃带 HDMI RX模块,可以直接接收HDMI信号。
  • 本篇文章主要介绍在RK3588 平台通过HDMI RX模块开发实现HDMI IN功能的⽅法。

2. dts配置

2.1 HDMI RX控制器配置

/* Should work with at least 128MB cma reserved above. */ 
&hdmirx_ctrler { 
	status = "okay"; 
	
	/* Effective level used to trigger HPD: 0-low, 1-high */ 
	hpd-trigger-level = <1>; 
	hdmirx-det-gpios = <&gpio2 RK_PB5 GPIO_ACTIVE_LOW>; 
	pinctrl-names = "default"; 
	pinctrl-0 = <&hdmim1_rx &hdmirx_det>; 
}; 

&pinctrl {
	hdmirx {
		hdmirx_det: hdmirx-det {
			rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
}

2.2 预留内存

RK3588 HDMI RX模块只能使用物理连续内存,需要预留至少128MB的CMA内存: 注:按3840x2160分辨率,RGB888图像格式,4个轮转Buffer计算。

/* If hdmirx node is disabled, delete the reserved-memory node here. */ 
reserved-memory { 
	#address-cells = <2>; 
	#size-cells = <2>; 
	ranges; 
	
	/* Reserve 128MB memory for hdmirx-controller@fdee0000 */ 
	cma { 
		compatible = "shared-dma-pool"; 
		reusable; 
		reg = <0x0 (256 * 0x100000) 0x0 (128 * 0x100000)>; 
		linux,cma-default; 
	}; 
};

3. 调试

HDMI-IN 设备在内核中会被注册为 video 设备,生成的节点如:/dev/video20,可以通过 v4l2-ctl 命令来获取设备信息和抓帧。

  • 查看所有video节点

ls /dev/video*

  • 获取设备信息,查找rk_hdmirx设备对应的是哪个video节点

v4l2-ctl -d /dev/video* -D      例: v4l2-ctl -d /dev/video20 -D

使⽤v4l2-ctl -d参数指定vidoe节点,-D命令查看节点信息,通过Driver name确认哪个是节点是rk_hdmirx 设备:

  • 获取外部设备输入的分辨率信息

v4l2-ctl -d /dev/video20  -V

!

可以看出此时输入源的像素格式为 ' NV24 ' 。分辨率为 1920 * 1080

抓图:根据输入源的格式和分辨率设置好抓图命令的格式和分辨率: ( 这里像素格式为 ' NV24 ' 。分辨率为 1920 * 1080 )

v4l2-ctl -d /dev/video20 --set-fmt-video=width=1920,height=1080,pixelformat=NV24 --stream-mmap=3 --stream-skip=100 --stream-to=/oem/NV24.yuv --stream-count=1 --stream-poll

  • 在 PC 端查看抓取到的帧文件
    将抓取到的NV24.yuv图片可adb pull到PC端,通过7yuv、YUView等⼯具软件查看:

adb pull /oem/NV24.yuv ./

举报

相关推荐

0 条评论