RK3568 安卓11系统EDP屏调试

本文详细解读了LCD屏幕的规格参数解析,包括时钟频率、分辨率等,并深入介绍了EDP配置的硬件原理、datasheet分析以及DTS配置实例。适合显示器开发者和系统集成者参考。

目录

一.lcd屏解析:

二.EDP配置

2.1 硬件原理分析

2.2 datasheet分析

2.3 完整DTS配置如下: 


一.lcd屏解析:

一般屏的规格书都会给出,但需要注意的是,有些规格书是错误的;有一些未给出(需要单独找厂商要);还有一些是给出总的,HFP+HS+HBP, VFP+VS+VBP。

clock-frequency: 提供给lcd的时钟频率,一般屏的规格书都会给出, 也可以通过计算得到。假如刷帧率是60hz,横向分辨率1250,纵向分辨率2000;那么lcd的时钟频率 dclk = 60 1250 2000 = 150MHz。
hactive: 横向分辨率。
vactive:纵向分辨率。
hsync-len 行同步回扫时间。
hback-porn: 行同步后肩时间。
hfront-porn:行同步前肩时间。
vsync-len: 帧同步回扫时间。
vback-porch: 帧同步后肩时间。
vfront-proch: 帧同步前肩时间。
de-active: DE 信号极性。
hysnc-active: 行同步信号极性。
vsync-active: 帧同步信号极性

二.EDP配置

2.1 硬件原理分析

查看原理图, 提取需要的配置信息

2.2 datasheet分析

THP = HFP + HS + HBP
tVP = VFP + VS + VBP
显示时序配置如下:

、timing0: timing0 {
    clock-frequency = <75000000>;
    hactive = <1280>;
    vactive = <800>;
    hback-porch = <100>;  // 根据实际情况调整
    hfront-porch = <100>;  // 根据实际情况调整
    hsync-len = <36>;
    vback-porch = <10>;  // 根据实际情况调整
    vfront-porch = <10>;  // 根据实际情况调整
    vsync-len = <11>;
    ...
};

2.3 完整DTS配置如下: 

panel: panel {
    compatible = "simple-panel";
    backlight = <&backlight>;
    pinctrl-names = "default";
    pinctrl-0 = <&lcd_en>;
    enable-gpios = <&gpio4 20 GPIO_ACTIVE_HIGH>;
    //reset-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
    prepare-delay-ms = <200>;
    enable-delay-ms = <20>;

    display-timings {
        native-mode = <&timing0>;

        timing0: timing0 {
            clock-frequency = <75000000>;
            hactive = <1280>;
            vactive = <800>;
            hback-porch = <100>;
            hsync-len = <36>;
            hfront-porch = <100>;
            vback-porch = <10>;
            vfront-porch = <10>;
            vsync-len = <11>;
            hsync-active = <0>;
            vsync-active = <0>;
            de-active = <0>;
            pixelclk-active = <0>;
        };
    };

    ports {
        panel_in: endpoint {
            remote-endpoint = <&edp_out>;
        };
    };
};

&edp {
    force-hpd;
    status = "okay";
    ports {
        port@1 {
            reg = <1>;
            edp_out: endpoint {
                remote-endpoint = <&panel_in>;
            };
        };
    };
};

&edp_phy {
    status = "okay";
};

&edp_in_vp0 {
    status = "disabled";
};

&edp_in_vp1 {
    status = "okay";
};

&route_edp {
    status = "okay";
    connect = <&vp1_out_edp>;
};

<think>好的,用户的问题是关于在RK3568芯片上运行Android 11时如何配置双异显并指定主副。我需要结合提供的引用内容来回答这个问题。首先,我得回忆一下引用中提到的方法。 根据引用[4],主副的配置可以通过系统属性vendor.hwc.device.primary和vendor.hwc.device.extend来指定,分别对应主和副。用户需要确认硬件连接和驱动支持,然后在设备树(dts)中进行配置。此外,系统属性的设置可能通过adb命令或者修改系统配置文件来实现。 引用[2]提到双异显需要底层调试好双显示,并且挂载在不同的VP上。同显时分辨率比例可能影响显示效果,而异显时副使用自己的分辨率。应用需要支持异显,比如使用Android Presentation或指定Activity的display id。 引用[3]指出可以通过设置系统属性来指定主副,例如vendor.hwc.device.primary和vendor.hwc.device.extend。应用开发时可以使用Presentation或指定display id启动Activity。 引用[5]提到通过getprop命令查看主副的当前设置,比如主是HDMI-A-1,副是HDMI-A-2。这有助于调试时确认配置是否正确。 现在需要将这些信息整合成一个清晰的步骤。首先,硬件和驱动层面需要确保双连接正常。接着,在系统配置中设置主副的属性。然后,应用层需要调用相应API来实现异显。 需要注意用户可能对设备树配置和系统属性设置不熟悉,所以步骤需要详细,包括如何通过adb设置属性,如何修改dts文件。同时,应用开发部分需要简要说明如何使用Presentation或display id。 另外,用户的问题提到了“通过代码或配置”,所以回答要涵盖这两种方式。配置方面主要是系统属性的设置和dts修改,代码方面则是应用层的实现。 最后,生成相关问题时要围绕双配置、应用开发调试方法等方面,确保问题对用户进一步学习有帮助。</think>在RK3568芯片的Android 11系统中,实现双异显并指定主副需通过系统级配置和应用层适配相结合,具体步骤如下: ### 一、硬件层配置 1. **显示接口验证** 需确保双已连接到不同显示接口(如HDMI、eDP、MIPI等),并通过`adb shell getprop | grep hwc`验证当前显示状态,输出示例: ``` [vendor.hwc.device.primary]: [HDMI-A-1] //主 [vendor.hwc.device.extend]: [HDMI-A-2] //副 ``` 2. **设备树(dts)配置** 在板级设备树文件中明确定义显示接口归属,例如将主绑定到VP0,副绑定到VP1: ```dts display-subsystem { ports = <&vop_out>; route { route_hdmi: route-hdmi { connect = <&vop_out>; }; route_edp: route-edp { connect = <&vop_out>; }; }; }; ``` ### 二、系统层配置 1. **属性设置** 通过`setprop`命令动态指定主副(需root权限): ```bash adb shell setprop vendor.hwc.device.primary HDMI-A-1 #主 adb shell setprop vendor.hwc.device.extend HDMI-A-2 #副 ``` 2. **持久化配置** 在`/vendor/build.prop`中添加以下配置实现开机自动生效: ```properties vendor.hwc.device.primary=HDMI-A-1 vendor.hwc.device.extend=HDMI-A-2 ``` ### 三、应用层实现 1. **Android Presentation API** 创建继承自`Presentation`的类,绑定到副显示: ```java Display[] displays = getSystemService(DisplayManager.class).getDisplays(); Display secondaryDisplay = displays[1]; //获取副对象 Presentation presentation = new Presentation(context, secondaryDisplay); presentation.setContentView(R.layout.second_screen_layout); presentation.show(); ``` 2. **Activity指定Display ID** 通过`ActivityOptions`指定目标幕启动: ```java ActivityOptions options = ActivityOptions.makeBasic(); options.setLaunchDisplayId(secondaryDisplayId); startActivity(intent, options.toBundle()); ``` ### 四、验证与调试 1. **显示状态查询** 使用`adb shell dumpsys display`检查双分辨率、刷新率等参数。 2. **触摸事件分离** 需通过`getevent`命令验证副触摸设备节点,并在输入子系统中配置多触控映射[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值