设备树文件说明

概述

本文档介绍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管理所有修改,便于追踪和回滚。