2

我是 Yocto 项目的新手,我正在尝试为基于 i.MX6QP/Q/DL SABRE Automotive 的自定义板构建一个简单的核心图像最小图像。现在我只使用元飞思卡尔层。

我有一些我想要构建并包含在 Linux 内核的 fitImage 中的自定义 DTS 文件。

这是我到目前为止所做的:

  1. 我已经使用自定义机器创建了一个自定义层,并在conf/machine.conf文件中指定了要使用的 DTB:

    KERNEL_DEVICETREE = " \
        imx6qp-g25-protoc-1280x480.dtb \
        ...
    "
    
  2. 我在/yocto/poky/meta-custom/recipes-kernel/linux/中创建了一个linux-fslc-imx_%.bbappend文件,该文件引用了一个包含 git diff的.patch文件,就像在此处完成的一样。在 .patch 文件中,我包含了所需的arch/arm/boot/dts/Makefile修改和 DTS 文件。

不幸的是,在尝试构建 core-image-minimal 时,DTB 构建失败并显示以下消息:

make[3]: * 没有规则来制作目标“arch/arm/boot/dts/imx6qp-g25-protoc-1280x480.dtb”。停止。arch/arm/Makefile:322: 目标“imx6qp-g25-protoc-1280x480.dtb”的配方失败 make[2]:[imx6qp-g25-protoc-1280x480.dtb] 错误 2 生成文件:146:目标“子生成”的配方失败生成 [1]:[sub-make] Error 2 Makefile:24: recipe for target '__sub-make' failed make: * [__sub-make] Error 2 ERROR: oe_runmake failed WARNING: exit code 1 from a shell command。

实际上,我通过查看源文件夹linux-fslc-imx/4.1-2.0.x+gitAUTOINC+6c1ad49339-r0/build/source/arch/arm/boot/dts来检查是否应用了补丁,Makefile正确且DTS文件存在。

4

2 回答 2

2

看起来问题是我没有在内核配方中包含defconfigCONFIG_SOC_IMX6Q文件,因此该变量未设置为y使我的目标在arch/arm/boot/dts/Makefile中未被检测到。包括一个defconfig解决ARCH_SOC_IMX6Q=y了我的问题。

于 2018-05-28T08:26:25.170 回答
1

或者一个配置文件imx6q.cfg里面有这个选项:

ARCH_SOC_IMX6Q=y

可以创建并放置在linux-xxx.bb配方旁边的文件子文件夹中。

在这种情况下,内核提供的任何defconfig都将在编译或应用任何补丁之前启用必要的选项。

使用以下示例了解如何在linux-xxx.bb配方中附加创建的配置文件:

SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git;protocol=git;nocheckout=1;name=machine;branch=linux-5.4.y; \
           file://imx6q.cfg"
于 2020-12-01T16:07:43.323 回答