Yocto 设备树覆盖

Tom*_*Tom 5 linux-kernel bitbake beagleboneblack yocto

我正在使用 Yocto 开发 Beaglebone Black。

\n\n

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

\n\n

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

\n\n

我没有使用capemgr,但我使用meta-bbb。我还有自定义层元 tfe,当前包含 pwm 驱动程序和一些示例。该层还定义了新的 bitbake 图像配方:

\n\n
include recipes-core/images/core-image-base.bb\n\nIMAGE_INSTALL += "\\\n        helloworld \\\n        hellokernel \\\n        bbb-pwm \\\n"\n\nKERNEL_MODULE_AUTOLOAD += "\\\n        hellokernel \\\n        bbb-pwm \\\n"\n\nexport IMAGE_BASENAME = "tfe-image-base"\n
Run Code Online (Sandbox Code Playgroud)\n\n

以下是 pwm 驱动程序的 .bb 文件:

\n\n
DESCRIPTION = "PWM kernel module"\nLICENSE = "GPLv2"\nLIC_FILES_CHKSUM = "file://COPYING;md5=d41d8cd98f00b204e9800998ecf8427e"\n\nPR = "r0"\n\ninherit module\n\nSRC_URI = "file://bbb-pwm.c \\\n    file://Makefile \\\n    file://COPYING \\\n"\n\nS = "${WORKDIR}" \n
Run Code Online (Sandbox Code Playgroud)\n\n

有谁知道如何做到这一点?

\n\n

编辑:\n一位同事暗示我可以使用 .bbappend 文件,附加到 meta-bbb 中的内核构建规则中。因此,这就是我所做的,现在我的recipes-kernel目录现在看起来像这样:

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bbb-pwm\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bbb-pwm.bb\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 files\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bbb-pwm.c\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 COPYING\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Makefile\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hellokernel\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 {...}\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 linux\n \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 linux-stable_4.1\n    \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 {...}\n \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 linux-stable_4.1.bbappend\n \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 linux-stable_4.4\n    \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 {...}\n \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 linux-stable_4.4.bbappend\n \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 linux-stable_4.5\n \xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 dts\n \xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bbb-pwm.dts\n \xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 sc_pwm_P8_13-00A0.dtsi\n \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 linux-stable_4.5.bbappend\n
Run Code Online (Sandbox Code Playgroud)\n\n

目录 linux-stable_4.*/ 都具有相同的结构,以反映 meta-bbb 中的镜像结构。

\n\n

我的 .bbappend 文件如下所示:

\n\n
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}/dts:"\n\nKERNEL_DEVICETREE_beaglebone += " \\\n    bbb-pwm.dtb \\\n"\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,在进行 bitbaking 时,会出现错误,提示 bbb-pwm.dtb 没有构建规则:

\n\n
| make[3]: *** No rule to make target \'arch/arm/boot/dts/bbb-pwm.dtb\'.  Stop.\n| arch/arm/Makefile:333: recipe for target \'bbb-pwm.dtb\' failed\n
Run Code Online (Sandbox Code Playgroud)\n\n

编辑:这里是sc_pwm_P8_13-00A0.dtsi

\n

h0c*_*355 4

当您想要使用自定义设备树并编辑KERNEL_DEVICETREE变量时,将在以下位置搜索设备树源(*.dts 文件和 *.dtsi 文件)arch/arm/boot/dts(根据您的体系结构)。

\n\n

在您的示例中,您的文件放置在单独的文件夹中,并且不由 bbappend 文件获取。正确的层结构如下:

\n\n
\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 linux\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 linux-stable_4.5\n    \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 git\n    \xe2\x94\x82       \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 arch\n    \xe2\x94\x82           \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 arm\n    \xe2\x94\x82               \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 boot\n    \xe2\x94\x82                   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 dts\n    \xe2\x94\x82                       \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bbb-pwm.dts\n    \xe2\x94\x82                       \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 sc_pwm_P8_13-00A0.dtsi\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 linux-stable_4.5.bbappend\n
Run Code Online (Sandbox Code Playgroud)\n\n

为了使 bitbake 对这些新文件敏感,必须通过以下方式添加它们SRC_URIbbappend 文件中的变量添加它们:

\n\n
SRC_URI += "file://git/arch/arm/boot/dts/bbb-pwm.dts"\nSRC_URI += "file://git/arch/arm/boot/dts/sc_pwm_P8_13-00A0.dtsi"\n
Run Code Online (Sandbox Code Playgroud)\n