一、根据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 目录下根据节点名字创建不同文件夹

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rV4rycaj-1681394085909)(pic/4-2 根节点的属性以及子节点.png)]

 目录/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文件之间还有继承关系?

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