设备树文件说明

概述

本文档介绍 Quectel Pi H1 平台的设备树文件结构、位置和修改方法。设备树(Device Tree)是 Linux 内核用于描述硬件配置的数据结构,掌握设备树文件的组织结构对于内核开发至关重要。

顶层设备树

Quectel Pi H1 的顶层设备树文件为 qcs6490-idp-pi.dts,可以在以下两个位置找到:

  • 推荐修改位置(内核代码外,方便覆盖):

    src/qcom-6.6-overlay/arch/arm64/boot/dts/qcom/qcs6490-idp-pi.dts
    
  • 内核源码内位置

    sources/quectel-src/kernel/qcom-6.6/arch/arm64/boot/dts/qcom/qcs6490-idp-pi.dts
    

建议:对设备树的所有修改,推荐在 src/qcom-6.6-overlay 目录下的文件上进行。

常用设备树文件

sc7280.dtsi

在开发过程中,sc7280.dtsi 文件会被高频查看和使用。该文件包含了以下常用节点:

  • GPIO(通用输入输出)
  • SPI(串行外设接口)
  • I2C(I²C 总线)
  • UART(串口)
  • CPU(处理器)
  • GPU(图形处理器)

文件路径

sources/quectel-src/kernel/qcom-6.6/arch/arm64/boot/dts/qcom/sc7280.dtsi

外部设备树仓库

高通平台将显示、图形、摄像头、视频等相关的驱动和设备树从 Linux 内核源码中分离出来,形成独立的代码仓库。

查看仓库信息

可根据 镜像构建 下载 Yocto 工程源码,通过查看 layers/meta-qcom-hwe 目录下的 .bb 文件获取具体的代码仓库信息。

示例:查看摄像头设备树仓库

打开文件 layers/meta-qcom-hwe/recipes-multimedia/cameradtb/cameradtb_1.0.bb,可以看到:

SRCPROJECT = "git://git.codelinaro.org/clo/le/platform/vendor/opensource/camera-devicetree.git;protocol=https"
SRCBRANCH  = "camera-kernel.qclinux.1.0.r1-rel"
SRCREV     = "08511ff747916576232cc26394bb9c5c6e0ab1f5"

信息说明

本地设备树子仓库位置

为了便于编译和使用,Quectel Pi H1 将这些独立的设备树子仓库放置在 src/devicetree 目录下:

模块 路径
摄像头 src/devicetree/camera-devicetree
显示 src/devicetree/display-devicetree
图形 src/devicetree/graphics-devicetree
视频 src/devicetree/video-devicetree

各模块设备树详细说明

1. Camera(摄像头)

设备树文件

  • Camera 主配置

    src/devicetree/camera-devicetree/qcm6490-camera-rb3.dtsi
    
  • Camera 传感器配置

    src/devicetree/camera-devicetree/qcm6490-camera-sensor-rb3.dtsi
    

相关配方文件

  • 基础配方

    layers/meta-qcom-hwe/recipes-multimedia/cameradtb/cameradtb_1.0.bb
    
  • 扩展配方

    layers/meta-quectel/recipes-multimedia/cameradtb/cameradtb_1.0.bbappend
    

2. Display(显示)

设备树文件

  • 8寸屏配置

    src/devicetree/display-devicetree/display/dsi-panel-waveshare-8inch-video.dtsi
    
  • SDE Display 主配置

    src/devicetree/display-devicetree/display/qcm6490-sde-display-pi.dtsi
    
  • SDE Display 引脚配置

    src/devicetree/display-devicetree/display/qcm6490-sde-display-pinctrl.dtsi
    
  • SDE Display 通用配置

    src/devicetree/display-devicetree/display/qcm6490-sde-display.dtsi
    
  • 顶层设备树引用

    src/qcom-6.6-overlay/arch/arm64/boot/dts/qcom/qcs6490-idp-pi.dts
    

相关配方文件

  • 基础配方

    layers/meta-qcom-hwe/recipes-multimedia/display/qcom-displaydevicetree_git.bb
    
  • 扩展配方

    layers/meta-quectel/recipes-multimedia/display/qcom-displaydevicetree_git.bbappend
    

3. Graphics(图形)

设备树文件

  • GPU 配置
    src/devicetree/graphics-devicetree/gpu/qcm6490-graphics.dtsi
    

相关配方文件

  • 基础配方

    layers/meta-qcom-hwe/recipes-graphics/graphicsdevicetree/qcom-graphicsdevicetree_git.bb
    
  • 扩展配方

    layers/meta-quectel/recipes-graphics/graphicsdevicetree/qcom-graphicsdevicetree_git.bbappend
    

4. Video(视频)

设备树文件

  • Video 配置
    src/devicetree/video-devicetree/qcm6490-video.dtsi
    

相关配方文件

  • 基础配方

    layers/meta-qcom-hwe/recipes-multimedia/video/qcom-videodtb_1.0.bb
    
  • 扩展配方

    layers/meta-quectel/recipes-multimedia/video/qcom-videodtb_1.0.bbappend
    

修改建议

  1. 优先修改覆盖层:修改设备树时,优先在 src/qcom-6.6-overlaysrc/devicetree 目录下的文件上进行,避免直接修改内核源码。

  2. 了解依赖关系:修改设备树前,建议先了解各个 .dtsi 文件之间的引用关系。

  3. 配方文件同步:如果修改了设备树仓库或添加了新的设备树文件,需要同步更新对应的 .bb.bbappend 文件。

  4. 版本控制:建议使用 Git 管理所有修改,便于追踪和回滚。