On 5/5/19 2:03 PM, JH wrote:
Hi,


Hi JH,

I think the device tree blob is build from device tree source, but I
could not find any dts files in recipe source directory, there are
many dts files in build directory and there are dtb in build
directory.


Already answered by Gabriele.

If I have a device tree source, where I should put it and how to
define the recipe to built it?


My usual way of doing it is as follows:

I usually don't need to make large modifications to the kernel source, so I don't need to clone the kernel, but use the default kernel for the SoC with some patches.

I use a platform support layer and add a .bbappend file for the (arm) kernel to add a custom dts and .config files, together with some small patches:

*** File meta-<platform>/recipes-kernel/linux/linux-<version>_%.bbappend:

THISAPPENDFILESDIR := "${THISDIR}/files"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

require linux-set-custom-defconfig.inc
require linux-add-custom-dts.inc

# The first patch simply appends my custom DTS to the list of DTD files in the Makefile
SRC_URI += \
        "file://add-custom-dts.patch \
         file://some_other.patch \
         file://another_driver_patch.patch \
        "

*** File meta-<platform>/recipes-kernel/linux/linux-add-custom-dts.inc

do_add_platform_dts() {
        cp -f "${THISAPPENDFILESDIR}/custom.dts" \
            "${WORKDIR}/git/arch/arm/boot/dts"
}

addtask add_platform_dts before do_preconfigure after do_patch

*** File meta-<platform>/recipes-kernel/linux/linux-set-custom-defconfig.inc

do_set_custom_defconfig() {
        cp -f "${THISAPPENDFILESDIR}/defconfig" "${WORKDIR}/defconfig"
}

addtask set_custom_defconfig before do_preconfigure after do_patch


It is maybe a bit complex, but it saves cloning the kernel for the sake of just adding a single DTS with defconfig and a few patches.

Hope this helps,

Bas.
--
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to