Yocto:修补内核模块Makefile

时间:2019-11-20 14:58:10

标签: makefile linux-kernel yocto kernel-module

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

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

我使用驱动程序和mxc_v4l2_capture的源创建了一个存储库。然后我在recipies-kernel -> kernel-modules->my-kernel-module.bb层中制作了新的Yocto食谱

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

好的,现在出现问题了,因为内核配方已经构建了mxc_v4l2_capture模块。因此,我想为原始内核模块操纵Makefile,并排除make的{​​{1}}。

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

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

如果有一种方法可以不操纵此.bbappend,那就太好了。

有没有一种方法可以解决我的内核模块配方?

2 个答案:

答案 0 :(得分:1)

Record path value是树内内核驱动程序。如果要更改树内驱动程序代码并进行编译,强烈建议修补内核并使用通常的方法来编译内核。

树内内核模块不需要额外的位烘烤配方。要修补内核并进行编译,可以使用mxc_v4l2_capture.c.bbappend本身。例如,

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

SRC_URI

现在,您创建FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:" SRC_URI += "file://mxc_v4l2_capture.patch" 并在其中复制recipes-kernel/linux/linux-stable-4.19.75/文件。

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

Yocto支持各种修补程序格式,有关更多详细信息,请参考here

答案 1 :(得分:0)

看看我几天前写的this答案。步骤基本相同。使用

devtool modify virtual/kernel

将在内部版本/工作空间中创建工作副本,您可以在其中进行所需的工作。将这些更改提交到本地分支并运行

devtool finish linux-mainline <path-to-your-layer> 

将使用已创建的补丁程序创建一个.bbappend文件,并将其放置在正确的位置。

如果您想学习手动操作方法,请遵循@Parthiban提供的建议。