2016-09-05 5 views
0

Ich arbeite an einem Beaglebone Black, mit Yocto.Yocto Gerät Baum Overlay

Mit this Implementierung eines PWM-Treibers als Leitfaden, kann ich nicht meine PWMs in den Gerätebaum hinzufügen.

Die beste Lösung wäre, ein Gerätebaum-Overlay zu erstellen, wie es Mr. Saad Ahmad macht, aber ich verstehe nicht, wie man das mit Yocto macht.

Ich verwende nicht capegr, aber ich verwende meta-bbb. Ich habe auch benutzerdefinierte Schicht Meta-TFE, die derzeit den PWM-Treiber und einige Beispiele enthält. Diese Schicht definiert auch ein neues bitbake Bild Rezepte:

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" 

Es folgt die .bb Datei der pwm-Treiber:

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}" 

Wer weiß, wie dies zu tun?

bearbeitet: Ein Kollege deutete an, dass ich eine .bbappend Datei verwenden könnte, in Meta-bbb zu den Kernel-Build-Regeln angehängt wird. Daher ist es das, was ich tat, und jetzt meine Rezepte-Kernel-Verzeichnis sieht nun wie folgt aus:.

. 
├── 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 

Die Verzeichnisse Linux-stable_4 */alle die gleiche Struktur haben, die gespiegelte Struktur in Meta-bbb zu reflektieren.

Meine .bbappend Dateien wie folgt aussehen:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}/dts:" 

KERNEL_DEVICETREE_beaglebone += " \ 
    bbb-pwm.dtb \ 
" 

Wenn jedoch bitbaking, tritt ein Fehler zu sagen gibt es keine Build-Regeln für bbb-pwm.dtb sind:

| 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 

bearbeiten : Hier ist sc_pwm_P8_13-00A0.dtsi

Antwort

2

Wenn Sie eine benutzerdefinierte Gerätestruktur verwenden und die KERNEL_DEVICETREE Variable bearbeiten möchten, die de Vice Tree-Quellen (* .dts-Dateien und * .dtsi-Dateien) werden in arch/arm/boot/dts (entsprechend Ihrer Architektur) gesucht.

In Ihrem Beispiel werden Ihre Dateien in einem separaten Ordner abgelegt und nicht von der bbappend-Datei abgerufen. Die richtige Schichtstruktur wäre folgende:

└── linux 
    ├── linux-stable_4.5 
    │ └── git 
    │  └── arch 
    │   └── arm 
    │    └── boot 
    │     └── dts 
    │      ├── bbb-pwm.dts 
    │      └── sc_pwm_P8_13-00A0.dtsi 
    └── linux-stable_4.5.bbappend 

Um bitbake sinnvoll für die neuen Dateien, die sie über die SRC_URI Variable in der bbappend Datei hinzugefügt werden, machen:

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

Dank. Diese Art von Arbeit (musste den Pfad zu Git/Arch/Arm/Boot/dts ändern, wird Sie korrigieren, um dies zu reflektieren). Dies ist jedoch nicht sehr portabel. Gibt es eine Yocto/OE-Variable, die diesen Pfad enthält? – Tom

+1

Dies ist der Standardordner für Gerätebaumquellen im Linux-Kernel. Ich bezweifle, dass es eine andere Lösung gibt, da dies ein fester Ort ist. Device-Tree kann zur Laufzeit verwendet werden und ich denke, es muss da sein. – h0ch5tr4355

+0

Worum handelt es sich bei der Datei bereits? Gibt es eine Möglichkeit, Kopien zu erzwingen oder muss ich einen Patch machen? –