一、根据lunch 查找具体的dts文件
比如:lunch msm8953_64-userdebug
下面的1 和 2 借鉴自:
如何找到kernel所用的dtsi_百度知道
1、找具体本系统需要的dts文件
然后在out/target/product/msm8953_64/obj/KERNEL_OBJ的.config
里去找这个CONFIG_ARCH_MSM, 我的正好是msm8953
***@ubuntu:~/work/out/target/product/msm8953_64/obj/KERNEL_OBJ$ grep -srn "CONFIG_ARCH_MSM" ./.config
369:CONFIG_ARCH_MSM8953=y
370:# CONFIG_ARCH_MSM8937 is not set
371:# CONFIG_ARCH_MSM8917 is not set
421:CONFIG_ARCH_MSM8953_SOC_SETTINGS=y
2、在开机kernel里查找
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.9.82-perf+ (wangqingyuan@ubuntu) (gcc version 4.9.x 20150123 (prerelease) (GCC) ) #1 SMP PREEMPT Mon Jul 3 13:57:12 CST 2023
[ 0.000000] Boot CPU: AArch64 Processor [410fd034]
[ 0.000000] Machine: Qualcomm Technologies, Inc. APQ8053 PMI8950 LP01 EVT QRD SKU3
[ 0.000000] core_ctl: disable_cpumask=0-7
在kernel/msm-4.9/arch/arm64/boot/dts/qcom里,寻找上面的Machine后面的值,
Qualcomm Technologies, Inc. APQ8053 PMI8950 LP01 EVT QRD SKU3
这个值,直接查找没找到,我只能先查找Qualcomm Technologies, Inc. APQ8053
然后再查找 LP01 EVT QRD SKU3, 怀疑 model这个属性可以继承一样,导致现在依然不知道从哪个dts入手
3、在dts的Makefile里,看到了这个
现在还不确定,有可能意思是,lp01-evt.dts 依赖于 soc-lp01-evt.dts
lp01-evt.dtbo-base := soc-lp01-evt.dtb
lp01-evt2.dtbo-base := soc-lp01-evt2.dtb
在soc-lp01-evt.dts里,感觉好像是对上了,但感觉在字符串里多个SOC的样子
#include "apq8053.dtsi"
//#include "pmi8950.dtsi"
#include "pmi8950_bbox.dtsi"
#include "msm8953-pmi8950.dtsi"/ {
model = "APQ8053 + PMI8950 SOC";
compatible = "qcom,apq8053";
qcom,pmic-id = <0x010016 0x010011 0x0 0x0>;
qcom,pmic-name = "PMI8950";
bbox,board-id = <0 0x111>;
};
4、设备树在系统中的体现
linux驱动开发 - 04_Linux 设备树学习 - DTS语法
Linux设备模型、平台设备驱动、设备树(device tree)、GPIO子系统以及pinctrl子系统介绍
Linux 内核启动的时候会解析设备树中各个节点的信息,并且在根文件系统的/proc/devicetree 目录下根据节点名字创建不同文件夹
目录/proc/device-tree 目录下的内容, /proc/device-tree 目录下是根节点“/”的所有属性和子节点
各个文件夹就是根节点“/”的各个子节点,比如“aliases”、“ backlight”、“ chosen”和“ clocks”等等
/proc/device-tree 目录就是设备树在根文件系统中的体现,同入/proc/device-tree/soc 目录中就可以看到 soc 节点的所有子节点
msm8953_64:/ # ls /proc/device-tree/soc/sdhci@78
sdhci@7824900/ sdhci@7864900/
5、android系统编译的kernel目录,以及生成dtb
kernel的产物:./out/target/product/msm8953_64/obj/kernel/msm-4.9/arch/arm64/boot/dts/qcom
***@ubuntu:~/work/out/target/product/msm8953_64/obj/kernel/msm-4.9/arch/arm64/boot/dts/qcom$ ls
lp01-evt2.dtbo lp01-evt.dtbo md01-evt.dtbo modules.order soc-lp01-evt2.dtb soc-lp01-evt.dtb soc-md01-evt.dtb
问题:
1、dts文件之间还有继承关系?