Yocto设备树覆盖

时间:2016-09-05 07:55:28

标签: linux-kernel beagleboneblack yocto bitbake

我正在使用Yocto处理Beaglebone Black。

使用this实现PWM驱动程序作为指导,我无法将我的PWM添加到设备树。

最好的解决方案是像Saad Ahmad先生那样创建一个设备树覆盖,但我不明白如何使用Yocto来实现这一点。

我没有使用 capemgr ,但我使用的是meta-bbb。我还有自定义图层 meta-tfe ,它目前包含pwm驱动程序和一些示例。该层还定义了一个新的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文件,附加到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。* / all具有相同的结构,以反映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

1 个答案:

答案 0 :(得分:2)

如果要使用自定义设备树并编辑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"