sunxi_d1 设备树文件定位报告
结论
在开源鸿蒙系统源码的根目录 OpenHarmony 中,使用以下命令构建内核时:
./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.gn 的 products_group 在设备类型为 sunxi_d1 时,依赖 //device/sunxi/sunxi_d1:sunxi_d1_group。
2. D1 设备包构建内核目标
device/sunxi/sunxi_d1/BUILD.gn 的 sunxi_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.sh 对 sunxi_d1 设置 TARGET_PRODUCT=sunxi_d1 和 Linux 5.4 输出目录;随后执行:
make -f kernel-5.4.mk4. 构建规则明确复制并编译 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 |