[Buildroot] Adding Device Tree Overlays for MIPI-CSI2 Camera and libcamera to a buildroot Build
Fiona Klute
fiona.klute at gmx.de
Wed May 7 20:06:17 UTC 2025
Am 07.05.25 um 20:31 schrieb buildroot at cairnwater.com:
> Hi Fiona,
>
> Thank you very much! That's a big help to know to use
> BR2_LINUX_KERNEL_CUSTOM_DTS_DIR for that.
>
> What directory structure is needed for the overlays? Just the DTO files
> in a directory or something more complicated?
It's expected to match the structure of the per-arch dts directory in
the kernel source, with vendor directories. The
polyhex_debix_model_a_defconfig uses the freescale/imx8mp-debix-model-a
DTS, so inside your BR2_LINUX_KERNEL_CUSTOM_DTS_DIR you'll probably need
something like freescale/my-camera.dtso (whatever you want to call your
DTSOs, the DTBOs will match the source names).
>> From there you'll need to adjust the boot process for your board to
>> actually apply the overlay. If you want to send a patch, the
>> BR2_LINUX_KERNEL_CUSTOM_DTS_DIR should be inside the board directory.
>
> Thank you very much. I don't know how to do that. What's the best way to
> get the boot process to apply the overlay? I'd heard that it can be done
> by the kernel or by U-Boot but I'm doing this for the first time so I'm
> not sure what I'm doing.
I'm not familiar with the board, but usually U-Boot will be the right
place. On some boards (like RPi) the firmware can also do it (only
useful if U-Boot & kernel then use that FDT), last time I checked
mainline Linux cannot, but some patched kernels can. There are a number
of options with U-Boot, which one to pick depends on how you configure
the boot (at a glance the defconfig seems to use extlinux.conf):
* If you use extlinux.conf, use the "devicetree-overlay" option.
* If you use a boot script, load the overlay and apply it before
starting the kernel.
* If you use a FIT image, add the overlay to it and the relevant boot
config defined in it.
See also:
https://docs.u-boot.org/en/latest/develop/distro.html (for extlinux.conf)
https://docs.u-boot.org/en/latest/usage/fdt_overlays.html (for the
latter 2 options)
Either way you may have to enable overlay support in the U-Boot build
config (if it isn't by default).
On the Buildroot side you need to make sure that the DTBOs and adjusted
config get included in the image where U-Boot expects them (depending on
the boot setup you use), if you need to make adjustments there it'll
probably be in a post-build or post-image script, or in the genimage config.
The defconfig seems to put everything into the root partition image, so
it might just work, as long as you use the right path in the U-Boot
config. Maybe just set BR2_LINUX_KERNEL_CUSTOM_DTS_DIR, build, and see
if you end up with a DTBO somewhere in your /boot dir. If yes, adjusting
the U-Boot config to use it should be enough. ;-)
Best regards,
Fiona
More information about the buildroot
mailing list