跳到主要内容

SDK 设备树介绍

1. 设备树介绍

设备树(Device Tree)是 Linux 内核中用于描述板级硬件信息的一种机制。它以文本形式编写,通常采用 .dts(Device Tree Source)或 .dtsi(Device Tree Source Include)作为扩展名。其中,.dts 文件定义具体的硬件设备信息,而 .dtsi 文件则用于提取通用的设备或平台配置,被 .dts 文件引用。 Luckfox Pico 的设备树文件位于 luckfox-lyra SDK/kernel-6.1/arch/arm/boot/dts目录下。

设备树在编译过程中,.dts 和 .dtsi 文件会被编译为二进制格式的 .dtb(Device Tree Blob)文件。系统启动时,U-Boot 会将 .dtb 文件加载到内存中,内核在启动过程中解析该文件,根据其中的设备信息完成硬件初始化、驱动加载以及设备节点的注册等操作。 需要注意的是,从 Linux 4.4 内核开始引入了动态设备树(Dynamic Device Tree)机制,允许在系统运行时修改或覆盖 .dtb 中的部分配置。内核驱动将根据新的配置信息进行动态调整,而不仅仅依赖启动阶段加载的静态 .dtb。

2. 设备树配置简介

Luckfox Lyra 的镜像编译阶段首先需要选择对应的板级支持文件。

./build.sh lunch
  • 板级支持文件信息被软链接到 < luckfox-Lyra SDK >/device/rockchip/rk3506//*_defconfig/

  • 板级支持文件配置了 Luckfox Lyra 型号对应的 .dts 文件,其中 Luckfox Lyra 硬件设计通用部分较多的型号使用的 .dts 文件会包含同一个 .dtsi 文件以方便统一管理。

  • 不同型号对应的.dts 和 .dtsi 设备树文件如下:

    型号.dts.dtsi
    Luckfox Lyrark3506g-luckfox-lyra-sd.dtsrk3506-luckfox-lyra.dtsi
    Luckfox Lyra brk3506g-luckfox-lyra.dts/rk3506g-luckfox-lyra-sd.dtsrk3506-luckfox-lyra.dtsi
    Luckfox Lyra Plusrk3506g-luckfox-lyra-plus.dts/rk3506g-luckfox-lyra-plus-sd.dtsrk3506-luckfox-lyra.dtsi
    Luckfox Lyra Ultrark3506b-luckfox-lyra-ultra.dtsrk3506-luckfox-lyra-ultra.dtsi
    Luckfox Lyra Ultra Wrk3506b-luckfox-lyra-ultra-w.dtsrk3506-luckfox-lyra-ultra.dtsi
    Luckfox Lyra Zero Wrk3506b-luckfox-lyra-zero-w.dts/rk3506b-luckfox-lyra-zero-w-sd.dtsrk3506-luckfox-lyra-ultra.dtsi
    Luckfox Lyra Pi Ark3506b-luckfox-lyra-pi.dtsrk3506-luckfox-lyra-ultra.dtsi
    Luckfox Lyra Pi Brk3506b-luckfox-lyra-pi-sd.dtsrk3506-luckfox-lyra-ultra.dtsi
    Luckfox Lyra Pico Pi A Wrk3506b-luckfox-lyra-pi-w.dtsrk3506-luckfox-lyra-ultra.dtsi
    Luckfox Lyra Pico Pi B Wrk3506b-luckfox-lyra-pi-w-sd.dtsrk3506-luckfox-lyra-ultra.dtsi
    Luckfox Lyra B/Lyra Plusrk3506g-luckfox-lyra-amp-spinand.dtsrk3506-luckfox-lyra-ultra.dtsi
    Luckfox Lyra Zero Wrk3506b-luckfox-lyra-amp-spinand.dtsrk3506-luckfox-lyra-ultra.dtsi
    Luckfox Lyra Ultra/Ultra W/Pi A/Pi A wrk3506b-luckfox-lyra-amp-emmc.dtsrk3506-luckfox-lyra-ultra.dtsi

3. 设备树配置

Luckfox Lyra 系列开发板默认支持的 DSI 屏幕型号为 10.1-DSI-TOUCH-A。此外,我们还适配了幸狐官方、树莓派以及微雪的 DSI 屏幕,确保其显示和触摸功能正常工作。如需使用其他屏幕,用户需自行修改相关设备树配置。

