首页 > 解决方案 > Yocto:修补内核模块 Makefile

问题描述

我有 NXP i.MX6 的 Linux 内核。中有一些捕获内核模块/driver/media/platform/mxc/capture

其中一个文件名为mxc_v4l2_capture.c. 我必须更改此文件才能将其与我自己的新内核驱动程序一起使用。

我用我的驱动程序和mxc_v4l2_capture. 然后我在我的图层中制作了一个新的 Yocto 食谱recipies-kernel -> kernel-modules->my-kernel-module.bb

Yocto 可以构建这两个内核模块(my-kernel-module.komxc_v4l2_capture.ko)。

好的,现在有一个问题,因为内核配方已经构建了mxc_v4l2_capture模块。因此,我想对Makefile原始内核模块进行操作并排除make.mxc_v4l2_capture

我已经创建了补丁,但我不知道如何将补丁与 Yocto 一起使用。在哪里放置它,我怎么称呼它?

通常我将补丁放入.bbappend文件并完成,但我不知道构建内核模块的配方的名称。

如果有一种无需操纵 this 的方法,那就太好了Makefile

有没有办法用我的内核模块配方解决这个问题?

标签: makefilelinux-kernelyoctokernel-module

解决方案


mxc_v4l2_capture.c是树内内核驱动程序。如果您想更改 in-tree 驱动程序代码并进行编译,强烈建议您修补内核并使用通常的方法编译内核。

不需要为 in-tree 内核模块添加额外的 bitbake 配方。要修补内核并编译,您可以使用.bbappendor.bb本身。例如,

如果您recipes-kernel/linux/linux-stable_4.19.75.bb在 Yocto BSP 层中有,则可以将补丁添加到SRC_URI如下所示。

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:"
SRC_URI += "file://mxc_v4l2_capture.patch"

现在,您创建recipes-kernel/linux/linux-stable-4.19.75/并复制其中的mxc_v4l2_capture.patch文件。

或者,如果您没有权限或无法在 BSP 层中修改内核配方,您可以.bbappend在自定义层中创建。对于上面的示例,您可以创建linux-stable_4.19.75.bbappend(特定版本)或linux-stable_%.bbappend(任何版本)。然后放置与上述相同的内容。

Yocto 支持各种补丁格式,请参阅此处了解更多详细信息。


推荐阅读