You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Buildroot使用问题:自定义开发板应如何正确修改设备树?

Buildroot下修改自定义开发板设备树的最佳实践

Buildroot的设备树加载逻辑和Yocto本质类似,最终都是向内核传递编译好的dtb文件,但修改流程比Yocto更轻量化,根据改动量大小可以选择两种方案:

方案1:基于原厂公版设备树做增量修改(适合小改动场景)

如果你的开发板是基于公版方案修改,仅需要调整引脚、开关外设这类小改动,优先用增量修改方案,避免全量复制公版dts带来的后续内核升级兼容问题:

  • 在Buildroot根目录创建自定义设备树存放路径,比如board/<厂商名>/<开发板型号>/dts/
  • 在上述路径下新建你的自定义dts文件,直接引用公版dts做覆写即可,示例:
// 引用同架构公版设备树
#include "imx6ull-14x14-evk.dts"

// 调整UART1配置
&uart1 {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_uart1>;
    status = "okay";
};

// 关闭闲置的CAN控制器
&can1 {
    status = "disabled";
};
  • 执行make menuconfig修改Buildroot配置:
    • 进入Kernel菜单,在Custom device tree file names项填写你的dts文件名(不需要带.dts后缀),比如imx6ull-myboard
    • 在Additional build directory kernel options项添加自定义dts路径配置:BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="board/<厂商名>/<开发板型号>/dts/"
  • 保存配置后重新编译即可生效:make linux-rebuild all

方案2:全量使用自定义设备树(适合公版dts复用率极低的场景)

如果你的开发板硬件改动极大,公版dts可用内容很少,可以直接用全量自定义设备树:

  • 把你写好的全量dts和关联dtsi文件统一放到board/<厂商名>/<开发板型号>/dts/路径下
  • menuconfig配置和方案1一致,填写对应的设备树文件名和路径即可,同时要确认内核配置中已开启对应架构的设备树支持
  • 建议把配套的Buildroot配置保存为defconfig:执行make savedefconfig,生成的defconfig文件可以存到自定义board路径下,后续直接用make <defconfig文件名>即可加载全套配置

改动验证

编译完成后生成的dtb文件存放在output/images/目录下,你可以直接替换到开发板的启动分区测试;开发板启动后执行cat /proc/device-tree/model即可确认当前加载的是否为自定义设备树。

和你之前使用的Yocto不同,Buildroot不需要编写bbappend文件覆盖设备树,直接指定自定义路径即可生效,流程更简单;如果需要同步修改内核配置,执行make linux-menuconfig修改后,用make linux-update-defconfig即可把配置保存到你的自定义路径做版本绑定

内容的提问来源于stack exchange,提问作者Simo S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:45:02