我正在使用Yocto开发板Beaglebone Black上的IT技术。在使用此PWM驱动实现作为指南时,我无法将我的PWM添加到设备树中。最好的解决方案是像Saad Ahmad先生一样创建一个设备树覆盖层,但我不知道如何在Yocto中执行此操作。我没有使用capemgr,但我仍然在使用meta-bbb。我还有一个自定义层meta-tfe,其中包含pwm-driver和一些示例。该层还定义了一个新的bitbake镜像配方:
以下是pwm-driver的.bb文件:
include recipes-core/images/core-image-base.bb
IMAGE_INSTALL += "\
helloworld \
hellokernel \
bbb-pwm \
"
KERNEL_MODULE_AUTOLOAD += "\
hellokernel \
bbb-pwm \
"
export IMAGE_BASENAME = "tfe-image-base"
以下是pwm-driver的.bb文件:
DESCRIPTION = "PWM kernel module"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=d41d8cd98f00b204e9800998ecf8427e"
PR = "r0"
inherit module
SRC_URI = "file://bbb-pwm.c \
file://Makefile \
file://COPYING \
"
S = "${WORKDIR}"
有人知道怎么做吗?
编辑: 一位同事暗示我可以使用 .bbappend 文件,在 meta-bbb 中附加内核构建规则。因此,我按照这个方法操作,现在我的 recipes-kernel 目录看起来像这样:
.
├── bbb-pwm
│ ├── bbb-pwm.bb
│ └── files
│ ├── bbb-pwm.c
│ ├── COPYING
│ └── Makefile
├── hellokernel
│ └── {...}
└── linux
├── linux-stable_4.1
│ └── {...}
├── linux-stable_4.1.bbappend
├── linux-stable_4.4
│ └── {...}
├── linux-stable_4.4.bbappend
├── linux-stable_4.5
│ └── dts
│ ├── bbb-pwm.dts
│ └── sc_pwm_P8_13-00A0.dtsi
└── linux-stable_4.5.bbappend
所有的 linux-stable_4.*/ 目录结构都相同,以反映在 meta-bbb 中镜像的结构。
我的 .bbappend 文件看起来像这样:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}/dts:"
KERNEL_DEVICETREE_beaglebone += " \
bbb-pwm.dtb \
"
然而,在进行比特烘焙时,会出现错误,提示bbb-pwm.dtb没有构建规则:
| make[3]: *** No rule to make target 'arch/arm/boot/dts/bbb-pwm.dtb'. Stop.
| arch/arm/Makefile:333: recipe for target 'bbb-pwm.dtb' failed
编辑: 这里是sc_pwm_P8_13-00A0.dtsi