BuildRoot如何选择待编译的DTS?基于Mango Pi Mq Quad场景
依赖内核配置指定目标DTS
BuildRoot本身不直接负责选DTS,核心逻辑是交给Linux内核处理的。你需要查看对应内核的配置文件里的CONFIG_DEFAULT_DEVICE_TREE选项——这个值就是默认要编译的DTS文件名(不带.dts或.dtsi后缀)。比如针对Mango Pi Mq Quad,这个配置的值应该是类似sunxi/sun8i-v3s-mangopi-mq-quad这样的路径+名称。BuildRoot触发DTB编译的开关
在BuildRoot里,只要开启了BR2_LINUX_KERNEL_DTB_SUPPORT(一般板级默认配置都会打开),它就会传递参数给内核,让内核把指定的DTS编译成DTB。如果需要同时编译多个DTB,可以设置BR2_LINUX_KERNEL_INTREE_DTS_NAME,用空格分隔多个DTS的名称。你用的Overlay的配置逻辑
你提到的那个BuildRoot overlay,肯定是在它的板级defconfig文件(比如configs/mangopi_mq_quad_defconfig)里配置了上述内核相关选项,或者通过脚本指定了最终要打包的DTB。直接去翻这个overlay里的defconfig,搜DEFAULT_DEVICE_TREE或者INTREE_DTS_NAME就能找到对应配置。手动自定义的方法
如果要自己改编译的DTS,直接运行make menuconfig进入BuildRoot配置界面,找到Kernel菜单下的Device Tree support相关选项,修改目标DTS名称后保存,重新编译内核部分就行。
内容的提问来源于stack exchange,提问作者Artyom Gevorgyan

