Дерево устройств является частью ядра Linux. В Yocto это скомпилировано из KERNEL_DEVICETREE
значения переменной, определенного как часть рецепта ядра Linux или конфигурации компьютера.
Например, для cubieboard7, как определено здесь ,
KERNEL_DEVICETREE = "s700_cb7_linux.dtb"
указывает компиляции использовать этот dts файл для компиляции. Это делается с помощью различных классов.
В нашем примере мы inherit kernel.bbclass
, что в свою очередь inherits kernel-devicetree.bbclass
, в этом классе (скопировано из kernel-devicetree.bbclass),
do_compile_append() {
for dtbf in ${KERNEL_DEVICETREE}; do
dtb=`normalize_dtb "$dtbf"`
oe_runmake $dtb
done
}
do_install_append() {
for dtbf in ${KERNEL_DEVICETREE}; do
dtb=`normalize_dtb "$dtbf"`
dtb_ext=${dtb##*.}
dtb_base_name=`basename $dtb .$dtb_ext`
dtb_path=`get_real_dtb_path_in_kernel "$dtb"`
install -m 0644 $dtb_path ${D}/${KERNEL_IMAGEDEST}/$dtb_base_name.$dtb_ext
done
}
do_deploy_append() {
for dtbf in ${KERNEL_DEVICETREE}; do
dtb=`normalize_dtb "$dtbf"`
это добавляет задачи для компиляции, установки и развертывания задач. Таким образом, определение KERNEL_DEVICETREE
включает автоматическую сборку dtb.