RK3588s外接RK628实现HDMI RX功能

不同于RK3588,RK3588s是没有原生的HDMI IN接口的,因此需要通过增加一个HDMI 转MIPI CSI的转换芯片来实现。目前市面上可选的转换芯片包括RK自己的RK628,以及龙迅的LT6911,东芝的TC358749等。本文主要介绍通过RK3588s外接RK628来实现HDMI IN功能的具体操作方法以及调试记录。

硬件准备

首先介绍一下硬件。主板为风火轮科技的youyeetooR1开发板,主控RK3588s。此开发板的相关介绍可以参考

https://wiki.youyeetoo.cn/r1

板上带有两组MIPI CSI接口 ,位于如下位置

RK628D转接板为风火轮科技提供的。

硬件连接如下

原理图如下

笔者这里选择使用MIPI CPHY1这组,使用另一组时接线方式也是一样的。

在这一组里面

GPIO3_B6为中断脚

GPIO3_C6为RK628复位脚

使用I2C1_M4来进行I2C通信

软件准备

本文所使用的youyeetooR1开发板已经有配备SDK,以及编译,烧录的教程,可以参考youyeetooR1的wiki,链接如下

https://wiki.youyeetoo.cn/r1

linux系列的sdk和android系列的sdk编译方法以及烧录方法是不一样的,编译的时候注意一下。

要调试RK628,主要涉及kernel部分修改,建议读者首先了解kernel的编译以及烧录方法,这部分本文不做赘述。

如果要使用Android系统,那么除了kernel部分修改,还需要修改android上层的一些配置,这样才能使用camera的预览功能。

Kernel部分修改

RK628内部带有视频处理单元,其拓扑如下

目前RK平台上视频输入部分采用的都是Linux V4L2框架,在RK3588上,其视频输入通路如下图所示

在youyeetooR1上,两个摄像头接口用是mipi dcphy0和dcphy1,此时,其链路拓扑结构如下

下面按照上图的说明配置设备树

1.打开isp和cif功能

2.在I2C1下使能RK628。这里特别注意

rockchip,camera-module-index = <1>;

rockchip,camera-module-name = "RK628-CSI";

两个属性。如果在android系统下,上层需要依靠这两个属性查找摄像头设备,Linux系统可以随便配。

中断和复位脚是必须要配置的,按照”硬件准备”章节中的说明配置。

3.配置mipi到isp的拓扑结构

 

 

这个链路拓扑需要根据手册配置,如果下载了完整sdk,可以查阅 SDK目录里面的“Rockchip_Driver_Guide_VI_CN_v1.1.4.pdf”一文

完成上文配置后,对kernel进行编译,编译后烧录到设备上。由于转接板没有引出plugin引脚,因此上电前要先连接到HDMI输出设备。

上电,使用串口/SSH/ADB等方式登入youyeetooR1之后,通过如下命令可以看到系统的VIDEO IN设备。

media-ctl -d /dev/media1 -p

这里可以看到rk628-csi设备的分辨率为1920x1080,这个可以与输出源对比

在RK3588s上,这个media设备总共有四个,需要轮询一遍以找到RK628对应的这一个设备。

然后可以看到这个media1拓扑中最上层的设备节点,使用的节点名为/dev/video11

此时可以用v4l2-ctl命令抓取RAM图。命令如下

v4l2-ctl -d /dev/video11 --set-fmt-video=width=1920,height=1080,pixelformat=NV12 --stream-mmap=3 --stream-skip=3 --stream-to=/tmp/cif.out --stream-count=1 --stream-poll

其中--stream-to指向的节点需要指定。抓图命令以及在上位机查看抓到的RAM图的具体介绍可以查看这篇教程

https://wiki.youyeetoo.cn/zh/r1/DCcamera

如果配置正确的话,这里应该是能预览到正确的图像信息

到这里,kernel部分的修改就完成了。

Android部分修改

Android上层要开启HDMI IN相关功能,需要在mk文件中配置如下属性

BOARD_HDMI_IN_SUPPORT := true

CAMERA_SUPPORT_HDMI := true

这样Android的cameraHAL 层代码会开启对HDMI IN模块的支持。

另外还要使Android的cameraHAL能识别出HDMI IN的设备,需要在

hardware/rockchip/camera/etc/camera/ camera3_profiles_rk3588.xml

文件中增加RK628的支持

其中这个name要跟设备树里面的rockchip,camera-module-name一致,moduleID要跟rockchip,camera-module-index一致。

完成上述修改后对Android执行编译,编译之后烧录,然后在控制台上执行如下命令

dumpsys media.camera

如果找不到以上信息,则说明配置有误,或者驱动加载RK628设备时失败。

在有以上信息时,说明这个RK628的HAL层已经正常工作了,此时可以使用Android自带的照相机应用来预览。此时如果将HDMI的输出接到HDMI输入,可以看到如下画面。说明预览功能正常。

到这里,就完成了android下RK628的适配。

常见问题分析

1.RK628驱动已经加载成功,使用v4l2-ctl命令无图像

首先要检查RK628的HDMIRX是否正确识别出分辨率,如果能正常识别到分辨率,在内核日志中,应该有如下打印

如果没有这个打印,先检查输出设备的HDMI是否正常输出

如果输出端设备没有正常输出,说明HDMI的ddc通信是否正常

如果输出端设备有正常输出,则检查RK628驱动有无正常识别到HDMI的时钟,如果有这样的错误打印,并且一直有错误打印,就是没有识别到正确的HDMI时钟

2.使用v4l2-ctl命令能抓取到图像,android应用无法预览

检查dumpsys media.camera命令的返回信息是否正常,如果不正常,查看camera3_profiles_rk3588.xml是否正确增加了RK628的配置

3.关于热插拔

由于RK628模块没有拉出热插拔识别脚,因此HDMI不支持热插拔。上电的时候,输出源需要在RK628驱动加载前或者加载后的一定时间内使能。如果输出源较晚才能开始工作,则需要修改RK628驱动的此变量

在这个setup函数中,会多次尝试识别HDMI信号,如果多次识别不到,则后面不会再识别。

总结

本文以youyeetooR1开发板外接RK628为例介绍了如何在RK3588s平台上面调试HDMI IN功能。同时提供了一些调试过程中遇到的问题的解决方法。目前这种HDMI输入的场景还是不少的,比如需要对接一些高清录像机,或者高清摄像头等。风火轮科技的开发板上面已经具备了相关的转接板,如果有需要在RK3588s平台适配各种HDMI IN的,可以考虑用youyeetooR1开发板来调试。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值