Defining a common BSP directory structure allows end-users to understand and become familiar with that standard. A common format also encourages standardization of software support for hardware.
The proposed form described in this section does have elements that are specific to the OpenEmbedded build system. It is intended that developers can use this structure with other build systems besides the OpenEmbedded build system. It is also intended that it will be be simple to extract information and convert it to other formats if required. The OpenEmbedded build system, through its standard layers mechanism, can directly accept the format described as a layer. The BSP layer captures all the hardware-specific details in one place using a standard format, which is useful for any person wishing to use the hardware platform regardless of the build system they are using.
The BSP specification does not include a build system or other tools - the specification is concerned with the hardware-specific components only. At the end-distribution point, you can ship the BSP layer combined with a build system and other tools. Realize that it is important to maintain the distinction that the BSP layer, a build system, and tools are separate components that could to be combined in certain end products.
Before looking at the common form for the file structure inside a BSP Layer, you should be aware that some requirements do exist in order for a BSP layer to be considered compliant with the Yocto Project. For that list of requirements, see the "Released BSP Requirements" section.
Below is the common form for the file structure inside a BSP Layer. While this basic form represents the standard, realize that the actual file structures for specific BSPs could differ.
meta-bsp_root_name
/ meta-bsp_root_name
/bsp_license_file
meta-bsp_root_name
/README meta-bsp_root_name
/README.sources meta-bsp_root_name
/binary/bootable_images
meta-bsp_root_name
/conf/layer.conf meta-bsp_root_name
/conf/machine/*.conf meta-bsp_root_name
/recipes-bsp/* meta-bsp_root_name
/recipes-core/* meta-bsp_root_name
/recipes-graphics/* meta-bsp_root_name
/recipes-kernel/linux/linux-yocto_kernel_rev
.bbappend
Below is an example of the Raspberry Pi BSP layer that is available from the Source Respositories:
meta-raspberrypi/COPYING.MIT meta-raspberrypi/README.md meta-raspberrypi/classes meta-raspberrypi/classes/sdcard_image-rpi.bbclass meta-raspberrypi/conf/ meta-raspberrypi/conf/layer.conf meta-raspberrypi/conf/machine/ meta-raspberrypi/conf/machine/raspberrypi-cm.conf meta-raspberrypi/conf/machine/raspberrypi-cm3.conf meta-raspberrypi/conf/machine/raspberrypi.conf meta-raspberrypi/conf/machine/raspberrypi0-wifi.conf meta-raspberrypi/conf/machine/raspberrypi0.conf meta-raspberrypi/conf/machine/raspberrypi2.conf meta-raspberrypi/conf/machine/raspberrypi3-64.conf meta-raspberrypi/conf/machine/raspberrypi3.conf meta-raspberrypi/conf/machine/include meta-raspberrypi/conf/machine/include/rpi-base.inc meta-raspberrypi/conf/machine/include/rpi-default-providers.inc meta-raspberrypi/conf/machine/include/rpi-default-settings.inc meta-raspberrypi/conf/machine/include/rpi-default-versions.inc meta-raspberrypi/conf/machine/include/tune-arm1176jzf-s.inc meta-raspberrypi/docs meta-raspberrypi/docs/Makefile meta-raspberrypi/docs/conf.py meta-raspberrypi/docs/contributing.md meta-raspberrypi/docs/extra-apps.md meta-raspberrypi/docs/extra-build-config.md meta-raspberrypi/docs/index.rst meta-raspberrypi/docs/layer-contents.md meta-raspberrypi/docs/readme.md meta-raspberrypi/files meta-raspberrypi/files/custom-licenses meta-raspberrypi/files/custom-licenses/Broadcom meta-raspberrypi/recipes-bsp meta-raspberrypi/recipes-bsp/bootfiles meta-raspberrypi/recipes-bsp/bootfiles/bcm2835-bootfiles.bb meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb meta-raspberrypi/recipes-bsp/common meta-raspberrypi/recipes-bsp/common/firmware.inc meta-raspberrypi/recipes-bsp/formfactor meta-raspberrypi/recipes-bsp/formfactor/formfactor meta-raspberrypi/recipes-bsp/formfactor/formfactor/raspberrypi meta-raspberrypi/recipes-bsp/formfactor/formfactor/raspberrypi/machconfig meta-raspberrypi/recipes-bsp/formfactor/formfactor_0.0.bbappend meta-raspberrypi/recipes-bsp/rpi-u-boot-src meta-raspberrypi/recipes-bsp/rpi-u-boot-src/files meta-raspberrypi/recipes-bsp/rpi-u-boot-src/files/boot.cmd.in meta-raspberrypi/recipes-bsp/rpi-u-boot-src/rpi-u-boot-scr.bb meta-raspberrypi/recipes-bsp/u-boot meta-raspberrypi/recipes-bsp/u-boot/u-boot meta-raspberrypi/recipes-bsp/u-boot/u-boot/*.patch meta-raspberrypi/recipes-bsp/u-boot/u-boot_%.bbappend meta-raspberrypi/recipes-connectivity meta-raspberrypi/recipes-connectivity/bluez5 meta-raspberrypi/recipes-connectivity/bluez5/bluez5 meta-raspberrypi/recipes-connectivity/bluez5/bluez5/*.patch meta-raspberrypi/recipes-connectivity/bluez5/bluez5/BCM43430A1.hcd meta-raspberrypi/recipes-connectivity/bluez5/bluez5brcm43438.service meta-raspberrypi/recipes-connectivity/bluez5/bluez5_%.bbappend meta-raspberrypi/recipes-core meta-raspberrypi/recipes-core/images meta-raspberrypi/recipes-core/images/rpi-basic-image.bb meta-raspberrypi/recipes-core/images/rpi-hwup-image.bb meta-raspberrypi/recipes-core/images/rpi-test-image.bb meta-raspberrypi/recipes-core/packagegroups meta-raspberrypi/recipes-core/packagegroups/packagegroup-rpi-test.bb meta-raspberrypi/recipes-core/psplash meta-raspberrypi/recipes-core/psplash/files meta-raspberrypi/recipes-core/psplash/files/psplash-raspberrypi-img.h meta-raspberrypi/recipes-core/psplash/psplash_git.bbappend meta-raspberrypi/recipes-core/udev meta-raspberrypi/recipes-core/udev/udev-rules-rpi meta-raspberrypi/recipes-core/udev/udev-rules-rpi/99-com.rules meta-raspberrypi/recipes-core/udev/udev-rules-rpi.bb meta-raspberrypi/recipes-devtools meta-raspberrypi/recipes-devtools/bcm2835 meta-raspberrypi/recipes-devtools/bcm2835/bcm2835_1.52.bb meta-raspberrypi/recipes-devtools/pi-blaster meta-raspberrypi/recipes-devtools/pi-blaster/files meta-raspberrypi/recipes-devtools/pi-blaster/files/*.patch meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster_git.bb meta-raspberrypi/recipes-devtools/python meta-raspberrypi/recipes-devtools/python/python-rtimu meta-raspberrypi/recipes-devtools/python/python-rtimu/*.patch meta-raspberrypi/recipes-devtools/python/python-rtimu_git.bb meta-raspberrypi/recipes-devtools/python/python-sense-hat_2.2.0.bb meta-raspberrypi/recipes-devtools/python/rpi-gpio meta-raspberrypi/recipes-devtools/python/rpi-gpio/*.patch meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.6.3.bb meta-raspberrypi/recipes-devtools/python/rpio meta-raspberrypi/recipes-devtools/python/rpio/*.patch meta-raspberrypi/recipes-devtools/python/rpio_0.10.0.bb meta-raspberrypi/recipes-devtools/wiringPi meta-raspberrypi/recipes-devtools/wiringPi/files meta-raspberrypi/recipes-devtools/wiringPi/files/*.patch meta-raspberrypi/recipes-devtools/wiringPi/wiringpi_git.bb meta-raspberrypi/recipes-graphics meta-raspberrypi/recipes-graphics/eglinfo meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-x11_%.bbappend meta-raspberrypi/recipes-graphics/mesa meta-raspberrypi/recipes-graphics/mesa/mesa-gl_%.bbappend meta-raspberrypi/recipes-graphics/mesa/mesa_%.bbappend meta-raspberrypi/recipes-graphics/userland meta-raspberrypi/recipes-graphics/userland/userland meta-raspberrypi/recipes-graphics/userland/userland/*.patch meta-raspberrypi/recipes-graphics/userland/userland_git.bb meta-raspberrypi/recipes-graphics/vc-graphics meta-raspberrypi/recipes-graphics/vc-graphics/files meta-raspberrypi/recipes-graphics/vc-graphics/files/egl.pc meta-raspberrypi/recipes-graphics/vc-graphics/files/vchiq.sh meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics-hardfp.bb meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics.bb meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics.inc meta-raspberrypi/recipes-graphics/wayland meta-raspberrypi/recipes-graphics/wayland/weston_%.bbappend meta-raspberrypi/recipes-graphics/xorg-xserver meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/10-evdev.conf meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/98-pitft.conf meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/99-calibration.conf meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend meta-raspberrypi/recipes-kernel meta-raspberrypi/recipes-kernel/linux-firmware meta-raspberrypi/recipes-kernel/linux-firmware/files meta-raspberrypi/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.bin meta-raspberrypi/recipes-kernel/linux-firmware/files/brcfmac43430-sdio.txt meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_%.bbappend meta-raspberrypi/recipes-kernel/linux meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-dev.bb meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.14.bb meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.9.bb meta-raspberrypi/recipes-multimedia meta-raspberrypi/recipes-multimedia/gstreamer meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/*.patch meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_%.bbappend meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12 meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12/*.patch meta-raspberrypi/recipes-multimedia/omxplayer meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/*.patch meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer_git.bb meta-raspberrypi/recipes-multimedia/x264 meta-raspberrypi/recipes-multimedia/x264/x264_git.bbappend meta-raspberrypi/wic meta-raspberrypi/wic/sdimage-raspberrypi.wks
The following sections describe each part of the proposed BSP format.