如何在 Yocto 中构建实现 FIQ 的内核模块?

问题描述 投票:0回答:0

FIQ(快速中断请求)需要很少的功能,例如

claim_fiq
enable_fiq
asm/fiq.h
中声明并在
fiq.c
中实现。 此代码需要许多其他标头,例如
rwonce.h
init.h
.

到目前为止,我尝试构建访问这些函数的内核模块失败了。

内核模块Makefile:

obj-m += gpio_fiq.o
gpio_fiq-objs := fiq.o

PWD := $(shell pwd)

all:
    $(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules

clean:
    $(MAKE) -C $(KERNEL_DIR) M=$(PWD) clean

和 yocto 食谱:

SUMMARY = "Simple FIQ driver"
DESCRIPTION = ""

LICENSE = "GPL"
LIC_FILES_CHKSUM = ""

SRC_URI = "<uri to the driver>"
SRC_URI[sha256sum] = "<hash>"
SRCREV = "${AUTOREV}"

DEPENDS = "virtual/kernel"

S = "${WORKDIR}/git"

inherit module-base

EXTRA_OEMAKE += "ARCH=arm"
EXTRA_OEMAKE += "KERNEL_DIR=${STAGING_KERNEL_BUILDDIR}"

FILES:${PN} += "/lib/modules/${KERNEL_VERSION}/gpio_fiq.ko"

TOOLCHAIN_TARGET_TASK += "kernel-devsrc"

export KERNEL_SOURCES="${BASE_WORKDIR}/../../workspace/sources/linux-stm32mp"
CFLAGS:append = "-I${KERNEL_SOURCES}/include -I${KERNEL_SOURCES}/arch/${ARCH}/include -I${BASE_WORKDIR}/stm32mp1_rt-ostl-linux-gnueabi/linux-stm32mp/5.15.67.rt49-stm32mp-r1-r0/build/arch/arm/include/generated -I${BASE_WORKDIR}/stm32mp1_rt-ostl-linux-gnueabi/linux-stm32mp/5.15.67.rt49-stm32mp-r1-r0/build/include"

do_configure () {

    # Specify any needed configure commands here
    :
}

do_compile () {

    ${CC} ${CFLAGS} ${CFLAGS_MODULE} ${EXTRA_CFLAGS} -c ${KERNEL_SOURCES}/arch/arm/kernel/fiq.c -o fiq.o
    
    oe_runmake

}


do_install () {
    install -d ${D}/lib/modules/${KERNEL_VERSION}
    install -m 0755 ${B}/gpio_fiq.ko ${D}/lib/modules/${KERNEL_VERSION}/

}

在此之后,我在构建 fiq.o 时遇到许多编译错误,从 rwonce.h 开始。 注意:它们似乎不相关,所以我没有复制它们。只要问我你是否想看几行。

定义

CFLAGS:append
的部分可能是错误的解决方案。

问题

如何构建包含 FIQ 库的内核模块?

注意:这个问题是关于 Yocto 内部的构建过程,如何修复链接和包含错误。这个问题不是关于驱动程序本身如何实现的。

linux-kernel yocto interrupt
© www.soinside.com 2019 - 2024. All rights reserved.