我正在使用 Yocto 开发 Beaglebone Black。
使用 PWM 驱动程序的 this 实现作为指导,我无法将我的 PWM 添加到设备树中。
最好的解决方案是像 Saad Ahmad 先生所做的那样创建一个设备树覆盖,但我不明白如何使用 Yocto 来做到这一点。
我没有使用 capemgr,而是使用 meta-bbb 。我还有自定义层 meta-tfe,它当前包含 pwm-driver 和一些示例。该层还定义了一个新的 bitbake 图像配方:
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 文件,附加到元 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.*/都具有相同的结构,以反射(reflect) meta-bbb 中的镜像结构。
我的 .bbappend 文件如下所示:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}/dts:"
KERNEL_DEVICETREE_beaglebone += " \
bbb-pwm.dtb \
"
但是在bitbaking的时候,会报错说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
最佳答案
当您想使用自定义设备树并编辑 KERNEL_DEVICETREE
变量时,在 arch/arm/boot/dts
中搜索设备树源(*.dts 文件和 *.dtsi 文件)(根据您的架构)。
在您的示例中,您的文件被放置在一个单独的文件夹中,并且不会被 bbappend 文件获取。正确的层结构如下:
└── linux
├── linux-stable_4.5
│ └── git
│ └── arch
│ └── arm
│ └── boot
│ └── dts
│ ├── bbb-pwm.dts
│ └── sc_pwm_P8_13-00A0.dtsi
└── linux-stable_4.5.bbappend
为了使 bitbake 对那些新文件有意义,它们必须通过 bbappend 文件中的
SRC_URI
变量添加:SRC_URI += "file://git/arch/arm/boot/dts/bbb-pwm.dts"
SRC_URI += "file://git/arch/arm/boot/dts/sc_pwm_P8_13-00A0.dtsi"
关于linux-kernel - Yocto 设备树覆盖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39326073/