3.1 幸狐和树莓派 DSI 屏幕(800*480)

  1. 进入设备树目录,找到需要修改的设备树文件。

    cd <sdk directory>/kernel-6.1/arch/arm/boot/dts

    $ ls | grep luckfox
    rk3506b-luckfox-lyra-amp-emmc.dts
    rk3506b-luckfox-lyra-amp-spinand.dts
    rk3506b-luckfox-lyra-pi.dts
    rk3506b-luckfox-lyra-pi-sd.dts
    rk3506b-luckfox-lyra-pi-w.dts
    rk3506b-luckfox-lyra-pi-w-sd.dts
    rk3506b-luckfox-lyra-ultra.dts
    rk3506b-luckfox-lyra-ultra-w.dts
    rk3506b-luckfox-lyra-zero-w.dts
    rk3506b-luckfox-lyra-zero-w-sd.dts
    rk3506g-luckfox-lyra-amp-spinand.dts
    rk3506g-luckfox-lyra.dts
    rk3506g-luckfox-lyra-plus.dts
    rk3506g-luckfox-lyra-plus-sd.dts
    rk3506g-luckfox-lyra-sd.dts
    rk3506-luckfox-lyra.dtsi
    rk3506-luckfox-lyra-ultra.dtsi


    $ vim rk3506-luckfox-lyra.dtsi
  2. 将数据传输通道配置调整为 1 Lane 模式。
    Luckfox

  3. 注释默认的初始化序列,并启用幸狐或树莓派官方 DSI 屏幕的初始化序列。
    Luckfox

  4. 修改 dsi -> disp_timings0 -> native-mode 节点,确保与屏幕参数匹配。

    disp_timings0: display-timings {
    //native-mode = <&dsi_timing0>;
    native-mode = <&ws_800_480>;
    }

3.2 微雪 DSI 屏幕

  1. 进入设备树目录,找到需要修改的设备树文件。

    cd <sdk directory>/kernel-6.1/arch/arm/boot/dts

    $ ls | grep luckfox
    rk3506b-luckfox-lyra-amp-emmc.dts
    rk3506b-luckfox-lyra-amp-spinand.dts
    rk3506b-luckfox-lyra-pi.dts
    rk3506b-luckfox-lyra-pi-sd.dts
    rk3506b-luckfox-lyra-pi-w.dts
    rk3506b-luckfox-lyra-pi-w-sd.dts
    rk3506b-luckfox-lyra-ultra.dts
    rk3506b-luckfox-lyra-ultra-w.dts
    rk3506b-luckfox-lyra-zero-w.dts
    rk3506b-luckfox-lyra-zero-w-sd.dts
    rk3506g-luckfox-lyra-amp-spinand.dts
    rk3506g-luckfox-lyra.dts
    rk3506g-luckfox-lyra-plus.dts
    rk3506g-luckfox-lyra-plus-sd.dts
    rk3506g-luckfox-lyra-sd.dts
    rk3506-luckfox-lyra.dtsi
    rk3506-luckfox-lyra-ultra.dtsi


    $ vim rk3506-luckfox-lyra.dtsi
  2. 注释默认的初始化序列。

    // 10inch1
    /*
    panel-init-sequence = [......
    ];
    */
  3. 修改 dsi -> disp_timings0 -> native-mode 节点,确保与屏幕参数匹配。
    Luckfox

  4. 开启 i2c2 -> gt911 中的触摸配置。
    Luckfox

3.3 101M-8001280-IPS-CT-K

  1. 进入设备树目录,找到需要修改的设备树文件。

    cd <sdk directory>/kernel-6.1/arch/arm/boot/dts

    $ ls | grep luckfox
    rk3506b-luckfox-lyra-amp-emmc.dts
    rk3506b-luckfox-lyra-amp-spinand.dts
    rk3506b-luckfox-lyra-pi.dts
    rk3506b-luckfox-lyra-pi-sd.dts
    rk3506b-luckfox-lyra-pi-w.dts
    rk3506b-luckfox-lyra-pi-w-sd.dts
    rk3506b-luckfox-lyra-ultra.dts
    rk3506b-luckfox-lyra-ultra-w.dts
    rk3506b-luckfox-lyra-zero-w.dts
    rk3506b-luckfox-lyra-zero-w-sd.dts
    rk3506g-luckfox-lyra-amp-spinand.dts
    rk3506g-luckfox-lyra.dts
    rk3506g-luckfox-lyra-plus.dts
    rk3506g-luckfox-lyra-plus-sd.dts
    rk3506g-luckfox-lyra-sd.dts
    rk3506-luckfox-lyra.dtsi
    rk3506-luckfox-lyra-ultra.dtsi


    $ vim rk3506-luckfox-lyra.dtsi
  2. 将背光节点打开。
    Luckfox

  3. 在 dsi_panel 节点中关联 backlight 节点。br/>Luckfox

  4. 关闭默认的背光驱动。
    Luckfox