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 Lyra rk3506g-luckfox-lyra-sd.dts rk3506-luckfox-lyra.dtsi Luckfox Lyra b rk3506g-luckfox-lyra.dts/rk3506g-luckfox-lyra-sd.dts rk3506-luckfox-lyra.dtsi Luckfox Lyra Plus rk3506g-luckfox-lyra-plus.dts/rk3506g-luckfox-lyra-plus-sd.dts rk3506-luckfox-lyra.dtsi Luckfox Lyra Ultra rk3506b-luckfox-lyra-ultra.dts rk3506-luckfox-lyra-ultra.dtsi Luckfox Lyra Ultra W rk3506b-luckfox-lyra-ultra-w.dts rk3506-luckfox-lyra-ultra.dtsi Luckfox Lyra Zero W rk3506b-luckfox-lyra-zero-w.dts/rk3506b-luckfox-lyra-zero-w-sd.dts rk3506-luckfox-lyra-ultra.dtsi Luckfox Lyra Pi A rk3506b-luckfox-lyra-pi.dts rk3506-luckfox-lyra-ultra.dtsi Luckfox Lyra Pi B rk3506b-luckfox-lyra-pi-sd.dts rk3506-luckfox-lyra-ultra.dtsi Luckfox Lyra Pico Pi A W rk3506b-luckfox-lyra-pi-w.dts rk3506-luckfox-lyra-ultra.dtsi Luckfox Lyra Pico Pi B W rk3506b-luckfox-lyra-pi-w-sd.dts rk3506-luckfox-lyra-ultra.dtsi Luckfox Lyra B/Lyra Plus rk3506g-luckfox-lyra-amp-spinand.dts rk3506-luckfox-lyra-ultra.dtsi Luckfox Lyra Zero W rk3506b-luckfox-lyra-amp-spinand.dts rk3506-luckfox-lyra-ultra.dtsi Luckfox Lyra Ultra/Ultra W/Pi A/Pi A w rk3506b-luckfox-lyra-amp-emmc.dts rk3506-luckfox-lyra-ultra.dtsi
3. 设备树配置
Luckfox Lyra 系列开发板默认支持的 DSI 屏幕型号为 10.1-DSI-TOUCH-A。此外,我们还适配了幸狐官方、树莓派以及微雪的 DSI 屏幕,确保其显示和触摸功能正常工作。如需使用其他屏幕,用户需自行修改相关设备树配置。
3.1 幸狐和树莓派 DSI 屏幕(800*480)
进入设备树目录,找到需要修改的设备树文件。
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将数据传输通道配置调整为 1 Lane 模式。

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

修改 dsi -> disp_timings0 -> native-mode 节点,确保与屏幕参数匹配。
disp_timings0: display-timings {
//native-mode = <&dsi_timing0>;
native-mode = <&ws_800_480>;
}
3.2 微雪 DSI 屏幕
进入设备树目录,找到需要修改的设备树文件。
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注释默认的初始化序列。
// 10inch1
/*
panel-init-sequence = [......
];
*/修改 dsi -> disp_timings0 -> native-mode 节点,确保与屏幕参数匹配。

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

3.3 101M-8001280-IPS-CT-K
进入设备树目录,找到需要修改的设备树文件。
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将背光节点打开。

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

关闭默认的背光驱动。
