我试图将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 "
添加到配方中,但这没有成功。
答案 0 :(得分:1)
您需要修改您的Makefile并添加:
ccflags-y += -I$(KERNEL_SRC)/drivers/media/platform/mxc/capture/
您也可以尝试将其编译出树,您需要设置变量KERNEL_SRC,获取环境并编译它。