Как вставить драйвер камеры OV5640 как модуль в yocto

Пытаюсь использовать драйвер камеры OV5640 как модуль в yocto. Итак, я взял код .c и создал make-файл (на основе примера 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

Еще я приготовила рецепт на йокто

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 у меня есть .c-код камеры и Makefile.

Но когда я пытаюсь построить, do_compile терпит неудачу и говорит:

фатальная ошибка: v4l2-int-device.h: нет такого файла или каталога

Когда я ищу файл в папке «tmp» yocto, я нахожу его в:
tmp / work-shared / myboard / kernel-source / drivers / media / platform / mxc / capture / v4l2-int-device. час

Вопрос в том, как я могу изменить рецепт, чтобы иметь возможность построить модуль? И это без изменения исходного кода или make-файла.

Примечание:
Я также пытался добавить CFLAGS_prepend = " -I${STAGING_KERNEL_DIR}/drivers/media/platform/mxc/capture " в рецепт, но это не дало успеха.


person Toon Heyrman    schedule 07.06.2017    source источник
comment
Откуда вы копируете код C? Компилируется ли он с использованием сборки в ядре? Какую версию / ветку YP вы используете? Можете ли вы поделиться всем журналом do_compile?   -  person g0hl1n    schedule 08.06.2017


Ответы (1)


Вам нужно изменить свой Makefile и добавить:

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

Вы также можете попробовать скомпилировать его из дерева, вам нужно установить переменную KERNEL_SRC, создать исходную среду и скомпилировать ее.

person PierreOlivier    schedule 08.06.2017