[RK3568 Android11] 开发之RK628D HDMI IN 显示二

目录

前言

一、HDMI IN显示APK

二、确定RK628D的设备节点

三、再确定下软件配置和硬件连接

四、测试HdmiInDemo应用


前言

        前面一篇HDMI IN章节,已讲述了RK628D的配置和编译问题,接下来再讲述后续调试遇到的问题;

一、HDMI IN显示APK

        在Android11上使用系统相机打不开HDMI IN显示?还真的是无法使用系统相机打开...尴尬;其实HDMI IN也是模拟一个CSI的摄像头,通过HDMI输入的图像转化为MIPI信号,发送给主控的CSI控制器;
        既然系统相机打不开,找到一份原厂的HDMI IN demo,把它打包进系统试下;
        我这里是打包rkCamera2和HdmiInDemo这两个应用到系统,HdmiInDemo应用之前在Android7.1上使用过;这次也想一起打包进去测试下;
       1、 拷贝rkCamera2和HdmiInDemo压缩包,并解压到packages/apps目录下

[RK3568 Android11] 开发之RK628D HDMI IN 显示二

       2、添加到系统编译中:vi device/rockchip/rk356x/device.mk

[RK3568 Android11] 开发之RK628D HDMI IN 显示二

        3、编译报错:packages/apps/HdmiInDemo/Android.mk: error: droidipcam: Must specify LOCAL_SDK_VERSION or LOCAL_PRIVATE_PLATFORM_APIS,

[RK3568 Android11] 开发之RK628D HDMI IN 显示二

        解决:要求Android.mk必须定义LOCAL_SDK_VERSION或者 LOCAL_PRIVATE_PLATFORM_APIS其中一个。
        vi packages/apps/HdmiInDemo/Android.mk
        添加即可:LOCAL_SDK_VERSION := current

       4、编译完后,在out目录下只生成了rkCamera2 apk,而HdmiInDemo并没有生成:out\target\product\rk3568_r\system\app\
        尝试使用mmm来编译OK;

        5、测试时,要给RK628D输入个HDMI显示信号,系统中使用这两个编译出来的APP,都没能打开HDMI IN显示;

二、确定RK628D的设备节点

        1、确定RK628设备节点,获取当前的连接状态和分辨率;
        输入命令:media-ctl -d /dev/media0 -p
        找到m00_b_rk628-csi设备:device node name /dev/v4l-subdev3

[RK3568 Android11] 开发之RK628D HDMI IN 显示二

        2、RkCamera2应用代码修改对应节点
                RkCamera2应用代码修改节点为"/dev/v4l-subdev3":
                        vi packages/apps/rkCamera2/jni/native.cpp

[RK3568 Android11] 开发之RK628D HDMI IN 显示二

        3、打开rkCamera2应用,还是没有图像显示
                media-ctl -d /dev/media0 -p看下是否获取到分辨率:

[RK3568 Android11] 开发之RK628D HDMI IN 显示二

        上图中并没有获取到分辨率,说明配置上还有问题;

三、再确定下软件配置和硬件连接

        1、查看硬件电源上电和复位是否正常,示波器量到是正常的;
        根据RK原厂的文档查找,有两处需特别注意的:就是hpd-output和plugin-det电路上是否有取反;

[RK3568 Android11] 开发之RK628D HDMI IN 显示二

        检查了下电路:
                hpd-output没有取反,不需要配置hpd-output-inverted;
                plugin-det有取反,需要把dts中 plugin-det-gpios有效电平GPIO_ACTIVE_HIGH更改为GPIO_ACTIVE_LOW;

&rk628_csi {
       status = "okay";
       /*
        * If the hpd output level is inverted on the circuit,
        * the following configuration needs to be enabled.
        */
       /*hpd-output-inverted;*/
-      plugin-det-gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;
+      plugin-det-gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_LOW>;
       //power-gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;
       rockchip,camera-module-index = <0>;

        2、更改后,烧入固件,开机可看到获取已输入的分辨率:

[RK3568 Android11] 开发之RK628D HDMI IN 显示二

        media-ctl -d /dev/media0 -p查看已有分辨率:

[RK3568 Android11] 开发之RK628D HDMI IN 显示二

        3、打开rkCamera2应用即可看到显示
 

[RK3568 Android11] 开发之RK628D HDMI IN 显示二

四、测试HdmiInDemo应用

        在使用rkCamera2应用打开HDMI IN显示后,接着使用系统相机和HdmiInDemo应用去打开试下;
        结果:系统相机和HdmiInDemo应用都打不开HDMI IN显示,报找不到相机设备错误;
        这可能是RK3568 Android11使用的是camera HAL3框架导致的,也有可能是原厂还没适配好的原因;问原厂也是回复说只能用他们的rkCamera2 demo来打开显示;

上一篇:DP转HDMI/VGA拓展坞方案|瑞奇达CS5262 DP转HDMI+VGA扩展坞设计|CS5262应用电路


下一篇:常用接口整理(HDMI接口、VGA接口、DP接口、DVI接口、SDI接口 ) 2021-06-15