烧写需要哪些image:
boot
dtbo
vbmeta
vbmeta_system
super_empty
进入fastbootd 模式
product system vendor
1, 单独运行boot.img
adb reboot bootloader
fastboot boot boot.img
2,打包左右的image 为update.zip
进行脚本的烧写
下面是调试信息:
1, 全部提换kernel out, 修改just status=okay
wifi 不能使用,touch 不能使用,屏幕正常显示
2, 全部提换kernel out, 修改如掉dp connector 修改
烧录不进去,屏幕黑屏
Writing 'vbmeta_a' OKAY [ 0.071s]
extracting vbmeta_system.img (0 MB) to disk... took 0.001s
archive does not contain 'vbmeta_system.sig'
Sending 'vbmeta_system_a' (4 KB) OKAY [ 0.138s]
Writing 'vbmeta_system_a' OKAY [ 0.064s]
archive does not contain 'vendor_boot.img'
extracting super_empty.img (0 MB) to disk... took 0.001s
Rebooting into fastboot OKAY [ 0.064s]
< waiting for any device >
等待很长时间也没有响应
3, 仅仅替换dtbo.img, 修改如掉dp connector 修改
烧录不进去,屏幕有显示crash ,见拍照
4,kernel 不做任何修改, android 原生, kernel 不copy
系统能起来,touch可以使用
5,android 原生提换dtbo.img ,重新build boot.img , 仅仅烧写boot.img dbto.img vbmeta.img
adb root adb disable-verity
系统结果:系统不能启动crash
6,android 原生提换dtbo.img sm8150.dtb, sm8150-v2.dtb,重新build boot.img , 仅仅烧写boot.img dbto.img vbmeta.img
adb root adb disable-verity
系统结果:系统不能启动crash
=======debug==i2c==========================================================================
define ENOTCONN 107 /* Transport endpoint is not connected */
/home/xfwang/nreal/pixkernel/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-gcc
--------------------google 下载的android---------------------
&sde_dp {
qcom,dp-usbpd-detection = <&pm8150b_pdphy>;
qcom,ext-disp = <&ext_disp>;
qcom,dp-aux-switch = <&fsa4480>;
qcom,usbplug-cc-gpio = <&tlmm 38 0>;
pinctrl-names = "mdss_dp_active", "mdss_dp_sleep";
pinctrl-0 = <&sde_dp_usbplug_cc_active>;
pinctrl-1 = <&sde_dp_usbplug_cc_suspend>;
};
&mdss_mdp {
connectors = <&sde_rscc &sde_wb &sde_dp &sde_dsi &sde_dsi1>;
};
7, kernel just modify
index 8b09139..6398a19 100644
--- a/arch/arm64/boot/dts/google/sm8150-floral-display.dtsi
+++ b/arch/arm64/boot/dts/google/sm8150-floral-display.dtsi
@@ -154,12 +154,8 @@
};
};
-&sde_dp {
status = "disabled";
-};
&mdss_mdp {
connectors = <&sde_rscc &sde_wb &sde_dsi>;
connectors = <&sde_rscc &sde_wb &sde_dp &sde_dsi>;
};
&soc {
结果:不能烧写,报烧写错误
8.不做任何修改,可以烧写
--- a/arch/arm64/boot/dts/google/sm8150-floral-display.dtsi
+++ b/arch/arm64/boot/dts/google/sm8150-floral-display.dtsi
@@ -154,12 +154,9 @@
};
};
-&sde_dp {
status = "disabled";
-};
&mdss_mdp {
connectors = <&sde_rscc &sde_wb &sde_dsi>;
connectors = <&sde_rscc &sde_wb &sde_dp &sde_dsi>;
};
&soc {
diff --git a/arch/arm64/boot/dts/qcom/sm8150-sde-display.dtsi b/arch/arm64/boot/dts/qcom/sm8150-sde-display.dtsi
index 58bb42b..2bf0eda 100644
--- a/arch/arm64/boot/dts/qcom/sm8150-sde-display.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8150-sde-display.dtsi
@@ -534,17 +534,8 @@
};
&sde_dp {
qcom,dp-usbpd-detection = <&pm8150b_pdphy>;
qcom,ext-disp = <&ext_disp>;
qcom,dp-aux-switch = <&fsa4480>;
qcom,usbplug-cc-gpio = <&tlmm 38 0>;
pinctrl-names = "mdss_dp_active", "mdss_dp_sleep";
pinctrl-0 = <&sde_dp_usbplug_cc_active>;
pinctrl-1 = <&sde_dp_usbplug_cc_suspend>;
};
&mdss_mdp {
connectors = <&sde_rscc &sde_wb &sde_dp &sde_dsi &sde_dsi1>;
};
结果可以正常启动
10:
index 8b09139..b9f24b0 100644
--- a/arch/arm64/boot/dts/google/sm8150-floral-display.dtsi
+++ b/arch/arm64/boot/dts/google/sm8150-floral-display.dtsi
@@ -154,12 +154,9 @@
};
};
-&sde_dp {
status = "disabled";
-};
&mdss_mdp {
connectors = <&sde_rscc &sde_wb &sde_dsi>;
connectors = <&sde_rscc &sde_wb &sde_dp &sde_dsi>;
};
&soc {
diff --git a/arch/arm64/boot/dts/qcom/sm8150-sde-display.dtsi b/arch/arm64/boot/dts/qcom/sm8150-sde-display.dtsi
index 58bb42b..a710f2d 100644
--- a/arch/arm64/boot/dts/qcom/sm8150-sde-display.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8150-sde-display.dtsi
@@ -538,11 +538,7 @@
qcom,ext-disp = <&ext_disp>;
qcom,dp-aux-switch = <&fsa4480>;
qcom,usbplug-cc-gpio = <&tlmm 38 0>;
pinctrl-names = "mdss_dp_active", "mdss_dp_sleep";
pinctrl-0 = <&sde_dp_usbplug_cc_active>;
pinctrl-1 = <&sde_dp_usbplug_cc_suspend>;
};
&mdss_mdp {
结果corrupt
11 修改下面
--- a/arch/arm64/boot/dts/google/sm8150-floral-display.dtsi
+++ b/arch/arm64/boot/dts/google/sm8150-floral-display.dtsi
@@ -154,12 +154,9 @@
};
};
-&sde_dp {
status = "disabled";
-};
&mdss_mdp {
connectors = <&sde_rscc &sde_wb &sde_dsi>;
connectors = <&sde_rscc &sde_wb &sde_dp &sde_dsi>;
};
&soc {
diff --git a/arch/arm64/boot/dts/qcom/sm8150-sde-display.dtsi b/arch/arm64/boot/dts/qcom/sm8150-sde-display.dtsi
index 58bb42b..4345f90 100644
--- a/arch/arm64/boot/dts/qcom/sm8150-sde-display.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8150-sde-display.dtsi
@@ -535,14 +535,6 @@
&sde_dp {
qcom,dp-usbpd-detection = <&pm8150b_pdphy>;
qcom,ext-disp = <&ext_disp>;
qcom,dp-aux-switch = <&fsa4480>;
qcom,usbplug-cc-gpio = <&tlmm 38 0>;
pinctrl-names = "mdss_dp_active", "mdss_dp_sleep";
pinctrl-0 = <&sde_dp_usbplug_cc_active>;
pinctrl-1 = <&sde_dp_usbplug_cc_suspend>;
};
&mdss_mdp {
结果可以正常启动
12:qcom,dp-aux-switch = <&fsa4480>; remove only , can boot
vim arch/arm64/boot/dts/qcom/sm8150-sde-display.dtsi
--- a/arch/arm64/boot/dts/google/sm8150-floral-display.dtsi
+++ b/arch/arm64/boot/dts/google/sm8150-floral-display.dtsi
@@ -154,12 +154,9 @@
};
};
-&sde_dp {
status = "disabled";
-};
&mdss_mdp {
connectors = <&sde_rscc &sde_wb &sde_dsi>;
connectors = <&sde_rscc &sde_wb &sde_dp &sde_dsi>;
};
&soc {
diff --git a/arch/arm64/boot/dts/qcom/sm8150-sde-display.dtsi b/arch/arm64/boot/dts/qcom/sm8150-sde-display.dtsi
index 58bb42b..4345f90 100644
--- a/arch/arm64/boot/dts/qcom/sm8150-sde-display.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8150-sde-display.dtsi
@@ -535,14 +535,6 @@
&sde_dp {
qcom,dp-usbpd-detection = <&pm8150b_pdphy>;
qcom,ext-disp = <&ext_disp>;
qcom,dp-aux-switch = <&fsa4480>; qcom,usbplug-cc-gpio = <&tlmm 38 0>; pinctrl-names = "mdss_dp_active", "mdss_dp_sleep"; pinctrl-0 = <&sde_dp_usbplug_cc_active>; pinctrl-1 = <&sde_dp_usbplug_cc_suspend>;
};
&mdss_mdp {
结果可以正常启动
----------------pixel--debug----------------------------
dp_display.c:
dp_display_probe---》dp_display_init_aux_switch--》of_parse_phandle(解析节点:qcom,dp-aux-switch = <&fsa4480>;)--》
-----fsa4480_i2c.c--->fsa4480_reg_notifier-----》of_find_i2c_device_by_node(找到device?)
of_find_i2c_device_by_node---返回值是null
----------------qrd--debug----------------------------
dp_display.c:
dp_display_probe---》dp_display_init_aux_switch--》of_parse_phandle(解析节点:qcom,dp-aux-switch = <&fsa4480>;)--》
-----fsa4480_i2c.c--->fsa4480_reg_notifier-----》of_find_i2c_device_by_node(找不到device)
of_find_i2c_device_by_node---返回值不是null
能够知道89000 这个地址怎么使用的
ls -l 89
130|coral:/sys/devices/platform/soc # ls -l 89*
890000.i2c:
total 0
lrwxrwxrwx 1 root root 0 2020-02-19 06:52 driver -> ../../../../bus/platform/drivers/i2c_geni
-rw-r--r-- 1 root root 4096 2020-02-19 06:52 driver_override
drwxr-xr-x 5 root root 0 1970-04-28 22:57 i2c-0
-r--r--r-- 1 root root 4096 2020-02-19 06:52 modalias
lrwxrwxrwx 1 root root 0 2020-02-19 06:52 of_node -> ../../../../firmware/devicetree/base/soc/i2c@890000
drwxr-xr-x 2 root root 0 1970-04-28 22:57 power
lrwxrwxrwx 1 root root 0 2020-02-19 06:52 subsystem -> ../../../../bus/platform
-rw-r--r-- 1 root root 4096 1970-04-28 22:57 uevent
coral:/sys/devices/platform/soc/
=========================================================================================================
====================================================QRD=====================================================
=========================================================================================================
=====DTS=包含关系==========PATH:==pixkernel/private/msm-google/arch/arm64/boot/dts=======================
=DTS 包含关系==========PATH:==855_10Q_nreal/LINUX/android/kernel/msm-4.14/arch/arm64/boot/dts===
sm8150-qupv3.dtsi:
qupv3_se4_i2c: i2c@890000 {
compatible = "qcom,i2c-geni";
reg = <0x890000 0x4000>;
interrupts = <GIC_SPI 605 0>;
#address-cells = <1>;
#size-cells = <0>;
clock-names = "se-clk", "m-ahb", "s-ahb";
clocks = <&clock_gcc GCC_QUPV3_WRAP0_S4_CLK>,
<&clock_gcc GCC_QUPV3_WRAP_0_M_AHB_CLK>,
<&clock_gcc GCC_QUPV3_WRAP_0_S_AHB_CLK>;
dmas = <&gpi_dma0 0 4 3 64 0>,
<&gpi_dma0 1 4 3 64 0>;
dma-names = "tx", "rx";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&qupv3_se4_i2c_active>;
pinctrl-1 = <&qupv3_se4_i2c_sleep>;
qcom,wrapper-core = <&qupv3_0>;
status = "disabled";
};
./qcom/sm8150.dtsi:#include "sm8150-qupv3.dtsi"
./qcom/sm8150-qrd.dts:#include "sm8150.dtsi" //最后的板级DTS
sm8150-qupv3.dtsi---包含于---》sm8150.dtsi----包含于----》sm8150-qrd.dtsi--包含于---->sm8150-qrd.dts
sm8150.dtsi:
aliases {
serial0 = &qupv3_se12_2uart;
hsuart0 = &qupv3_se13_4uart;
spi0 = &qupv3_se3_spi;
i2c0 = &qupv3_se4_i2c;
};
./qcom/sm8150.dtsi:#include "sm8150-audio.dtsi"
sm8150-audio.dtsi-------包含于---->sm8150.dtsi
sm8150-audio.dtsi:
&qupv3_se4_i2c {
status = "ok";
fsa4480: fsa4480@43 {
compatible = "qcom,fsa4480-i2c";
reg = <0x43>;
pinctrl-names = "default";
pinctrl-0 = <&fsa_usbc_ana_en>;
};
};
./qcom/sm8150-qrd.dtsi:17:#include "sm8150-sde-display.dtsi"
sm8150-sde-display.dtsi-----包含于----》sm8150-qrd.dtsi----包含于---->sm8150-qrd.dts
sm8150-sde-display.dtsi:
&sde_dp {
qcom,dp-usbpd-detection = <&pm8150b_pdphy>;
qcom,ext-disp = <&ext_disp>;
qcom,dp-aux-switch = <&fsa4480>;
qcom,usbplug-cc-gpio = <&tlmm 38 0>;
pinctrl-names = "mdss_dp_active", "mdss_dp_sleep";
pinctrl-0 = <&sde_dp_usbplug_cc_active>;
pinctrl-1 = <&sde_dp_usbplug_cc_suspend>;
};
=========================================================================================================
====================================================PIXEL=====================================================
=========================================================================================================
=====DTS=包含关系==========PATH:==pixkernel/private/msm-google/arch/arm64/boot/dts=======================
./google/sm8150-floral-common.dtsi:#include "sm8150-floral-touch.dtsi"
./google/sm8150-floral-touch.dtsi--包含于---->sm8150-floral-common.dtsi
/qcom/sm8150-sde-display.dtsi---->sm8150-floral-display.dtsi--->sm8150-floral-common.dtsi
sm8150-sde-display.dtsi:
&sde_dp {
qcom,dp-usbpd-detection = <&pm8150b_pdphy>;
qcom,ext-disp = <&ext_disp>;
qcom,dp-aux-switch = <&fsa4480>;
qcom,usbplug-cc-gpio = <&tlmm 38 0>;
pinctrl-names = "mdss_dp_active", "mdss_dp_sleep";
pinctrl-0 = <&sde_dp_usbplug_cc_active>;
pinctrl-1 = <&sde_dp_usbplug_cc_suspend>;
};
-----------------------pixel手机dts---------------------------------------------
./qcom-base/sm8150-qupv3.dtsi
qupv3_se9_i2c:
qupv3_se9_i2c: i2c@a84000 {
compatible = "qcom,i2c-geni";
reg = <0xa84000 0x4000>;
interrupts = <GIC_SPI 354 0>;
#address-cells = <1>;
#size-cells = <0>;
clock-names = "se-clk", "m-ahb", "s-ahb";
clocks = <&clock_gcc GCC_QUPV3_WRAP1_S1_CLK>,
<&clock_gcc GCC_QUPV3_WRAP_1_M_AHB_CLK>,
<&clock_gcc GCC_QUPV3_WRAP_1_S_AHB_CLK>;
dmas = <&gpi_dma1 0 1 3 64 0>,
<&gpi_dma1 1 1 3 64 0>;
dma-names = "tx", "rx";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&qupv3_se9_i2c_active>;
pinctrl-1 = <&qupv3_se9_i2c_sleep>;
qcom,wrapper-core = <&qupv3_1>;
status = "disabled";
};
./sm8150-floral-camera-pmic.dtsi
&qupv3_se9_i2c {
/* MAX77826 */
status = "ok";
MAX77826: MAX77826@60 {
compatible = "max77826,max77826-regulator";
reg = <0x60>;
status = "ok";
pinctrl-names = "cam_pmic_en";
pinctrl-0 = <&cam_sensor_pmic_active>;
maxim,enable-gpio = <&tlmm 102 0>;
regulators {
max77826_ldo1: max77826_ldo1 {
regulator-name = "max77826_ldo1";
regulator-min-microvolt = <600000>;
regulator-max-microvolt = <2187500>;
};
}
-----pixel 手机修改-------------
diff --git a/arch/arm64/boot/dts/google/sm8150-floral-touch.dtsi b/arch/arm64/boot/dts/google/sm8150-floral-touch.dtsi
index 3085749..7f64b9f 100644
--- a/arch/arm64/boot/dts/google/sm8150-floral-touch.dtsi
+++ b/arch/arm64/boot/dts/google/sm8150-floral-touch.dtsi
@@ -34,7 +34,13 @@
};
&qupv3_se4_i2c {
status = "ok";
status = "ok";
fsa4480: fsa4480@43 {
compatible = "qcom,fsa4480-i2c";
reg = <0x43>;
pinctrl-names = "default";
pinctrl-0 = <&fsa_usbc_ana_en>;
};
};
=======================PIXEL 手机修改====分割=====================================
sm8150-audio.dtsi:
&qupv3_se4_i2c {
status = "ok";
fsa4480: fsa4480@43 {
compatible = "qcom,fsa4480-i2c";
reg = <0x43>;
pinctrl-names = "default";
pinctrl-0 = <&fsa_usbc_ana_en>;
};
};
cs40l25:
&qupv3_se15_i2c {
status = "ok";
// see -qup.dtsi for clk-freq-out setting
floral_cs40l25a: cs40l25a@43 {
compatible = "cirrus,cs40l25a";
pinctrl-names = "default";
pinctrl-0 = <&cs40l2x_pinctrl &clk_out_default>;
reset-gpios = <&tlmm 152 0>;
reg = <0x43>;
interrupt-parent = <&tlmm>;
interrupts = <129 IRQ_TYPE_LEVEL_LOW>;
async-suspend;
cirrus,boost-ind-nanohenry = <1000>;
cirrus,boost-cap-microfarad = <4>;
cirrus,boost-ipk-milliamp = <4500>;
cirrus,boost-ctl-millivolt = <10000>; /* 10V /
cirrus,boost-ovp-millivolt = <11000>; / 11V /
cirrus,f0-default = <2514000>; / 153 Hz /
cirrus,f0-min = <2293760>; / 140 Hz /
cirrus,f0-max = <2703360>; / 165 Hz */
hpd debug
msmnile:/ #
msmnile:/ # dmesg |grep xf.wang
[ 11.720301] --fsa4480_reg_notifier-xf.wang--QRD-mid-EINVAL-client=00000000d6e09ce1
[ 11.728071] fsa4480_reg_notifier--xf.wang---rc=0
[ 12.003662] --xf.wang---dp--parser->no_aux_switch=0,parser->lphw_hpd=0
dp_display_post_init---->dp_init_sub_modules---->dp_hpd_get--->dp_usbpd_get--->fail