Lines Matching +full:hardware +full:- +full:docs
1 .. SPDX-License-Identifier: CC-BY-SA-2.0-UK
4 Board Support Packages (BSP) - Developer's Guide
8 defines how to support a particular hardware device, set of devices, or
9 hardware platform. The BSP includes information about the hardware
11 along with any additional hardware drivers required. The BSP also lists
19 Layer using the :ref:`bitbake-layers <bsp-guide/bsp:Creating a new BSP Layer Using the \`\`bitbake-…
28 layers in the Yocto Project use the following well-established naming
31 meta-bsp_root_name
33 The string "meta-" is prepended to the
38 Because the BSP layer naming convention is well-established, it is
40 BSP layer name does not need to start with ``meta-``.
47 :ref:`overview-manual/development-environment:yocto project source repositories`
58 ``meta-raspberrypi`` and ``meta-intel``). Each of these layers is a
63 $ git clone git://git.yoctoproject.org/meta-raspberrypi
65 In addition to BSP layers, the ``meta-yocto-bsp`` layer is part of the
66 shipped ``poky`` repository. The ``meta-yocto-bsp`` layer maintains
67 several "reference" BSPs including the ARM-based Beaglebone, MIPS-based
68 EdgeRouter, and generic versions of both 32-bit and 64-bit IA machines.
71 :ref:`bsp-guide/bsp:developing a board support package (bsp)`
75 :ref:`dev-manual/start:locating yocto project source files`
78 The BSP layer's base directory (``meta-bsp_root_name``) is the root
84 script (i.e. :ref:`ref-manual/structure:\`\`oe-init-build-env\`\``).
91 /usr/local/src/yocto/meta-poky \
92 /usr/local/src/yocto/meta-yocto-bsp \
93 /usr/local/src/yocto/meta-mylayer \
101 priorities. The build system works from the top-down through the layers
113 `meta-openembedded <https://github.com/openembedded/meta-openembedded>`__
114 layer. The ``meta-openembedded`` layer contains many ``meta-*`` layers.
120 /usr/local/src/yocto/meta-poky \
121 /usr/local/src/yocto/meta-yocto-bsp \
122 /usr/local/src/yocto/meta-mylayer \
123 .../meta-openembedded/meta-oe \
124 .../meta-openembedded/meta-perl \
125 .../meta-openembedded/meta-networking \
131 ":ref:`dev-manual/common-tasks:understanding and creating layers`"
140 ":ref:`bsp-guide/bsp:creating a new bsp layer using the \`\`bitbake-layers\`\` script`"
146 :ref:`bsp-guide/bsp:example filesystem layout` section.
149 in a shell. See the ":ref:`dev-manual/start:preparing the build host`"
157 ":ref:`dev-manual/start:cloning the \`\`poky\`\` repository`" and
159 ":ref:`dev-manual/start:checking out by branch in poky`" or
160 ":ref:`dev-manual/start:checking out by tag in poky`"
170 :yocto_dl:`index of machines </releases/yocto/yocto-&DISTRO;/machines>`
173 #. *Optionally Clone the meta-intel BSP Layer:* If your hardware is
175 layer. For details on the ``meta-intel`` BSP layer, see the layer's
176 :yocto_git:`README </meta-intel/tree/README>` file.
179 ``meta-intel`` Git repository inside the :term:`Source Directory` (e.g.
186 $ git clone git://git.yoctoproject.org/meta-intel.git
187 Cloning into 'meta-intel'...
196 ``meta-intel`` must match the same branch you are using for the
199 $ cd meta-intel
200 $ git checkout -b &DISTRO_NAME_NO_CAP; remotes/origin/&DISTRO_NAME_NO_CAP;
208 branch -al`` command. See the
209 ":ref:`dev-manual/start:checking out by branch in poky`"
213 #. *Optionally Set Up an Alternative BSP Layer:* If your hardware can be
215 ``meta-intel`` BSP layer, you can clone that BSP layer.
217 The process is identical to the process used for the ``meta-intel``
219 your hardware most closely matches the ``meta-raspberrypi``, clone
222 $ git clone git://git.yoctoproject.org/meta-raspberrypi
223 Cloning into 'meta-raspberrypi'...
233 :ref:`ref-manual/structure:\`\`oe-init-build-env\`\`` environment
237 $ source oe-init-build-env
247 Defining a common BSP directory structure allows end-users to understand
249 standardization of software support for hardware.
257 <overview-manual/yp-intro:the yocto project layer model>`, can
259 all the hardware-specific details in one place using a standard format,
260 which is useful for any person wishing to use the hardware platform
263 The BSP specification does not include a build system or other tools -
264 the specification is concerned with the hardware-specific components
265 only. At the end-distribution point, you can ship the BSP layer combined
274 ":ref:`bsp-guide/bsp:released bsp requirements`" section.
280 meta-bsp_root_name/
281 meta-bsp_root_name/bsp_license_file
282 meta-bsp_root_name/README
283 meta-bsp_root_name/README.sources
284 meta-bsp_root_name/binary/bootable_images
285 meta-bsp_root_name/conf/layer.conf
286 meta-bsp_root_name/conf/machine/*.conf
287 meta-bsp_root_name/recipes-bsp/*
288 meta-bsp_root_name/recipes-core/*
289 meta-bsp_root_name/recipes-graphics/*
290 meta-bsp_root_name/recipes-kernel/linux/linux-yocto_kernel_rev.bbappend
295 .. code-block:: none
297 meta-raspberrypi/COPYING.MIT
298 meta-raspberrypi/README.md
299 meta-raspberrypi/classes
300 meta-raspberrypi/classes/sdcard_image-rpi.bbclass
301 meta-raspberrypi/conf/
302 meta-raspberrypi/conf/layer.conf
303 meta-raspberrypi/conf/machine/
304 meta-raspberrypi/conf/machine/raspberrypi-cm.conf
305 meta-raspberrypi/conf/machine/raspberrypi-cm3.conf
306 meta-raspberrypi/conf/machine/raspberrypi.conf
307 meta-raspberrypi/conf/machine/raspberrypi0-wifi.conf
308 meta-raspberrypi/conf/machine/raspberrypi0.conf
309 meta-raspberrypi/conf/machine/raspberrypi2.conf
310 meta-raspberrypi/conf/machine/raspberrypi3-64.conf
311 meta-raspberrypi/conf/machine/raspberrypi3.conf
312 meta-raspberrypi/conf/machine/include
313 meta-raspberrypi/conf/machine/include/rpi-base.inc
314 meta-raspberrypi/conf/machine/include/rpi-default-providers.inc
315 meta-raspberrypi/conf/machine/include/rpi-default-settings.inc
316 meta-raspberrypi/conf/machine/include/rpi-default-versions.inc
317 meta-raspberrypi/conf/machine/include/tune-arm1176jzf-s.inc
318 meta-raspberrypi/docs
319 meta-raspberrypi/docs/Makefile
320 meta-raspberrypi/docs/conf.py
321 meta-raspberrypi/docs/contributing.md
322 meta-raspberrypi/docs/extra-apps.md
323 meta-raspberrypi/docs/extra-build-config.md
324 meta-raspberrypi/docs/index.rst
325 meta-raspberrypi/docs/layer-contents.md
326 meta-raspberrypi/docs/readme.md
327 meta-raspberrypi/files
328 meta-raspberrypi/files/custom-licenses
329 meta-raspberrypi/files/custom-licenses/Broadcom
330 meta-raspberrypi/recipes-bsp
331 meta-raspberrypi/recipes-bsp/bootfiles
332 meta-raspberrypi/recipes-bsp/bootfiles/bcm2835-bootfiles.bb
333 meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb
334 meta-raspberrypi/recipes-bsp/common
335 meta-raspberrypi/recipes-bsp/common/firmware.inc
336 meta-raspberrypi/recipes-bsp/formfactor
337 meta-raspberrypi/recipes-bsp/formfactor/formfactor
338 meta-raspberrypi/recipes-bsp/formfactor/formfactor/raspberrypi
339 meta-raspberrypi/recipes-bsp/formfactor/formfactor/raspberrypi/machconfig
340 meta-raspberrypi/recipes-bsp/formfactor/formfactor_0.0.bbappend
341 meta-raspberrypi/recipes-bsp/rpi-u-boot-src
342 meta-raspberrypi/recipes-bsp/rpi-u-boot-src/files
343 meta-raspberrypi/recipes-bsp/rpi-u-boot-src/files/boot.cmd.in
344 meta-raspberrypi/recipes-bsp/rpi-u-boot-src/rpi-u-boot-scr.bb
345 meta-raspberrypi/recipes-bsp/u-boot
346 meta-raspberrypi/recipes-bsp/u-boot/u-boot
347 meta-raspberrypi/recipes-bsp/u-boot/u-boot/*.patch
348 meta-raspberrypi/recipes-bsp/u-boot/u-boot_%.bbappend
349 meta-raspberrypi/recipes-connectivity
350 meta-raspberrypi/recipes-connectivity/bluez5
351 meta-raspberrypi/recipes-connectivity/bluez5/bluez5
352 meta-raspberrypi/recipes-connectivity/bluez5/bluez5/*.patch
353 meta-raspberrypi/recipes-connectivity/bluez5/bluez5/BCM43430A1.hcd
354 meta-raspberrypi/recipes-connectivity/bluez5/bluez5brcm43438.service
355 meta-raspberrypi/recipes-connectivity/bluez5/bluez5_%.bbappend
356 meta-raspberrypi/recipes-core
357 meta-raspberrypi/recipes-core/images
358 meta-raspberrypi/recipes-core/images/rpi-basic-image.bb
359 meta-raspberrypi/recipes-core/images/rpi-hwup-image.bb
360 meta-raspberrypi/recipes-core/images/rpi-test-image.bb
361 meta-raspberrypi/recipes-core/packagegroups
362 meta-raspberrypi/recipes-core/packagegroups/packagegroup-rpi-test.bb
363 meta-raspberrypi/recipes-core/psplash
364 meta-raspberrypi/recipes-core/psplash/files
365 meta-raspberrypi/recipes-core/psplash/files/psplash-raspberrypi-img.h
366 meta-raspberrypi/recipes-core/psplash/psplash_git.bbappend
367 meta-raspberrypi/recipes-core/udev
368 meta-raspberrypi/recipes-core/udev/udev-rules-rpi
369 meta-raspberrypi/recipes-core/udev/udev-rules-rpi/99-com.rules
370 meta-raspberrypi/recipes-core/udev/udev-rules-rpi.bb
371 meta-raspberrypi/recipes-devtools
372 meta-raspberrypi/recipes-devtools/bcm2835
373 meta-raspberrypi/recipes-devtools/bcm2835/bcm2835_1.52.bb
374 meta-raspberrypi/recipes-devtools/pi-blaster
375 meta-raspberrypi/recipes-devtools/pi-blaster/files
376 meta-raspberrypi/recipes-devtools/pi-blaster/files/*.patch
377 meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster_git.bb
378 meta-raspberrypi/recipes-devtools/python
379 meta-raspberrypi/recipes-devtools/python/python-rtimu
380 meta-raspberrypi/recipes-devtools/python/python-rtimu/*.patch
381 meta-raspberrypi/recipes-devtools/python/python-rtimu_git.bb
382 meta-raspberrypi/recipes-devtools/python/python-sense-hat_2.2.0.bb
383 meta-raspberrypi/recipes-devtools/python/rpi-gpio
384 meta-raspberrypi/recipes-devtools/python/rpi-gpio/*.patch
385 meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.6.3.bb
386 meta-raspberrypi/recipes-devtools/python/rpio
387 meta-raspberrypi/recipes-devtools/python/rpio/*.patch
388 meta-raspberrypi/recipes-devtools/python/rpio_0.10.0.bb
389 meta-raspberrypi/recipes-devtools/wiringPi
390 meta-raspberrypi/recipes-devtools/wiringPi/files
391 meta-raspberrypi/recipes-devtools/wiringPi/files/*.patch
392 meta-raspberrypi/recipes-devtools/wiringPi/wiringpi_git.bb
393 meta-raspberrypi/recipes-graphics
394 meta-raspberrypi/recipes-graphics/eglinfo
395 meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
396 meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-x11_%.bbappend
397 meta-raspberrypi/recipes-graphics/mesa
398 meta-raspberrypi/recipes-graphics/mesa/mesa-gl_%.bbappend
399 meta-raspberrypi/recipes-graphics/mesa/mesa_%.bbappend
400 meta-raspberrypi/recipes-graphics/userland
401 meta-raspberrypi/recipes-graphics/userland/userland
402 meta-raspberrypi/recipes-graphics/userland/userland/*.patch
403 meta-raspberrypi/recipes-graphics/userland/userland_git.bb
404 meta-raspberrypi/recipes-graphics/vc-graphics
405 meta-raspberrypi/recipes-graphics/vc-graphics/files
406 meta-raspberrypi/recipes-graphics/vc-graphics/files/egl.pc
407 meta-raspberrypi/recipes-graphics/vc-graphics/files/vchiq.sh
408 meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics-hardfp.bb
409 meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics.bb
410 meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics.inc
411 meta-raspberrypi/recipes-graphics/wayland
412 meta-raspberrypi/recipes-graphics/wayland/weston_%.bbappend
413 meta-raspberrypi/recipes-graphics/xorg-xserver
414 meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config
415 meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi
416 meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf
417 meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d
418 meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/10-evdev.conf
419 meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/98-pitft.conf
420 …meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/99-calibration.…
421 meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
422 meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
423 meta-raspberrypi/recipes-kernel
424 meta-raspberrypi/recipes-kernel/linux-firmware
425 meta-raspberrypi/recipes-kernel/linux-firmware/files
426 meta-raspberrypi/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.bin
427 meta-raspberrypi/recipes-kernel/linux-firmware/files/brcfmac43430-sdio.txt
428 meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_%.bbappend
429 meta-raspberrypi/recipes-kernel/linux
430 meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-dev.bb
431 meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc
432 meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.14.bb
433 meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.9.bb
434 meta-raspberrypi/recipes-multimedia
435 meta-raspberrypi/recipes-multimedia/gstreamer
436 meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx
437 meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/*.patch
438 meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_%.bbappend
439 meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend
440 meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12
441 meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12/*.patch
442 meta-raspberrypi/recipes-multimedia/omxplayer
443 meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer
444 meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/*.patch
445 meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer_git.bb
446 meta-raspberrypi/recipes-multimedia/x264
447 meta-raspberrypi/recipes-multimedia/x264/x264_git.bbappend
448 meta-raspberrypi/wic meta-raspberrypi/wic/sdimage-raspberrypi.wks
453 -------------
457 meta-bsp_root_name/bsp_license_file
467 the ":ref:`dev-manual/common-tasks:maintaining open source license compliance during your product's…
471 -----------
475 meta-bsp_root_name/README
486 -------------------
490 meta-bsp_root_name/README.sources
494 ``meta-bsp_root_name/binary``. Images in the ``binary`` would be images
504 Pre-built User Binaries
505 -----------------------
509 meta-bsp_root_name/binary/bootable_images
511 This optional area contains useful pre-built kernels and user-space
519 The exact types of binaries present are highly hardware-dependent. The
520 :ref:`README <bsp-guide/bsp:readme file>` file should be present in the
522 hardware. Additionally, the
523 :ref:`README.sources <bsp-guide/bsp:readme.sources file>` file should be
528 ------------------------
532 meta-bsp_root_name/conf/layer.conf
545 BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
546 ${LAYERDIR}/recipes-*/*/*.bbappend"
568 LICENSE_PATH += "${LAYERDIR}/files/custom-licenses"
577 Hardware Configuration Options
578 ------------------------------
582 meta-bsp_root_name/conf/machine/*.conf
593 :ref:`virtual/kernel <dev-manual/common-tasks:using virtual providers>`),
594 the hardware drivers to include in different types of images, any
598 This configuration file could also include a hardware "tuning" file that
605 For example, many ``tune-*`` files (e.g. ``tune-arm1136jf-s.inc``,
606 ``tune-1586-nlp.inc``, and so forth) reside in the
613 include conf/machine/include/rpi-base.inc
615 Miscellaneous BSP-Specific Recipe Files
616 ---------------------------------------
620 meta-bsp_root_name/recipes-bsp/*
626 Furthermore, there are machine-specific settings used during the build
642 ``meta/recipes-bsp/formfactor/formfactor_0.0.bb``, which is found in
646 ---------------------
650 meta-bsp_root_name/recipes-graphics/*
657 --------------------------
661 meta-bsp_root_name/recipes-kernel/linux/linux*.bbappend
662 meta-bsp_root_name/recipes-kernel/linux/*.bb
665 to build the image. The ``*.bb`` files would be a developer-supplied
673 ``meta/recipes-kernel/linux``. You can append machine-specific changes
676 ``meta-bsp_root_name/recipes-kernel/linux`` directory).
678 Suppose you are using the ``linux-yocto_4.4.bb`` recipe to build the
684 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
685 PREFERRED_VERSION_linux-yocto ?= "4.4%"
692 You would use the ``linux-yocto_4.4.bbappend`` file to append specific
697 the ":ref:`kernel-dev/common:creating the append file`" section
702 ``recipes-kernel/linux`` directory you see the following::
704 linux-raspberrypi-dev.bb
705 linux-raspberrypi.inc
706 linux-raspberrypi_4.14.bb
707 linux-raspberrypi_4.9.bb
714 This section describes the high-level procedure you can follow to create
715 a BSP. Although not required for BSP creation, the ``meta-intel``
720 the ":ref:`bsp-guide/bsp:creating a new bsp layer using the \`\`bitbake-layers\`\` script`"
726 .. image:: figures/bsp-dev-flow.png
730 Yocto Project*: See the ":ref:`dev-manual/start:preparing the build host`"
734 #. *Establish the meta-intel Repository on Your System:* Having
738 ":ref:`bsp-guide/bsp:preparing your build host to work with bsp layers`"
741 #. *Create Your Own BSP Layer Using the bitbake-layers Script:*
743 hardware. A layer is really just a location or area in which you
747 ``bitbake-layers`` script. For information about that script, see the
748 ":ref:`bsp-guide/bsp:creating a new bsp layer using the \`\`bitbake-layers\`\` script`"
758 layers, see the ":ref:`overview-manual/yp-intro:the yocto project layer model`"
760 reference the ":ref:`dev-manual/common-tasks:understanding and creating layers`"
762 information on BSP layers, see the ":ref:`bsp-guide/bsp:bsp layers`"
767 - There are four hardware reference BSPs in the Yocto
768 Project release, located in the ``poky/meta-yocto-bsp``
771 - Texas Instruments Beaglebone (``beaglebone-yocto``)
773 - Ubiquiti Networks EdgeRouter Lite (``edgerouter``)
775 - Two general IA platforms (``genericx86`` and ``genericx86-64``)
777 - There are three core Intel BSPs in the Yocto Project
778 release, in the ``meta-intel`` layer:
780 - ``intel-core2-32``, which is a BSP optimized for the Core2
784 - ``intel-corei7-64``, which is a BSP optimized for Nehalem
788 - ``intel-quark``, which is a BSP optimized for the Intel
792 layout. This layout is described in the ":ref:`bsp-guide/bsp:example filesystem layout`"
796 BSP found in the ``meta-intel`` layer inside the Source Directory.
800 several ``recipes-*`` directories within the BSP layer. Configuration
803 ``bitbake-layers`` script, you are able to interactively configure
809 your hardware.
815 setup script (i.e. ``oe-init-build-env``) and you need to be sure two
819 ":ref:`dev-manual/common-tasks:enabling your layer`"
830 ":ref:`ref-manual/images:Images`" chapter in the Yocto
840 -------------------------
844 - The requirements here assume the BSP layer is a well-formed, "legal"
847 ":ref:`bsp-guide/bsp:bsp layers`" section in this manual and the
848 ":ref:`dev-manual/common-tasks:understanding and creating layers`"
851 - The requirements in this section apply regardless of how you package
858 - The requirements for the BSP as it is made available to a developer
864 - It is not required that specific packages or package modifications
873 - *Layer Name:* The BSP must have a layer name that follows the Yocto
875 ":ref:`bsp-guide/bsp:bsp layers`" section.
877 - *File System Layout:* When possible, use the same directory names in
880 or in the OpenEmbedded-Core Layer (``openembedded-core``) at
881 :oe_git:`/openembedded-core/tree/meta`.
884 (``*.bbappend`` files) into ``recipes-*`` subdirectories by
887 up your own ``recipes-*`` subdirectory.
889 Within any particular ``recipes-*`` category, the layout should match
890 what is found in the OpenEmbedded-Core Git repository
891 (``openembedded-core``) or the Source Directory (``poky``). In other
892 words, make sure you place related files in appropriately-related
893 ``recipes-*`` subdirectories specific to the recipe's function, or
894 within a subdirectory containing a set of closely-related recipes.
899 - *License File:* You must include a license file in the
900 ``meta-bsp_root_name`` directory. This license covers the BSP
903 :yocto_git:`COPYING.MIT </meta-raspberrypi/tree/COPYING.MIT>`
904 file for the Raspberry Pi BSP in the ``meta-raspberrypi`` BSP layer
907 - *README File:* You must include a ``README`` file in the
908 ``meta-bsp_root_name`` directory. See the
909 :yocto_git:`README.md </meta-raspberrypi/tree/README.md>`
910 file for the Raspberry Pi BSP in the ``meta-raspberrypi`` BSP layer
915 - A brief description of the target hardware.
917 - A list of all the dependencies of the BSP. These dependencies are
922 - Any required special licensing information. For example, this
927 - The name and contact information for the BSP layer maintainer.
930 ":ref:`dev-manual/common-tasks:submitting a change to the yocto project`"
933 - Instructions on how to build the BSP using the BSP layer.
935 - Instructions on how to boot the BSP build from the BSP layer.
937 - Instructions on how to boot the binary images contained in the
940 - Information on any known bugs or issues that users should know
943 - *README.sources File:* If your BSP contains binary images in the
945 the ``meta-bsp_root_name`` directory. This file specifies exactly
948 - *Layer Configuration File:* You must include a ``conf/layer.conf``
949 file in the ``meta-bsp_root_name`` directory. This file identifies
950 the ``meta-bsp_root_name`` BSP layer as a layer to the build
953 - *Machine Configuration File:* You must include one or more
955 ``meta-bsp_root_name`` directory. These configuration files define
961 files to describe disparate hardware. If you do have very different
969 some other mechanism (e.g. ``meta-yocto-bsp`` layer). Such considerations
973 ----------------------------
978 - *Bootable Images:* Released BSPs can contain one or more bootable
980 BSP using their own hardware.
991 ``binary/`` subdirectory located in the ``meta-bsp_root_name``
1002 - *Use a Yocto Linux Kernel:* Kernel recipes in the BSP should be based
1014 - Create a ``*.bbappend`` file for the modified recipe. For information on using
1016 ":ref:`dev-manual/common-tasks:appending other layers metadata with your layer`"
1019 - Ensure your directory structure in the BSP layer that supports your
1023 - Put the append file in a directory whose name matches the machine's
1024 name and is located in an appropriate sub-directory inside the BSP
1025 layer (i.e. ``recipes-bsp``, ``recipes-graphics``, ``recipes-core``,
1028 - Place the BSP-specific files in the proper directory inside the BSP
1035 to reside in a machine-specific directory.
1039 BSP-specific configuration file named ``interfaces`` to the
1040 ``init-ifupdown_1.0.bb`` recipe for machine "xyz" where the BSP layer
1043 #. Edit the ``init-ifupdown_1.0.bbappend`` file so that it contains the
1048 The append file needs to be in the ``meta-xyz/recipes-core/init-ifupdown``
1054 meta-xyz/recipes-core/init-ifupdown/files/xyz-machine-one/interfaces
1058 If the ``meta-xyz`` layer did not support multiple machines, you would place
1061 meta-xyz/recipes-core/init-ifupdown/files/interfaces
1071 In some cases, a BSP contains separately-licensed Intellectual Property
1077 available as a pre-built image, you can download the image after
1080 You could find that some separately-licensed components that are
1083 the system would be non-functional. Then again, you might find that
1084 other licensed components that are simply 'good-to-have' or purely
1086 can use rather than agreeing to the separately-licensed component. Even
1088 component that is not identical but will work as a less-capable version
1094 available de-featured BSPs that are completely free of any IP
1097 de-featured BSPs are named appropriately different as compared to the
1105 If however, a non-encumbered version is unavailable or it provides
1114 Other Types of Specially-Licensed Packages:* For each of those recipes, you can
1120 ":ref:`dev-manual/common-tasks:enabling commercially licensed recipes`"
1136 #. *Get a Pre-Built Version of the BSP:* You can get this type of BSP by
1143 click-through license agreements presented by the website. If you
1151 Pre-compiled images are bundled with a time-limited kernel that runs
1157 Creating a new BSP Layer Using the ``bitbake-layers`` Script
1160 The ``bitbake-layers create-layer`` script automates creating a BSP
1168 - *Create a General Layer:* Use the ``bitbake-layers`` script with the
1169 ``create-layer`` subcommand to create a new general layer. For
1171 ``bitbake-layers`` script, see the
1172 ":ref:`dev-manual/common-tasks:creating a general layer using the \`\`bitbake-layers\`\` script`"
1175 - *Create a Layer Configuration File:* Every layer needs a layer
1180 in your configuration file, locate a layer (e.g. "meta-ti") and
1182 :yocto_git:`local.conf </meta-ti/tree/meta-ti-bsp/conf/layer.conf>`
1185 - *Create a Machine Configuration File:* Create a
1187 :yocto_git:`meta-yocto-bsp/conf/machine </poky/tree/meta-yocto-bsp/conf/machine>`
1189 :yocto_git:`meta-ti </meta-ti/tree/meta-ti-bsp/conf/machine>`
1191 :yocto_git:`meta-freescale </meta-freescale/tree/conf/machine>`
1195 - *Create a Kernel Recipe:* Create a kernel recipe in
1196 ``recipes-kernel/linux`` by either using a kernel append file or a
1197 new custom kernel recipe file (e.g. ``yocto-linux_4.12.bb``). The BSP
1199 examples. See the ":ref:`kernel-dev/common:modifying an existing recipe`"
1205 :yocto_git:`meta-yocto-bsp </poky/tree/meta-yocto-bsp>`
1209 -------------------------------
1218 BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
1219 ${LAYERDIR}/recipes-*/*/*.bbappend"
1232 see ":ref:`step 3 <dev-manual/common-tasks:creating your own layer>`"
1237 ---------------------------------
1253 located in the layer ``poky/meta-yocto-bsp/conf/machine`` and is named
1254 ``beaglebone-yocto.conf``::
1257 #@NAME: Beaglebone-yocto machine
1260 PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
1261 XSERVER ?= "xserver-xorg \
1262 xf86-video-modesetting \
1265 MACHINE_EXTRA_RRECOMMENDS = "kernel-modules kernel-devicetree"
1267 EXTRA_IMAGEDEPENDS += "u-boot"
1269 DEFAULTTUNE ?= "cortexa8hf-neon"
1270 include conf/machine/include/arm/armv7a/tune-cortexa8.inc
1273 EXTRA_IMAGECMD:jffs2 = "-lnp "
1274 WKS_FILE ?= "beaglebone-yocto.wks"
1275 IMAGE_INSTALL:append = " kernel-devicetree kernel-image-zimage"
1276 … do_image_wic[depends] += "mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot"
1281 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
1282 PREFERRED_VERSION_linux-yocto ?= "5.0%"
1285 KERNEL_DEVICETREE = "am335x-bone.dtb am335x-boneblack.dtb am335x-bonegreen.dtb"
1296 …IMAGE_BOOT_FILES ?= "u-boot.${UBOOT_SUFFIX} MLO zImage am335x-bone.dtb am335x-boneblack.dtb am335x…
1298 The variables used to configure the machine define machine-specific properties; for
1299 example, machine-dependent packages, machine tunings, the type of kernel
1300 to build, and U-Boot configurations.
1307 the ":ref:`ref-manual/variables:variables glossary`" in the Yocto
1310 - :term:`PREFERRED_PROVIDER_virtual/xserver <PREFERRED_PROVIDER>`:
1313 "virtual/xserver" is "xserver-xorg", available in
1314 ``poky/meta/recipes-graphics/xorg-xserver``.
1316 - :term:`XSERVER`: The packages that
1318 machine. In this example, the "xserver-xorg" and
1319 "xf86-video-modesetting" are installed.
1321 - :term:`MACHINE_EXTRA_RRECOMMENDS`:
1322 A list of machine-dependent packages not essential for booting the
1324 However, the packages are required for a fully-featured image.
1329 of hardware.
1331 - :term:`EXTRA_IMAGEDEPENDS`:
1335 needed in the root filesystem. In this case, the U-Boot recipe must
1338 - :term:`DEFAULTTUNE`: Machines
1341 are set in the :term:`OpenEmbedded-Core (OE-Core)` layer (e.g.
1343 tuning file is ``cortexa8hf-neon``.
1348 ``conf/machine/include/arm/tune-cortexa8.inc`` file provides many tuning
1351 - :term:`IMAGE_FSTYPES`: The
1356 - :term:`EXTRA_IMAGECMD`:
1358 example, the "-lnp " option is used when creating the
1361 - :term:`WKS_FILE`: The location of
1362 …the :ref:`Wic kickstart <ref-manual/kickstart:openembedded kickstart (\`\`.wks\`\`) reference>` fi…
1366 - :term:`IMAGE_INSTALL`:
1368 :ref:`image <ref-classes-image>` class. Recipes
1371 - ``do_image_wic[depends]``: A task that is constructed during the
1375 - :term:`SERIAL_CONSOLES`:
1379 - :term:`PREFERRED_PROVIDER_virtual/kernel <PREFERRED_PROVIDER>`:
1382 "virtual/kernel" is "linux-yocto", which exists in the layer's
1383 ``recipes-kernel/linux`` directory.
1385 - :term:`PREFERRED_VERSION_linux-yocto <PREFERRED_VERSION>`:
1389 - :term:`KERNEL_IMAGETYPE`:
1393 - :term:`KERNEL_DEVICETREE`:
1398 - :term:`KERNEL_EXTRA_ARGS`:
1399 Additional ``make`` command-line arguments the OpenEmbedded build
1401 ``LOADADDR=${UBOOT_ENTRYPOINT}`` is passed as a command-line argument.
1403 - :term:`SPL_BINARY`: Defines the
1414 :yocto_git:`u-boot.inc </poky/tree/meta/recipes-bsp/u-boot/u-boot.inc>`
1417 - :term:`UBOOT_* <UBOOT_ENTRYPOINT>`: Defines
1418 various U-Boot configurations needed to build a U-Boot image. In this
1419 example, a U-Boot image is required to boot the BeagleBone device.
1422 - :term:`UBOOT_SUFFIX`:
1423 Points to the generated U-Boot extension.
1425 - :term:`UBOOT_MACHINE`:
1427 a U-Boot image.
1429 - :term:`UBOOT_ENTRYPOINT`:
1430 Specifies the entry point for the U-Boot image.
1432 - :term:`UBOOT_LOADADDRESS`:
1433 Specifies the load address for the U-Boot image.
1435 - :term:`MACHINE_FEATURES`:
1436 Specifies the list of hardware features the BeagleBone device is
1440 - :term:`IMAGE_BOOT_FILES`:
1442 image using the Wic tool with the ``bootimg-partition`` or
1443 ``bootimg-efi`` source plugin.
1446 -------------------------
1451 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
1452 PREFERRED_VERSION_linux-yocto ?= "5.0%"
1454 The ``meta-yocto-bsp/recipes-kernel/linux`` directory in the layer contains
1456 (i.e. ``linux-yocto_5.0.bbappend``) is used to override an established
1457 kernel recipe (i.e. ``linux-yocto_5.0.bb``), which is located in
1458 :yocto_git:`/poky/tree/meta/recipes-kernel/linux`.
1463 KBRANCH:genericx86-64 = "v5.0/standard/base"
1465 KBRANCH:beaglebone-yocto = "v5.0/standard/beaglebone"
1467 KMACHINE:genericx86 ?= "common-pc"
1468 KMACHINE:genericx86-64 ?= "common-pc-64"
1469 KMACHINE:beaglebone-yocto ?= "beaglebone"
1472 SRCREV_machine:genericx86-64 ?= "3df4aae6074e94e794e27fe7f17451d9353cdf3d"
1474 SRCREV_machine:beaglebone-yocto ?= "3df4aae6074e94e794e27fe7f17451d9353cdf3d"
1477 COMPATIBLE_MACHINE:genericx86-64 = "genericx86-64"
1479 COMPATIBLE_MACHINE:beaglebone-yocto = "beaglebone-yocto"
1482 LINUX_VERSION:genericx86-64 = "5.0.3"
1484 LINUX_VERSION:beaglebone-yocto = "5.0.3"
1487 part of the ``meta-yocto-bsp`` layer. The relevant statements are
1488 appended with the "beaglebone-yocto" string. The OpenEmbedded build
1492 - :term:`KBRANCH`: Identifies the
1496 - :term:`KMACHINE`: Identifies the
1500 - :term:`SRCREV`: Identifies the
1503 - :term:`COMPATIBLE_MACHINE`:
1507 - :term:`LINUX_VERSION`: The