2016-09-05 29 views
0

私はYoctoを使ってBeaglebone Blackに取り組んでいます。Yoctoデバイスのツリーオーバーレイ

this PWMドライバの実装を参考にして、自分のPWMをデバイスツリーに追加できません。

Saad Ahmad氏が行っているようにデバイスツリーオーバーレイを作成するのが最善の解決策ですが、Yoctoを使用してこれを行う方法はわかりません。

私はcapemgrを使用していませんが、meta-bbbを使用しています。私は現在カスタムレイヤーを持っていますメタ - 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ドライバの.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}" 

誰もがこれを行う方法を知っていますか?

編集: 同僚は、私は、メタBBBにカーネルのビルドルールに追加、.bbappendファイルを使用することができることを示唆しました。したがって、これは私がやったことで、今、私のレシピ-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 * /すべてのメタ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

答えて

2

カスタムデバイスツリーを使用してKERNEL_DEVICETREE変数を編集する場合は、de副木のソース(* .dtsファイルと* .dtsiファイル)はarch/arm/boot/dts(アーキテクチャに応じて)で検索されます。

あなたの例では、ファイルは別のフォルダに置かれ、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 

を彼らはbbappendファイルにSRC_URI変数を経由して追加する必要があり、それらの新規ファイルのbitbakeが賢明なようにするには:

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" 
+0

感謝。この種の作業は(git/arch/arm/boot/dtsへのパスを変更しなければならなかったので、これを反映するように修正するでしょう)。しかし、これは移植性があまりありません。このパスを保持するYocto/OE変数はありますか? – Tom

+1

これは、Linuxカーネルのデバイスツリーソース用のデフォルトフォルダです。これは修正箇所なので、別の解決策があるのか​​どうかは疑問です。デバイスツリーは実行時に使用できるので、そこになければならないと思います。 – h0ch5tr4355

+0

ファイルについてはどうなっていますか?コピーを強制する方法はありますか、パッチを作成する必要はありますか? –