如何在yocto中插入OV5640相机驱动程序作为模块

时间:2017-06-07 13:39:36

标签: module yocto bitbake

我试图将OV5640相机驱动程序用作yocto中的模块。所以我拿了.c代码并制作了一个makefile(基于示例hello-mod)

obj-m += OV5640.o
SRC := $(shell pwd)
all:
    $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules
modules_install:
    $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install
clean:
    $(MAKE) -C $(KERNEL_SRC) M=$(SRC) clean

我也在yocto做了一个食谱

DESCRIPTION = "..."
LICENSE = "GPL-2.0"
LIC_FILES_CHKSUM = "\
   file:// ${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6 \
"

inherit module

SRCREV = "${AUTOREV}"
BPV = "0.0.0"
PV = "${BPV}+git${SRCREV}"

SRC_URI = "git://git/my-repo;protocol=ssh;user=git;branch=master \
"

S = "${WORKDIR}/git"

在git repo中,我有相机的.c代码和Makefile。

但是当我尝试构建时,它在do_compile上失败并说:

  

致命错误:v4l2-int-device.h:没有这样的文件或目录

当我在' tmp'中搜索文件时yocto的文件夹我找到了一个:
TMP /工作共享/ myboard /内核源/驱动器/媒体/平台/ MXC /捕获/用v412-INT-device.h中

问题是如何修改配方才能构建模块?而这不需要更改源代码或makefile。

注意:
我还尝试将CFLAGS_prepend = " -I${STAGING_KERNEL_DIR}/drivers/media/platform/mxc/capture " 添加到配方中,但这没有成功。

1 个答案:

答案 0 :(得分:1)

您需要修改您的Makefile并添加:

ccflags-y += -I$(KERNEL_SRC)/drivers/media/platform/mxc/capture/

您也可以尝试将其编译出树,您需要设置变量KERNEL_SRC,获取环境并编译它。