[yocto] [meta-raspberrypi] Adding an additional device tree overlay in the SDCard

Petter Mabäcker petter at technux.se
Fri Jul 31 06:29:20 PDT 2015


Hi Herve,

See inline answers.

BR,
Petter

On 07/30/2015 05:27 AM, Herve Jourdain wrote:
>
> Hello,
>
> I’m trying to add a specific .dts file to the raspberrypi.
>
> Therefore, in my own layer, I have made a 
> linux-raspberrypi_3.%.bbappend, that applies a patch to the 
> arch/arm/boot/dts makefile to add my own layer, and a new rule that 
> copies my specific .dts file to the kernel source directory.
>
> And, initially, I had also defined KERNEL_DEVICETREE += 
> “myown-overlay.dtb” in there.
>
> It definitely compiles well, installation process is smooth, I get the 
> Image-myown-overlay.dtb in tmp/deploy/raspberrypi2.
>
> BUT when I flash my SDCard, it does NOT appear in the “overlays” 
> directory of the DOS partition!
>
> If I add it manually, everything works fine, so I know my overlay has 
> been correctly generated and is working.
>
> What I discovered is that, the sdcard_image_rpi class takes the list 
> of .dtb to be considered from split_overlays(), which is defined in 
> linux-raspberrypi-base class.
>
> And split_overlays() basically  gets the value of KERNEL_DEVICETREE 
> (dts = d.getVar("KERNEL_DEVICETREE", True)).
>
> But when I set KERNEL_DEVICETREE in linux-raspberrypi_3.%.bbappend, it 
> seems the additional value it defines is NOT taken into account when 
> linux-raspberry-class evaluates the value of KERNEL_DEVICETREE.
>
> I’ve checked in the create_image.rpi-sdimg script created, it does not 
> appear in DTS nor DT_OVERLAYS.
>
> But when I define KERNEL_DEVICETREE in my distro.conf, THEN it is 
> taken into account…
>
> My goal would be to add that overlay by NOT modifying distro.conf 
> (distros are not necessarily RaspberryPi centric) nor in the raspberry 
> machine files (or local.conf).
>
> This leads me to several questions:
>
> #1 Is there a specific reason why my addition to KERNEL_DEVICETREE 
> gets lost when creating the image? I mean, is it normal, or are there 
> some steps I missed there?
>
Yes, in the current solution KERNEL_DEVICETREE is needed in both the 
kernel recipe and image creation context. When appending 
KERNEL_DEVICETREE in linux-raspberrypi_3.%.bbappend your new overlay 
will only be visible within the linux-raspberrypi scope and NOT within 
the image class.

> #2 Is there a way that I could achieve adding my .dtb overlay in the 
> sdcard image only from my linux kernel bbappend?
>

If I remember the code correct within the kernel scope we are only 
interesting if device tree should be used. At least in theory (assuming 
you are using a >= 3.18 kernel since then KERNEL_DEVICETREE will bve set 
by default) you should be able to skip the KERNEL_DEVICETREE += code in 
linux-raspberrypi_3.%.bbappend (since it will be set any way and the 
overlays themselves isn't really used in here..) then append the 
KERNEL_DEVICETREE within the image scope. If you don't want to put this 
into the layer.conf or similiar in your own layer I guess it should work 
to "prepend" for example the IMAGE_CMD. But in the current solution I 
guess local.conf, layer.conf (in your own layer) or rpi-base.inc (in 
meta-raspberrypi) is the easiest options..

> #3 On a more general note, wouldn’t it be simpler (better?) to just 
> add all the .dtb that are found in the deploy/images/ directory to the 
> DOS partition of the SDCard? After all, the .dtb need to be compiled 
> from a .dts, so all the .dtb that appear in deploy/images are “legit”.
>

That might perhaps be a better solution. Have you tried it out? Andrei 
or Francois might have some comments about this?
>
> Herve
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20150731/6cbd6c50/attachment.html>


More information about the yocto mailing list