485 字
2 分钟
sunxi_d1 设备树文件定位报告

sunxi_d1 设备树文件定位报告#

结论#

在开源鸿蒙系统源码的根目录 OpenHarmony 中,使用以下命令构建内核时:

Terminal window
./build.sh --product-name sunxi_d1 --ccache

需要修改的 Linux 内核设备树源文件是:

device/sunxi/config/chips/d1/configs/nezha/linux-5.4/board.dts

该文件会被构建脚本复制到内核源码树并参与设备树编译。请修改此文件,不要直接修改 out/ 目录中生成的 DTS/DTB 中间产物。

若硬件改动还影响 U-Boot 阶段(例如启动介质、早期供电、启动显示),还应检查并按需修改:

device/sunxi/config/chips/d1/configs/nezha/uboot-board.dts

确认依据#

1. 产品选择了 sunxi 的 D1 设备包#

productdefine/common/products/sunxi_d1.json 定义产品 sunxi_d1,并在 parts 中引入 sunxi_products:sunxi_products

随后,device/sunxi/build/BUILD.gnproducts_group 在设备类型为 sunxi_d1 时,依赖 //device/sunxi/sunxi_d1:sunxi_d1_group

2. D1 设备包构建内核目标#

device/sunxi/sunxi_d1/BUILD.gnsunxi_d1_group 依赖 kernel:kernel

device/sunxi/sunxi_d1/kernel/BUILD.gn 将内核源码设为 //kernel/linux-5.4,并通过 build_kernel.sh 调用内核构建流程,设备类型参数为 sunxi_d1

3. D1 内核构建流程选用 kernel-5.4.mk#

kernel/linux/patches/kernel_module_build.shsunxi_d1 设置 TARGET_PRODUCT=sunxi_d1 和 Linux 5.4 输出目录;随后执行:

Terminal window
make -f kernel-5.4.mk

4. 构建规则明确复制并编译 nezha 的 board.dts#

kernel/linux/patches/kernel-5.4.mk 第 98 行包含以下复制规则:

cp $(OHOS_BUILD_HOME)/device/sunxi/config/chips/d1/configs/nezha/linux-5.4/board.dts \
$(KERNEL_SRC_TMP_PATH)/arch/riscv/boot/dts/sunxi/

这说明项目源目录中的 device/sunxi/config/chips/d1/configs/nezha/linux-5.4/board.dts 会进入内核的 RISC-V sunxi DTS 编译目录,因此它是上述构建命令所使用的 Linux 内核板级设备树源文件。

为什么不是其他 board.dts#

  • 其他芯片或板型目录下的 board.dts 不在 sunxi_d1 的上述复制规则中。
  • out/ 中的文件是构建生成的中间产物,下一次构建可能被覆盖,不能作为源文件修改。
  • uboot-board.dts 属于 U-Boot 板级配置;只有在执行 device/sunxi/build/pack 打包并需要改变 U-Boot 行为时才需要同步修改。

相关文件#

用途路径
Linux 内核设备树(本次构建应修改)device/sunxi/config/chips/d1/configs/nezha/linux-5.4/board.dts
U-Boot 设备树(按硬件改动需要同步)device/sunxi/config/chips/d1/configs/nezha/uboot-board.dts
Linux 设备树复制规则kernel/linux/patches/kernel-5.4.mk
内核构建入口kernel/linux/patches/kernel_module_build.sh
sunxi_d1 设备树文件定位报告
https://blog.wely.fun/posts/sunxi_d1-设备树定位报告/
作者
Wely
发布于
2026-07-11
许可协议
CC BY-NC-SA 4.0