我有一个用于恩智浦i.MX6的Linux内核。在/driver/media/platform/mxc/capture中有一些捕获内核模块。
其中一个文件名为mxc_v4l2_capture.c。我必须更改这个文件,以便在我自己的新内核驱动程序中使用它。
我用我的驱动程序和mxc_v4l2_capture的源代码创建了一个存储库。然后我在我的layer recipies-kernel -> kernel-modules->my-kernel-module.bb中做了一个新的Yocto食谱
Yocto可以构建这两个内核模块(my-kernel-module.ko和mxc_v4l2_capture.ko)。
好了,现在出现了一个问题,因为内核配方已经构建了mxc_v4l2_capture模块。因此,我想操作原始内核模块的Makefile,并排除mxc_v4l2_capture的make。
我已经创建了补丁,但我不知道如何在Yocto中使用补丁。它放在哪里?我如何调用它?
通常,我会将补丁放到.bbappend文件中并完成,但我不知道构建内核模块的配方的名称。
如果有一种方法可以不用操作这个Makefile,那就太好了。
有没有办法用我的内核模块配方来解决这个问题?
发布于 2019-11-21 19:35:47
mxc_v4l2_capture.c是树内内核驱动程序。如果您想要更改树内驱动程序代码并进行编译,强烈建议您对内核打补丁,并使用常用的方法编译内核。
没有必要为树内内核模块提供额外的bitbake配方。要对内核打补丁并进行编译,可以使用.bbappend或.bb本身。例如,
如果您的Yocto BSP层中有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/并将mxc_v4l2_capture.patch文件复制到其中。
或者,如果您没有权限或不可能在BSP层中修改内核配方,您可以在您的自定义层中创建.bbappend。对于上面的示例,您可以创建linux-stable_4.19.75.bbappend (特定版本)或linux-stable_%.bbappend (任何版本)。然后放置上面提到的相同内容。
Yocto支持多种补丁格式,更多细节请参考here。
发布于 2019-11-26 03:24:34
看看我几天前写的this答案。这些步骤基本上是相同的。使用
devtool modify virtual/kernel将在build/workspace中创建一个工作副本,您可以在其中执行您想要的工作。将这些更改提交到本地分支并运行
devtool finish linux-mainline <path-to-your-layer> 将创建一个包含已创建的补丁的.bbappend文件,并将其放到正确的位置。
如果你想学习如何手动操作,请遵循@Parthiban给出的建议。
https://stackoverflow.com/questions/58957305
复制相似问题