设备树文件说明
概述
本文档介绍 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"
信息说明:
- 仓库地址:https://git.codelinaro.org/clo/le/platform/vendor/opensource/camera-devicetree.git
- 分支:camera-kernel.qclinux.1.0.r1-rel
- 提交版本: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.dtsiCamera 传感器配置:
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.dtsiSDE Display 主配置:
src/devicetree/display-devicetree/display/qcm6490-sde-display-pi.dtsiSDE Display 引脚配置:
src/devicetree/display-devicetree/display/qcm6490-sde-display-pinctrl.dtsiSDE 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
修改建议
优先修改覆盖层:修改设备树时,优先在
src/qcom-6.6-overlay和src/devicetree目录下的文件上进行,避免直接修改内核源码。了解依赖关系:修改设备树前,建议先了解各个
.dtsi文件之间的引用关系。配方文件同步:如果修改了设备树仓库或添加了新的设备树文件,需要同步更新对应的
.bb和.bbappend文件。版本控制:建议使用 Git 管理所有修改,便于追踪和回滚。