summaryrefslogtreecommitdiffstats
path: root/documentation/bsp-guide
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/bsp-guide')
-rw-r--r--documentation/bsp-guide/bsp.rst361
-rw-r--r--documentation/bsp-guide/history.rst73
-rw-r--r--documentation/bsp-guide/index.rst1
3 files changed, 171 insertions, 264 deletions
diff --git a/documentation/bsp-guide/bsp.rst b/documentation/bsp-guide/bsp.rst
index 93e9182490..7eaa4d8700 100644
--- a/documentation/bsp-guide/bsp.rst
+++ b/documentation/bsp-guide/bsp.rst
@@ -1,8 +1,8 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK 1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2 2
3************************************************ 3**************************************************
4Board Support Packages (BSP) - Developer's Guide 4Board Support Packages (BSP) --- Developer's Guide
5************************************************ 5**************************************************
6 6
7A Board Support Package (BSP) is a collection of information that 7A Board Support Package (BSP) is a collection of information that
8defines how to support a particular hardware device, set of devices, or 8defines how to support a particular hardware device, set of devices, or
@@ -26,7 +26,7 @@ A BSP consists of a file structure inside a base directory.
26Collectively, you can think of the base directory, its file structure, 26Collectively, you can think of the base directory, its file structure,
27and the contents as a BSP layer. Although not a strict requirement, BSP 27and the contents as a BSP layer. Although not a strict requirement, BSP
28layers in the Yocto Project use the following well-established naming 28layers in the Yocto Project use the following well-established naming
29convention: :: 29convention::
30 30
31 meta-bsp_root_name 31 meta-bsp_root_name
32 32
@@ -58,14 +58,14 @@ Each repository is a BSP layer supported by the Yocto Project (e.g.
58``meta-raspberrypi`` and ``meta-intel``). Each of these layers is a 58``meta-raspberrypi`` and ``meta-intel``). Each of these layers is a
59repository unto itself and clicking on the layer name displays two URLs 59repository unto itself and clicking on the layer name displays two URLs
60from which you can clone the layer's repository to your local system. 60from which you can clone the layer's repository to your local system.
61Here is an example that clones the Raspberry Pi BSP layer: :: 61Here is an example that clones the Raspberry Pi BSP layer::
62 62
63 $ git clone git://git.yoctoproject.org/meta-raspberrypi 63 $ git clone git://git.yoctoproject.org/meta-raspberrypi
64 64
65In addition to BSP layers, the ``meta-yocto-bsp`` layer is part of the 65In addition to BSP layers, the ``meta-yocto-bsp`` layer is part of the
66shipped ``poky`` repository. The ``meta-yocto-bsp`` layer maintains 66shipped ``poky`` repository. The ``meta-yocto-bsp`` layer maintains
67several "reference" BSPs including the ARM-based Beaglebone, MIPS-based 67several "reference" BSPs including the ARM-based Beaglebone and generic
68EdgeRouter, and generic versions of both 32-bit and 64-bit IA machines. 68versions of both 32-bit and 64-bit IA machines.
69 69
70For information on typical BSP development workflow, see the 70For information on typical BSP development workflow, see the
71:ref:`bsp-guide/bsp:developing a board support package (bsp)` 71:ref:`bsp-guide/bsp:developing a board support package (bsp)`
@@ -81,10 +81,10 @@ directory of that Layer. This directory is what you add to the
81``conf/bblayers.conf`` file found in your 81``conf/bblayers.conf`` file found in your
82:term:`Build Directory`, which is 82:term:`Build Directory`, which is
83established after you run the OpenEmbedded build environment setup 83established after you run the OpenEmbedded build environment setup
84script (i.e. :ref:`ref-manual/structure:\`\`oe-init-build-env\`\``). 84script (i.e. :ref:`ref-manual/structure:``oe-init-build-env```).
85Adding the root directory allows the :term:`OpenEmbedded Build System` 85Adding the root directory allows the :term:`OpenEmbedded Build System`
86to recognize the BSP 86to recognize the BSP
87layer and from it build an image. Here is an example: :: 87layer and from it build an image. Here is an example::
88 88
89 BBLAYERS ?= " \ 89 BBLAYERS ?= " \
90 /usr/local/src/yocto/meta \ 90 /usr/local/src/yocto/meta \
@@ -95,11 +95,11 @@ layer and from it build an image. Here is an example: ::
95 95
96.. note:: 96.. note::
97 97
98 Ordering and :term:`BBFILE_PRIORITY` for the layers listed in ``BBLAYERS`` 98 Ordering and :term:`BBFILE_PRIORITY` for the layers listed in :term:`BBLAYERS`
99 matter. For example, if multiple layers define a machine configuration, the 99 matter. For example, if multiple layers define a machine configuration, the
100 OpenEmbedded build system uses the last layer searched given similar layer 100 OpenEmbedded build system uses the last layer searched given similar layer
101 priorities. The build system works from the top-down through the layers 101 priorities. The build system works from the top-down through the layers
102 listed in ``BBLAYERS``. 102 listed in :term:`BBLAYERS`.
103 103
104Some BSPs require or depend on additional layers beyond the BSP's root 104Some BSPs require or depend on additional layers beyond the BSP's root
105layer in order to be functional. In this case, you need to specify these 105layer in order to be functional. In this case, you need to specify these
@@ -109,11 +109,10 @@ them to the "Dependencies" section.
109 109
110Some layers function as a layer to hold other BSP layers. These layers 110Some layers function as a layer to hold other BSP layers. These layers
111are known as ":term:`container layers <Container Layer>`". An example of 111are known as ":term:`container layers <Container Layer>`". An example of
112this type of layer is OpenEmbedded's 112this type of layer is OpenEmbedded's :oe_git:`meta-openembedded </meta-openembedded>`
113`meta-openembedded <https://github.com/openembedded/meta-openembedded>`__
114layer. The ``meta-openembedded`` layer contains many ``meta-*`` layers. 113layer. The ``meta-openembedded`` layer contains many ``meta-*`` layers.
115In cases like this, you need to include the names of the actual layers 114In cases like this, you need to include the names of the actual layers
116you want to work with, such as: :: 115you want to work with, such as::
117 116
118 BBLAYERS ?= " \ 117 BBLAYERS ?= " \
119 /usr/local/src/yocto/meta \ 118 /usr/local/src/yocto/meta \
@@ -128,7 +127,7 @@ you want to work with, such as: ::
128and so on. 127and so on.
129 128
130For more information on layers, see the 129For more information on layers, see the
131":ref:`dev-manual/common-tasks:understanding and creating layers`" 130":ref:`dev-manual/layers:understanding and creating layers`"
132section of the Yocto Project Development Tasks Manual. 131section of the Yocto Project Development Tasks Manual.
133 132
134Preparing Your Build Host to Work With BSP Layers 133Preparing Your Build Host to Work With BSP Layers
@@ -166,13 +165,14 @@ section.
166#. *Determine the BSP Layer You Want:* The Yocto Project supports many 165#. *Determine the BSP Layer You Want:* The Yocto Project supports many
167 BSPs, which are maintained in their own layers or in layers designed 166 BSPs, which are maintained in their own layers or in layers designed
168 to contain several BSPs. To get an idea of machine support through 167 to contain several BSPs. To get an idea of machine support through
169 BSP layers, you can look at the `index of 168 BSP layers, you can look at the
170 machines <&YOCTO_RELEASE_DL_URL;/machines>`__ for the release. 169 :yocto_dl:`index of machines </releases/yocto/&DISTRO_REL_LATEST_TAG;/machines>`
170 for the release.
171 171
172#. *Optionally Clone the meta-intel BSP Layer:* If your hardware is 172#. *Optionally Clone the meta-intel BSP Layer:* If your hardware is
173 based on current Intel CPUs and devices, you can leverage this BSP 173 based on current Intel CPUs and devices, you can leverage this BSP
174 layer. For details on the ``meta-intel`` BSP layer, see the layer's 174 layer. For details on the ``meta-intel`` BSP layer, see the layer's
175 :yocto_git:`README </meta-intel/tree/README>` file. 175 :yocto_git:`README </meta-intel/tree/README.md>` file.
176 176
177 #. *Navigate to Your Source Directory:* Typically, you set up the 177 #. *Navigate to Your Source Directory:* Typically, you set up the
178 ``meta-intel`` Git repository inside the :term:`Source Directory` (e.g. 178 ``meta-intel`` Git repository inside the :term:`Source Directory` (e.g.
@@ -193,7 +193,7 @@ section.
193 193
194 #. *Check Out the Proper Branch:* The branch you check out for 194 #. *Check Out the Proper Branch:* The branch you check out for
195 ``meta-intel`` must match the same branch you are using for the 195 ``meta-intel`` must match the same branch you are using for the
196 Yocto Project release (e.g. ``&DISTRO_NAME_NO_CAP;``): :: 196 Yocto Project release (e.g. ``&DISTRO_NAME_NO_CAP;``)::
197 197
198 $ cd meta-intel 198 $ cd meta-intel
199 $ git checkout -b &DISTRO_NAME_NO_CAP; remotes/origin/&DISTRO_NAME_NO_CAP; 199 $ git checkout -b &DISTRO_NAME_NO_CAP; remotes/origin/&DISTRO_NAME_NO_CAP;
@@ -204,7 +204,7 @@ section.
204 .. note:: 204 .. note::
205 205
206 To see the available branch names in a cloned repository, use the ``git 206 To see the available branch names in a cloned repository, use the ``git
207 branch -al`` command. See the 207 branch -a`` command. See the
208 ":ref:`dev-manual/start:checking out by branch in poky`" 208 ":ref:`dev-manual/start:checking out by branch in poky`"
209 section in the Yocto Project Development Tasks Manual for more 209 section in the Yocto Project Development Tasks Manual for more
210 information. 210 information.
@@ -216,7 +216,7 @@ section.
216 The process is identical to the process used for the ``meta-intel`` 216 The process is identical to the process used for the ``meta-intel``
217 layer except for the layer's name. For example, if you determine that 217 layer except for the layer's name. For example, if you determine that
218 your hardware most closely matches the ``meta-raspberrypi``, clone 218 your hardware most closely matches the ``meta-raspberrypi``, clone
219 that layer: :: 219 that layer::
220 220
221 $ git clone git://git.yoctoproject.org/meta-raspberrypi 221 $ git clone git://git.yoctoproject.org/meta-raspberrypi
222 Cloning into 'meta-raspberrypi'... 222 Cloning into 'meta-raspberrypi'...
@@ -229,7 +229,7 @@ section.
229 229
230#. *Initialize the Build Environment:* While in the root directory of 230#. *Initialize the Build Environment:* While in the root directory of
231 the Source Directory (i.e. ``poky``), run the 231 the Source Directory (i.e. ``poky``), run the
232 :ref:`ref-manual/structure:\`\`oe-init-build-env\`\`` environment 232 :ref:`ref-manual/structure:``oe-init-build-env``` environment
233 setup script to define the OpenEmbedded build environment on your 233 setup script to define the OpenEmbedded build environment on your
234 build host. :: 234 build host. ::
235 235
@@ -250,7 +250,7 @@ standardization of software support for hardware.
250The proposed form described in this section does have elements that are 250The proposed form described in this section does have elements that are
251specific to the OpenEmbedded build system. It is intended that 251specific to the OpenEmbedded build system. It is intended that
252developers can use this structure with other build systems besides the 252developers can use this structure with other build systems besides the
253OpenEmbedded build system. It is also intended that it will be be simple 253OpenEmbedded build system. It is also intended that it will be simple
254to extract information and convert it to other formats if required. The 254to extract information and convert it to other formats if required. The
255OpenEmbedded build system, through its standard :ref:`layers mechanism 255OpenEmbedded build system, through its standard :ref:`layers mechanism
256<overview-manual/yp-intro:the yocto project layer model>`, can 256<overview-manual/yp-intro:the yocto project layer model>`, can
@@ -267,7 +267,7 @@ maintain the distinction that the BSP layer, a build system, and tools
267are separate components that could be combined in certain end products. 267are separate components that could be combined in certain end products.
268 268
269Before looking at the recommended form for the directory structure 269Before looking at the recommended form for the directory structure
270inside a BSP layer, you should be aware that some requirements do exist 270inside a BSP layer, you should be aware that there are some requirements
271in order for a BSP layer to be considered compliant with the Yocto 271in order for a BSP layer to be considered compliant with the Yocto
272Project. For that list of requirements, see the 272Project. For that list of requirements, see the
273":ref:`bsp-guide/bsp:released bsp requirements`" section. 273":ref:`bsp-guide/bsp:released bsp requirements`" section.
@@ -289,7 +289,7 @@ individual BSPs could differ. ::
289 meta-bsp_root_name/recipes-kernel/linux/linux-yocto_kernel_rev.bbappend 289 meta-bsp_root_name/recipes-kernel/linux/linux-yocto_kernel_rev.bbappend
290 290
291Below is an example of the Raspberry Pi BSP layer that is available from 291Below is an example of the Raspberry Pi BSP layer that is available from
292the :yocto_git:`Source Respositories <>`: 292the :yocto_git:`Source Repositories <>`:
293 293
294.. code-block:: none 294.. code-block:: none
295 295
@@ -336,7 +336,7 @@ the :yocto_git:`Source Respositories <>`:
336 meta-raspberrypi/recipes-bsp/formfactor/formfactor 336 meta-raspberrypi/recipes-bsp/formfactor/formfactor
337 meta-raspberrypi/recipes-bsp/formfactor/formfactor/raspberrypi 337 meta-raspberrypi/recipes-bsp/formfactor/formfactor/raspberrypi
338 meta-raspberrypi/recipes-bsp/formfactor/formfactor/raspberrypi/machconfig 338 meta-raspberrypi/recipes-bsp/formfactor/formfactor/raspberrypi/machconfig
339 meta-raspberrypi/recipes-bsp/formfactor/formfactor_0.0.bbappend 339 meta-raspberrypi/recipes-bsp/formfactor/formfactor_%.bbappend
340 meta-raspberrypi/recipes-bsp/rpi-u-boot-src 340 meta-raspberrypi/recipes-bsp/rpi-u-boot-src
341 meta-raspberrypi/recipes-bsp/rpi-u-boot-src/files 341 meta-raspberrypi/recipes-bsp/rpi-u-boot-src/files
342 meta-raspberrypi/recipes-bsp/rpi-u-boot-src/files/boot.cmd.in 342 meta-raspberrypi/recipes-bsp/rpi-u-boot-src/files/boot.cmd.in
@@ -451,7 +451,7 @@ The following sections describe each part of the proposed BSP format.
451License Files 451License Files
452------------- 452-------------
453 453
454You can find these files in the BSP Layer at: :: 454You can find these files in the BSP Layer at::
455 455
456 meta-bsp_root_name/bsp_license_file 456 meta-bsp_root_name/bsp_license_file
457 457
@@ -463,13 +463,13 @@ requirements are handled with the ``COPYING.MIT`` file.
463Licensing files can be MIT, BSD, GPLv*, and so forth. These files are 463Licensing files can be MIT, BSD, GPLv*, and so forth. These files are
464recommended for the BSP but are optional and totally up to the BSP 464recommended for the BSP but are optional and totally up to the BSP
465developer. For information on how to maintain license compliance, see 465developer. For information on how to maintain license compliance, see
466the ":ref:`dev-manual/common-tasks:maintaining open source license compliance during your product's lifecycle`" 466the ":ref:`dev-manual/licenses:maintaining open source license compliance during your product's lifecycle`"
467section in the Yocto Project Development Tasks Manual. 467section in the Yocto Project Development Tasks Manual.
468 468
469README File 469README File
470----------- 470-----------
471 471
472You can find this file in the BSP Layer at: :: 472You can find this file in the BSP Layer at::
473 473
474 meta-bsp_root_name/README 474 meta-bsp_root_name/README
475 475
@@ -484,7 +484,7 @@ name of the BSP maintainer with his or her contact information.
484README.sources File 484README.sources File
485------------------- 485-------------------
486 486
487You can find this file in the BSP Layer at: :: 487You can find this file in the BSP Layer at::
488 488
489 meta-bsp_root_name/README.sources 489 meta-bsp_root_name/README.sources
490 490
@@ -503,7 +503,7 @@ used to generate the images that ship with the BSP.
503Pre-built User Binaries 503Pre-built User Binaries
504----------------------- 504-----------------------
505 505
506You can find these files in the BSP Layer at: :: 506You can find these files in the BSP Layer at::
507 507
508 meta-bsp_root_name/binary/bootable_images 508 meta-bsp_root_name/binary/bootable_images
509 509
@@ -526,7 +526,7 @@ information on the Metadata.
526Layer Configuration File 526Layer Configuration File
527------------------------ 527------------------------
528 528
529You can find this file in the BSP Layer at: :: 529You can find this file in the BSP Layer at::
530 530
531 meta-bsp_root_name/conf/layer.conf 531 meta-bsp_root_name/conf/layer.conf
532 532
@@ -550,7 +550,7 @@ template). ::
550 LAYERDEPENDS_bsp = "intel" 550 LAYERDEPENDS_bsp = "intel"
551 551
552To illustrate the string substitutions, here are the corresponding 552To illustrate the string substitutions, here are the corresponding
553statements from the Raspberry Pi ``conf/layer.conf`` file: :: 553statements from the Raspberry Pi ``conf/layer.conf`` file::
554 554
555 # We have a conf and classes directory, append to BBPATH 555 # We have a conf and classes directory, append to BBPATH
556 BBPATH .= ":${LAYERDIR}" 556 BBPATH .= ":${LAYERDIR}"
@@ -576,7 +576,7 @@ recognize the BSP.
576Hardware Configuration Options 576Hardware Configuration Options
577------------------------------ 577------------------------------
578 578
579You can find these files in the BSP Layer at: :: 579You can find these files in the BSP Layer at::
580 580
581 meta-bsp_root_name/conf/machine/*.conf 581 meta-bsp_root_name/conf/machine/*.conf
582 582
@@ -589,7 +589,7 @@ filenames correspond to the values to which users have set the
589 589
590These files define things such as the kernel package to use 590These files define things such as the kernel package to use
591(:term:`PREFERRED_PROVIDER` of 591(:term:`PREFERRED_PROVIDER` of
592:ref:`virtual/kernel <dev-manual/common-tasks:using virtual providers>`), 592:ref:`virtual/kernel <dev-manual/new-recipe:using virtual providers>`),
593the hardware drivers to include in different types of images, any 593the hardware drivers to include in different types of images, any
594special software components that are needed, any bootloader information, 594special software components that are needed, any bootloader information,
595and also any special image format requirements. 595and also any special image format requirements.
@@ -607,24 +607,24 @@ For example, many ``tune-*`` files (e.g. ``tune-arm1136jf-s.inc``,
607 607
608To use an include file, you simply include them in the machine 608To use an include file, you simply include them in the machine
609configuration file. For example, the Raspberry Pi BSP 609configuration file. For example, the Raspberry Pi BSP
610``raspberrypi3.conf`` contains the following statement: :: 610``raspberrypi3.conf`` contains the following statement::
611 611
612 include conf/machine/include/rpi-base.inc 612 include conf/machine/include/rpi-base.inc
613 613
614Miscellaneous BSP-Specific Recipe Files 614Miscellaneous BSP-Specific Recipe Files
615--------------------------------------- 615---------------------------------------
616 616
617You can find these files in the BSP Layer at: :: 617You can find these files in the BSP Layer at::
618 618
619 meta-bsp_root_name/recipes-bsp/* 619 meta-bsp_root_name/recipes-bsp/*
620 620
621This optional directory contains miscellaneous recipe files for the BSP. 621This optional directory contains miscellaneous recipe files for the BSP.
622Most notably would be the formfactor files. For example, in the 622Most notably would be the formfactor files. For example, in the
623Raspberry Pi BSP, there is the ``formfactor_0.0.bbappend`` file, which 623Raspberry Pi BSP, there is the ``formfactor_%.bbappend`` file, which
624is an append file used to augment the recipe that starts the build. 624is an append file used to augment the recipe that starts the build.
625Furthermore, there are machine-specific settings used during the build 625Furthermore, there are machine-specific settings used during the build
626that are defined by the ``machconfig`` file further down in the 626that are defined by the ``machconfig`` file further down in the
627directory. Here is the ``machconfig`` file for the Raspberry Pi BSP: :: 627directory. Here is the ``machconfig`` file for the Raspberry Pi BSP::
628 628
629 HAVE_TOUCHSCREEN=0 629 HAVE_TOUCHSCREEN=0
630 HAVE_KEYBOARD=1 630 HAVE_KEYBOARD=1
@@ -644,7 +644,7 @@ directory. Here is the ``machconfig`` file for the Raspberry Pi BSP: ::
644Display Support Files 644Display Support Files
645--------------------- 645---------------------
646 646
647You can find these files in the BSP Layer at: :: 647You can find these files in the BSP Layer at::
648 648
649 meta-bsp_root_name/recipes-graphics/* 649 meta-bsp_root_name/recipes-graphics/*
650 650
@@ -655,7 +655,7 @@ to support a display are kept here.
655Linux Kernel Configuration 655Linux Kernel Configuration
656-------------------------- 656--------------------------
657 657
658You can find these files in the BSP Layer at: :: 658You can find these files in the BSP Layer at::
659 659
660 meta-bsp_root_name/recipes-kernel/linux/linux*.bbappend 660 meta-bsp_root_name/recipes-kernel/linux/linux*.bbappend
661 meta-bsp_root_name/recipes-kernel/linux/*.bb 661 meta-bsp_root_name/recipes-kernel/linux/*.bb
@@ -674,21 +674,21 @@ to the kernel recipe by using a similarly named append file, which is
674located in the BSP Layer for your target device (e.g. the 674located in the BSP Layer for your target device (e.g. the
675``meta-bsp_root_name/recipes-kernel/linux`` directory). 675``meta-bsp_root_name/recipes-kernel/linux`` directory).
676 676
677Suppose you are using the ``linux-yocto_4.4.bb`` recipe to build the 677Suppose you are using the ``linux-yocto_6.12.bb`` recipe to build the
678kernel. In other words, you have selected the kernel in your 678kernel. In other words, you have selected the kernel in your
679``"bsp_root_name".conf`` file by adding 679``"bsp_root_name".conf`` file by adding
680:term:`PREFERRED_PROVIDER` and :term:`PREFERRED_VERSION` 680:term:`PREFERRED_PROVIDER` and :term:`PREFERRED_VERSION`
681statements as follows: :: 681statements as follows::
682 682
683 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" 683 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
684 PREFERRED_VERSION_linux-yocto ?= "4.4%" 684 PREFERRED_VERSION_linux-yocto ?= "6.12%"
685 685
686.. note:: 686.. note::
687 687
688 When the preferred provider is assumed by default, the ``PREFERRED_PROVIDER`` 688 When the preferred provider is assumed by default, the :term:`PREFERRED_PROVIDER`
689 statement does not appear in the ``"bsp_root_name".conf`` file. 689 statement does not appear in the ``"bsp_root_name".conf`` file.
690 690
691You would use the ``linux-yocto_4.4.bbappend`` file to append specific 691You would use the ``linux-yocto_6.12.bbappend`` file to append specific
692BSP settings to the kernel, thus configuring the kernel for your 692BSP settings to the kernel, thus configuring the kernel for your
693particular BSP. 693particular BSP.
694 694
@@ -698,14 +698,19 @@ in the Yocto Project Linux Kernel Development Manual.
698 698
699An alternate scenario is when you create your own kernel recipe for the 699An alternate scenario is when you create your own kernel recipe for the
700BSP. A good example of this is the Raspberry Pi BSP. If you examine the 700BSP. A good example of this is the Raspberry Pi BSP. If you examine the
701``recipes-kernel/linux`` directory you see the following: :: 701``recipes-kernel/linux`` directory in that layer you see the following
702Raspberry Pi-specific recipes and associated files::
702 703
704 files/
705 linux-raspberrypi_6.12.bb
706 linux-raspberrypi_6.1.bb
707 linux-raspberrypi_6.6.bb
703 linux-raspberrypi-dev.bb 708 linux-raspberrypi-dev.bb
704 linux-raspberrypi.inc 709 linux-raspberrypi.inc
705 linux-raspberrypi_4.14.bb 710 linux-raspberrypi-v7_6.12.bb
706 linux-raspberrypi_4.9.bb 711 linux-raspberrypi-v7_6.1.bb
707 712 linux-raspberrypi-v7_6.6.bb
708The directory contains three kernel recipes and a common include file. 713 linux-raspberrypi-v7.inc
709 714
710Developing a Board Support Package (BSP) 715Developing a Board Support Package (BSP)
711======================================== 716========================================
@@ -724,6 +729,7 @@ workflow.
724 729
725.. image:: figures/bsp-dev-flow.png 730.. image:: figures/bsp-dev-flow.png
726 :align: center 731 :align: center
732 :width: 70%
727 733
728#. *Set up Your Host Development System to Support Development Using the 734#. *Set up Your Host Development System to Support Development Using the
729 Yocto Project*: See the ":ref:`dev-manual/start:preparing the build host`" 735 Yocto Project*: See the ":ref:`dev-manual/start:preparing the build host`"
@@ -756,36 +762,20 @@ workflow.
756 OpenEmbedded build system knows about. For more information on 762 OpenEmbedded build system knows about. For more information on
757 layers, see the ":ref:`overview-manual/yp-intro:the yocto project layer model`" 763 layers, see the ":ref:`overview-manual/yp-intro:the yocto project layer model`"
758 section in the Yocto Project Overview and Concepts Manual. You can also 764 section in the Yocto Project Overview and Concepts Manual. You can also
759 reference the ":ref:`dev-manual/common-tasks:understanding and creating layers`" 765 reference the ":ref:`dev-manual/layers:understanding and creating layers`"
760 section in the Yocto Project Development Tasks Manual. For more 766 section in the Yocto Project Development Tasks Manual. For more
761 information on BSP layers, see the ":ref:`bsp-guide/bsp:bsp layers`" 767 information on BSP layers, see the ":ref:`bsp-guide/bsp:bsp layers`"
762 section. 768 section.
763 769
764 .. note:: 770 .. note::
765 771
766 - Four hardware reference BSPs exist that are part of the Yocto 772 - There are three hardware reference BSPs in the Yocto
767 Project release and are located in the ``poky/meta-yocto-bsp`` 773 Project release, located in the ``poky/meta-yocto-bsp``
768 BSP layer: 774 BSP layer:
769 775
770 - Texas Instruments Beaglebone (``beaglebone-yocto``) 776 - Texas Instruments Beaglebone (``beaglebone-yocto``)
771 777
772 - Ubiquiti Networks EdgeRouter Lite (``edgerouter``) 778 - Two generic IA platforms (``genericx86`` and ``genericx86-64``)
773
774 - Two general IA platforms (``genericx86`` and ``genericx86-64``)
775
776 - Three core Intel BSPs exist as part of the Yocto Project
777 release in the ``meta-intel`` layer:
778
779 - ``intel-core2-32``, which is a BSP optimized for the Core2
780 family of CPUs as well as all CPUs prior to the Silvermont
781 core.
782
783 - ``intel-corei7-64``, which is a BSP optimized for Nehalem
784 and later Core and Xeon CPUs as well as Silvermont and later
785 Atom CPUs, such as the Baytrail SoCs.
786
787 - ``intel-quark``, which is a BSP optimized for the Intel
788 Galileo gen1 & gen2 development boards.
789 779
790 When you set up a layer for a new BSP, you should follow a standard 780 When you set up a layer for a new BSP, you should follow a standard
791 layout. This layout is described in the ":ref:`bsp-guide/bsp:example filesystem layout`" 781 layout. This layout is described in the ":ref:`bsp-guide/bsp:example filesystem layout`"
@@ -815,7 +805,7 @@ workflow.
815 key configuration files are configured appropriately: the 805 key configuration files are configured appropriately: the
816 ``conf/local.conf`` and the ``conf/bblayers.conf`` file. You must 806 ``conf/local.conf`` and the ``conf/bblayers.conf`` file. You must
817 make the OpenEmbedded build system aware of your new layer. See the 807 make the OpenEmbedded build system aware of your new layer. See the
818 ":ref:`dev-manual/common-tasks:enabling your layer`" 808 ":ref:`dev-manual/layers:enabling your layer`"
819 section in the Yocto Project Development Tasks Manual for information 809 section in the Yocto Project Development Tasks Manual for information
820 on how to let the build system know about your new layer. 810 on how to let the build system know about your new layer.
821 811
@@ -832,10 +822,8 @@ workflow.
832Requirements and Recommendations for Released BSPs 822Requirements and Recommendations for Released BSPs
833================================================== 823==================================================
834 824
835Certain requirements exist for a released BSP to be considered compliant 825This section describes requirements and recommendations for a released
836with the Yocto Project. Additionally, recommendations also exist. This 826BSP to be considered compliant with the Yocto Project.
837section describes the requirements and recommendations for released
838BSPs.
839 827
840Released BSP Requirements 828Released BSP Requirements
841------------------------- 829-------------------------
@@ -846,7 +834,7 @@ Before looking at BSP requirements, you should consider the following:
846 layer that can be added to the Yocto Project. For guidelines on 834 layer that can be added to the Yocto Project. For guidelines on
847 creating a layer that meets these base requirements, see the 835 creating a layer that meets these base requirements, see the
848 ":ref:`bsp-guide/bsp:bsp layers`" section in this manual and the 836 ":ref:`bsp-guide/bsp:bsp layers`" section in this manual and the
849 ":ref:`dev-manual/common-tasks:understanding and creating layers`" 837 ":ref:`dev-manual/layers:understanding and creating layers`"
850 section in the Yocto Project Development Tasks Manual. 838 section in the Yocto Project Development Tasks Manual.
851 839
852- The requirements in this section apply regardless of how you package 840- The requirements in this section apply regardless of how you package
@@ -864,12 +852,11 @@ Before looking at BSP requirements, you should consider the following:
864 852
865- It is not required that specific packages or package modifications 853- It is not required that specific packages or package modifications
866 exist in the BSP layer, beyond the requirements for general 854 exist in the BSP layer, beyond the requirements for general
867 compliance with the Yocto Project. For example, no requirement exists 855 compliance with the Yocto Project. For example, there is no requirement
868 dictating that a specific kernel or kernel version be used in a given 856 dictating that a specific kernel or kernel version be used in a given
869 BSP. 857 BSP.
870 858
871Following are the requirements for a released BSP that conform to the 859The requirements for a released BSP that conform to the Yocto Project are:
872Yocto Project:
873 860
874- *Layer Name:* The BSP must have a layer name that follows the Yocto 861- *Layer Name:* The BSP must have a layer name that follows the Yocto
875 Project standards. For information on BSP layer names, see the 862 Project standards. For information on BSP layer names, see the
@@ -879,7 +866,7 @@ Yocto Project:
879 your BSP layer as listed in the ``recipes.txt`` file, which is found 866 your BSP layer as listed in the ``recipes.txt`` file, which is found
880 in ``poky/meta`` directory of the :term:`Source Directory` 867 in ``poky/meta`` directory of the :term:`Source Directory`
881 or in the OpenEmbedded-Core Layer (``openembedded-core``) at 868 or in the OpenEmbedded-Core Layer (``openembedded-core``) at
882 https://git.openembedded.org/openembedded-core/tree/meta. 869 :oe_git:`/openembedded-core/tree/meta`.
883 870
884 You should place recipes (``*.bb`` files) and recipe modifications 871 You should place recipes (``*.bb`` files) and recipe modifications
885 (``*.bbappend`` files) into ``recipes-*`` subdirectories by 872 (``*.bbappend`` files) into ``recipes-*`` subdirectories by
@@ -894,13 +881,13 @@ Yocto Project:
894 ``recipes-*`` subdirectories specific to the recipe's function, or 881 ``recipes-*`` subdirectories specific to the recipe's function, or
895 within a subdirectory containing a set of closely-related recipes. 882 within a subdirectory containing a set of closely-related recipes.
896 The recipes themselves should follow the general guidelines for 883 The recipes themselves should follow the general guidelines for
897 recipes used in the Yocto Project found in the ":oe_wiki:`OpenEmbedded 884 recipes found in the ":doc:`/contributor-guide/recipe-style-guide`"
898 Style Guide </Styleguide>`". 885 in the Yocto Project and OpenEmbedded Contributor Guide.
899 886
900- *License File:* You must include a license file in the 887- *License File:* You must include a license file in the
901 ``meta-bsp_root_name`` directory. This license covers the BSP 888 ``meta-bsp_root_name`` directory. This license covers the BSP
902 Metadata as a whole. You must specify which license to use since no 889 Metadata as a whole. You must specify which license to use since no
903 default license exists when one is not specified. See the 890 default license exists. See the
904 :yocto_git:`COPYING.MIT </meta-raspberrypi/tree/COPYING.MIT>` 891 :yocto_git:`COPYING.MIT </meta-raspberrypi/tree/COPYING.MIT>`
905 file for the Raspberry Pi BSP in the ``meta-raspberrypi`` BSP layer 892 file for the Raspberry Pi BSP in the ``meta-raspberrypi`` BSP layer
906 as an example. 893 as an example.
@@ -928,8 +915,8 @@ Yocto Project:
928 - The name and contact information for the BSP layer maintainer. 915 - The name and contact information for the BSP layer maintainer.
929 This is the person to whom patches and questions should be sent. 916 This is the person to whom patches and questions should be sent.
930 For information on how to find the right person, see the 917 For information on how to find the right person, see the
931 ":ref:`dev-manual/common-tasks:submitting a change to the yocto project`" 918 :doc:`/contributor-guide/submit-changes` section in the Yocto Project and
932 section in the Yocto Project Development Tasks Manual. 919 OpenEmbedded Contributor Guide.
933 920
934 - Instructions on how to build the BSP using the BSP layer. 921 - Instructions on how to build the BSP using the BSP layer.
935 922
@@ -973,7 +960,7 @@ Yocto Project:
973Released BSP Recommendations 960Released BSP Recommendations
974---------------------------- 961----------------------------
975 962
976Following are recommendations for released BSPs that conform to the 963Here are recommendations for released BSPs that conform to the
977Yocto Project: 964Yocto Project:
978 965
979- *Bootable Images:* Released BSPs can contain one or more bootable 966- *Bootable Images:* Released BSPs can contain one or more bootable
@@ -1013,9 +1000,9 @@ If you plan on customizing a recipe for a particular BSP, you need to do
1013the following: 1000the following:
1014 1001
1015- Create a ``*.bbappend`` file for the modified recipe. For information on using 1002- Create a ``*.bbappend`` file for the modified recipe. For information on using
1016 append files, see the ":ref:`dev-manual/common-tasks:using 1003 append files, see the
1017 .bbappend files in your layer`" section in the Yocto Project Development 1004 ":ref:`dev-manual/layers:appending other layers metadata with your layer`"
1018 Tasks Manual. 1005 section in the Yocto Project Development Tasks Manual.
1019 1006
1020- Ensure your directory structure in the BSP layer that supports your 1007- Ensure your directory structure in the BSP layer that supports your
1021 machine is such that the OpenEmbedded build system can find it. See 1008 machine is such that the OpenEmbedded build system can find it. See
@@ -1035,29 +1022,29 @@ the following:
1035 that additional hierarchy and the files would obviously not be able 1022 that additional hierarchy and the files would obviously not be able
1036 to reside in a machine-specific directory. 1023 to reside in a machine-specific directory.
1037 1024
1038Following is a specific example to help you better understand the 1025Here is a specific example to help you better understand the
1039process. This example customizes customizes a recipe by adding a 1026process. This example customizes a recipe by adding a
1040BSP-specific configuration file named ``interfaces`` to the 1027BSP-specific configuration file named ``interfaces`` to the
1041``init-ifupdown_1.0.bb`` recipe for machine "xyz" where the BSP layer 1028``init-ifupdown_1.0.bb`` recipe for machine "xyz" where the BSP layer
1042also supports several other machines: 1029also supports several other machines:
1043 1030
1044#. Edit the ``init-ifupdown_1.0.bbappend`` file so that it contains the 1031#. Edit the ``init-ifupdown_1.0.bbappend`` file so that it contains the
1045 following: :: 1032 following::
1046 1033
1047 FILESEXTRAPATHS_prepend := "${THISDIR}/files:" 1034 FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
1048 1035
1049 The append file needs to be in the ``meta-xyz/recipes-core/init-ifupdown`` 1036 The append file needs to be in the ``meta-xyz/recipes-core/init-ifupdown``
1050 directory. 1037 directory.
1051 1038
1052#. Create and place the new ``interfaces`` configuration file in the 1039#. Create and place the new ``interfaces`` configuration file in the
1053 BSP's layer here: :: 1040 BSP's layer here::
1054 1041
1055 meta-xyz/recipes-core/init-ifupdown/files/xyz-machine-one/interfaces 1042 meta-xyz/recipes-core/init-ifupdown/files/xyz-machine-one/interfaces
1056 1043
1057 .. note:: 1044 .. note::
1058 1045
1059 If the ``meta-xyz`` layer did not support multiple machines, you would place 1046 If the ``meta-xyz`` layer did not support multiple machines, you would place
1060 the interfaces configuration file in the layer here: :: 1047 the interfaces configuration file in the layer here::
1061 1048
1062 meta-xyz/recipes-core/init-ifupdown/files/interfaces 1049 meta-xyz/recipes-core/init-ifupdown/files/interfaces
1063 1050
@@ -1107,31 +1094,31 @@ system requirements.
1107 unsuitable functionality or quality, you can use an encumbered 1094 unsuitable functionality or quality, you can use an encumbered
1108 version. 1095 version.
1109 1096
1110A couple different methods exist within the OpenEmbedded build system to 1097There are two different methods within the OpenEmbedded build system to
1111satisfy the licensing requirements for an encumbered BSP. The following 1098satisfy the licensing requirements for an encumbered BSP. The following
1112list describes them in order of preference: 1099list describes them in order of preference:
1113 1100
1114#. *Use the LICENSE_FLAGS Variable to Define the Recipes that Have Commercial or 1101#. *Use the LICENSE_FLAGS Variable to Define the Recipes that Have Commercial or
1115 Other Types of Specially-Licensed Packages:* For each of those recipes, you can 1102 Other Types of Specially-Licensed Packages:* For each of those recipes, you can
1116 specify a matching license string in a ``local.conf`` variable named 1103 specify a matching license string in a ``local.conf`` variable named
1117 :term:`LICENSE_FLAGS_WHITELIST`. 1104 :term:`LICENSE_FLAGS_ACCEPTED`.
1118 Specifying the matching license string signifies that you agree to 1105 Specifying the matching license string signifies that you agree to
1119 the license. Thus, the build system can build the corresponding 1106 the license. Thus, the build system can build the corresponding
1120 recipe and include the component in the image. See the 1107 recipe and include the component in the image. See the
1121 ":ref:`dev-manual/common-tasks:enabling commercially licensed recipes`" 1108 ":ref:`dev-manual/licenses:enabling commercially licensed recipes`"
1122 section in the Yocto Project Development Tasks Manual for details on 1109 section in the Yocto Project Development Tasks Manual for details on
1123 how to use these variables. 1110 how to use these variables.
1124 1111
1125 If you build as you normally would, without specifying any recipes in 1112 If you build as you normally would, without specifying any recipes in
1126 the ``LICENSE_FLAGS_WHITELIST``, the build stops and provides you 1113 the :term:`LICENSE_FLAGS_ACCEPTED` variable, the build stops and provides
1127 with the list of recipes that you have tried to include in the image 1114 you with the list of recipes that you have tried to include in the image
1128 that need entries in the ``LICENSE_FLAGS_WHITELIST``. Once you enter 1115 that need entries in the :term:`LICENSE_FLAGS_ACCEPTED` variable. Once you
1129 the appropriate license flags into the whitelist, restart the build 1116 enter the appropriate license flags into it, restart the build to continue
1130 to continue where it left off. During the build, the prompt will not 1117 where it left off. During the build, the prompt will not appear again since
1131 appear again since you have satisfied the requirement. 1118 you have satisfied the requirement.
1132 1119
1133 Once the appropriate license flags are on the white list in the 1120 Once the appropriate license flags are on the white list in the
1134 ``LICENSE_FLAGS_WHITELIST`` variable, you can build the encumbered 1121 :term:`LICENSE_FLAGS_ACCEPTED` variable, you can build the encumbered
1135 image with no change at all to the normal build process. 1122 image with no change at all to the normal build process.
1136 1123
1137#. *Get a Pre-Built Version of the BSP:* You can get this type of BSP by 1124#. *Get a Pre-Built Version of the BSP:* You can get this type of BSP by
@@ -1144,7 +1131,7 @@ list describes them in order of preference:
1144 click-through license agreements presented by the website. If you 1131 click-through license agreements presented by the website. If you
1145 want to build the image yourself using the recipes contained within 1132 want to build the image yourself using the recipes contained within
1146 the BSP tarball, you will still need to create an appropriate 1133 the BSP tarball, you will still need to create an appropriate
1147 ``LICENSE_FLAGS_WHITELIST`` to match the encumbered recipes in the 1134 :term:`LICENSE_FLAGS_ACCEPTED` to match the encumbered recipes in the
1148 BSP. 1135 BSP.
1149 1136
1150.. note:: 1137.. note::
@@ -1170,7 +1157,7 @@ Use these steps to create a BSP layer:
1170 ``create-layer`` subcommand to create a new general layer. For 1157 ``create-layer`` subcommand to create a new general layer. For
1171 instructions on how to create a general layer using the 1158 instructions on how to create a general layer using the
1172 ``bitbake-layers`` script, see the 1159 ``bitbake-layers`` script, see the
1173 ":ref:`dev-manual/common-tasks:creating a general layer using the \`\`bitbake-layers\`\` script`" 1160 ":ref:`dev-manual/layers:creating a general layer using the \`\`bitbake-layers\`\` script`"
1174 section in the Yocto Project Development Tasks Manual. 1161 section in the Yocto Project Development Tasks Manual.
1175 1162
1176- *Create a Layer Configuration File:* Every layer needs a layer 1163- *Create a Layer Configuration File:* Every layer needs a layer
@@ -1180,22 +1167,22 @@ Use these steps to create a BSP layer:
1180 :yocto_git:`Source Repositories <>`. To get examples of what you need 1167 :yocto_git:`Source Repositories <>`. To get examples of what you need
1181 in your configuration file, locate a layer (e.g. "meta-ti") and 1168 in your configuration file, locate a layer (e.g. "meta-ti") and
1182 examine the 1169 examine the
1183 :yocto_git:`local.conf </meta-ti/tree/conf/layer.conf>` 1170 :yocto_git:`local.conf </meta-ti/tree/meta-ti-bsp/conf/layer.conf>`
1184 file. 1171 file.
1185 1172
1186- *Create a Machine Configuration File:* Create a 1173- *Create a Machine Configuration File:* Create a
1187 ``conf/machine/bsp_root_name.conf`` file. See 1174 ``conf/machine/bsp_root_name.conf`` file. See
1188 :yocto_git:`meta-yocto-bsp/conf/machine </poky/tree/meta-yocto-bsp/conf/machine>` 1175 :yocto_git:`meta-yocto-bsp/conf/machine </poky/tree/meta-yocto-bsp/conf/machine>`
1189 for sample ``bsp_root_name.conf`` files. Other samples such as 1176 for sample ``bsp_root_name.conf`` files. There are other samples such as
1190 :yocto_git:`meta-ti </meta-ti/tree/conf/machine>` 1177 :yocto_git:`meta-ti </meta-ti/tree/meta-ti-bsp/conf/machine>`
1191 and 1178 and
1192 :yocto_git:`meta-freescale </meta-freescale/tree/conf/machine>` 1179 :yocto_git:`meta-freescale </meta-freescale/tree/conf/machine>`
1193 exist from other vendors that have more specific machine and tuning 1180 from other vendors that have more specific machine and tuning
1194 examples. 1181 examples.
1195 1182
1196- *Create a Kernel Recipe:* Create a kernel recipe in 1183- *Create a Kernel Recipe:* Create a kernel recipe in
1197 ``recipes-kernel/linux`` by either using a kernel append file or a 1184 ``recipes-kernel/linux`` by either using a kernel append file or a
1198 new custom kernel recipe file (e.g. ``yocto-linux_4.12.bb``). The BSP 1185 new custom kernel recipe file (e.g. ``linux-yocto_6.12.bb``). The BSP
1199 layers mentioned in the previous step also contain different kernel 1186 layers mentioned in the previous step also contain different kernel
1200 examples. See the ":ref:`kernel-dev/common:modifying an existing recipe`" 1187 examples. See the ":ref:`kernel-dev/common:modifying an existing recipe`"
1201 section in the Yocto Project Linux Kernel Development Manual for 1188 section in the Yocto Project Linux Kernel Development Manual for
@@ -1210,7 +1197,7 @@ BSP Layer Configuration Example
1210------------------------------- 1197-------------------------------
1211 1198
1212The layer's ``conf`` directory contains the ``layer.conf`` configuration 1199The layer's ``conf`` directory contains the ``layer.conf`` configuration
1213file. In this example, the ``conf/layer.conf`` is the following: :: 1200file. In this example, the ``conf/layer.conf`` file is the following::
1214 1201
1215 # We have a conf and classes directory, add to BBPATH 1202 # We have a conf and classes directory, add to BBPATH
1216 BBPATH .= ":${LAYERDIR}" 1203 BBPATH .= ":${LAYERDIR}"
@@ -1230,7 +1217,7 @@ configuration files is to examine various files for BSP from the
1230:yocto_git:`Source Repositories <>`. 1217:yocto_git:`Source Repositories <>`.
1231 1218
1232For a detailed description of this particular layer configuration file, 1219For a detailed description of this particular layer configuration file,
1233see ":ref:`step 3 <dev-manual/common-tasks:creating your own layer>`" 1220see ":ref:`step 3 <dev-manual/layers:creating your own layer>`"
1234in the discussion that describes how to create layers in the Yocto 1221in the discussion that describes how to create layers in the Yocto
1235Project Development Tasks Manual. 1222Project Development Tasks Manual.
1236 1223
@@ -1241,8 +1228,8 @@ As mentioned earlier in this section, the existence of a machine
1241configuration file is what makes a layer a BSP layer as compared to a 1228configuration file is what makes a layer a BSP layer as compared to a
1242general or kernel layer. 1229general or kernel layer.
1243 1230
1244One or more machine configuration files exist in the 1231There are one or more machine configuration files in the
1245``bsp_layer/conf/machine/`` directory of the layer: :: 1232``bsp_layer/conf/machine/`` directory of the layer::
1246 1233
1247 bsp_layer/conf/machine/machine1\.conf 1234 bsp_layer/conf/machine/machine1\.conf
1248 bsp_layer/conf/machine/machine2\.conf 1235 bsp_layer/conf/machine/machine2\.conf
@@ -1251,50 +1238,63 @@ One or more machine configuration files exist in the
1251 1238
1252For example, the machine configuration file for the `BeagleBone and 1239For example, the machine configuration file for the `BeagleBone and
1253BeagleBone Black development boards <https://beagleboard.org/bone>`__ is 1240BeagleBone Black development boards <https://beagleboard.org/bone>`__ is
1254located in the layer ``poky/meta-yocto-bsp/conf/machine`` and is named 1241located in :yocto_git:`poky/meta-yocto-bsp/conf/machine/beaglebone-yocto.conf
1255``beaglebone-yocto.conf``: :: 1242</poky/tree/meta-yocto-bsp/conf/machine/beaglebone-yocto.conf>`::
1256 1243
1257 #@TYPE: Machine 1244 #@TYPE: Machine
1258 #@NAME: Beaglebone-yocto machine 1245 #@NAME: Beaglebone-yocto machine
1259 #@DESCRIPTION: Reference machine configuration for http://beagleboard.org/bone and http://beagleboard.org/black boards 1246 #@DESCRIPTION: Reference machine configuration for http://beagleboard.org/bone and http://beagleboard.org/black boards
1260 1247
1261 PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg" 1248 PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
1262 XSERVER ?= "xserver-xorg \
1263 xf86-video-modesetting \
1264 "
1265 1249
1266 MACHINE_EXTRA_RRECOMMENDS = "kernel-modules kernel-devicetree" 1250 MACHINE_EXTRA_RRECOMMENDS = "kernel-modules"
1267 1251
1268 EXTRA_IMAGEDEPENDS += "u-boot" 1252 EXTRA_IMAGEDEPENDS += "virtual/bootloader"
1269 1253
1270 DEFAULTTUNE ?= "cortexa8hf-neon" 1254 DEFAULTTUNE ?= "cortexa8hf-neon"
1271 include conf/machine/include/tune-cortexa8.inc 1255 include conf/machine/include/arm/armv7a/tune-cortexa8.inc
1272 1256
1273 IMAGE_FSTYPES += "tar.bz2 jffs2 wic wic.bmap" 1257 IMAGE_FSTYPES += "tar.bz2 jffs2 wic wic.bmap"
1274 EXTRA_IMAGECMD_jffs2 = "-lnp " 1258 EXTRA_IMAGECMD:jffs2 = "-lnp "
1275 WKS_FILE ?= "beaglebone-yocto.wks" 1259 WKS_FILE ?= "beaglebone-yocto.wks"
1276 IMAGE_INSTALL_append = " kernel-devicetree kernel-image-zimage" 1260 MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "kernel-image kernel-devicetree"
1277 do_image_wic[depends] += "mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot" 1261 do_image_wic[depends] += "mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot virtual/bootloader:do_deploy"
1278 1262
1279 SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyO0" 1263 SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyO0 115200;ttyAMA0"
1280 SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
1281 1264
1282 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" 1265 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
1283 PREFERRED_VERSION_linux-yocto ?= "5.0%" 1266 PREFERRED_VERSION_linux-yocto ?= "6.12%"
1284 1267
1285 KERNEL_IMAGETYPE = "zImage" 1268 KERNEL_IMAGETYPE = "zImage"
1286 KERNEL_DEVICETREE = "am335x-bone.dtb am335x-boneblack.dtb am335x-bonegreen.dtb" 1269 DTB_FILES = "am335x-bone.dtb am335x-boneblack.dtb am335x-bonegreen.dtb"
1287 KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_ENTRYPOINT}" 1270 KERNEL_DEVICETREE = '${@' '.join('ti/omap/%s' % d for d in '${DTB_FILES}'.split())}'
1271
1272 PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot"
1288 1273
1289 SPL_BINARY = "MLO" 1274 SPL_BINARY = "MLO"
1290 UBOOT_SUFFIX = "img" 1275 UBOOT_SUFFIX = "img"
1291 UBOOT_MACHINE = "am335x_evm_defconfig" 1276 UBOOT_MACHINE = "am335x_evm_defconfig"
1292 UBOOT_ENTRYPOINT = "0x80008000"
1293 UBOOT_LOADADDRESS = "0x80008000"
1294 1277
1295 MACHINE_FEATURES = "usbgadget usbhost vfat alsa" 1278 MACHINE_FEATURES = "usbgadget usbhost vfat alsa"
1296 1279
1297 IMAGE_BOOT_FILES ?= "u-boot.${UBOOT_SUFFIX} MLO zImage am335x-bone.dtb am335x-boneblack.dtb am335x-bonegreen.dtb" 1280 IMAGE_BOOT_FILES ?= "u-boot.${UBOOT_SUFFIX} ${SPL_BINARY} ${KERNEL_IMAGETYPE} ${DTB_FILES}"
1281
1282 # support runqemu
1283 EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native"
1284 IMAGE_CLASSES += "qemuboot"
1285 QB_DEFAULT_FSTYPE = "wic"
1286 QB_FSINFO = "wic:no-kernel-in-fs"
1287 QB_KERNEL_ROOT = "/dev/vda2"
1288 QB_SYSTEM_NAME = "qemu-system-arm"
1289 QB_MACHINE = "-machine virt"
1290 QB_CPU = "-cpu cortex-a15"
1291 QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0 systemd.mask=systemd-networkd"
1292 QB_OPT_APPEND = "-device virtio-rng-device"
1293 QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"
1294 QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@"
1295 QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0"
1296 QB_SERIAL_OPT = ""
1297 QB_TCPSERIAL_OPT = "-device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon"
1298 1298
1299The variables used to configure the machine define machine-specific properties; for 1299The variables used to configure the machine define machine-specific properties; for
1300example, machine-dependent packages, machine tunings, the type of kernel 1300example, machine-dependent packages, machine tunings, the type of kernel
@@ -1311,14 +1311,9 @@ Project Reference Manual.
1311- :term:`PREFERRED_PROVIDER_virtual/xserver <PREFERRED_PROVIDER>`: 1311- :term:`PREFERRED_PROVIDER_virtual/xserver <PREFERRED_PROVIDER>`:
1312 The recipe that provides "virtual/xserver" when more than one 1312 The recipe that provides "virtual/xserver" when more than one
1313 provider is found. In this case, the recipe that provides 1313 provider is found. In this case, the recipe that provides
1314 "virtual/xserver" is "xserver-xorg", which exists in 1314 "virtual/xserver" is "xserver-xorg", available in
1315 ``poky/meta/recipes-graphics/xorg-xserver``. 1315 ``poky/meta/recipes-graphics/xorg-xserver``.
1316 1316
1317- :term:`XSERVER`: The packages that
1318 should be installed to provide an X server and drivers for the
1319 machine. In this example, the "xserver-xorg" and
1320 "xf86-video-modesetting" are installed.
1321
1322- :term:`MACHINE_EXTRA_RRECOMMENDS`: 1317- :term:`MACHINE_EXTRA_RRECOMMENDS`:
1323 A list of machine-dependent packages not essential for booting the 1318 A list of machine-dependent packages not essential for booting the
1324 image. Thus, the build does not fail if the packages do not exist. 1319 image. Thus, the build does not fail if the packages do not exist.
@@ -1326,7 +1321,7 @@ Project Reference Manual.
1326 1321
1327 .. tip:: 1322 .. tip::
1328 1323
1329 Many ``MACHINE*`` variables exist that help you configure a particular piece 1324 There are many ``MACHINE*`` variables that help you configure a particular piece
1330 of hardware. 1325 of hardware.
1331 1326
1332- :term:`EXTRA_IMAGEDEPENDS`: 1327- :term:`EXTRA_IMAGEDEPENDS`:
@@ -1336,17 +1331,20 @@ Project Reference Manual.
1336 needed in the root filesystem. In this case, the U-Boot recipe must 1331 needed in the root filesystem. In this case, the U-Boot recipe must
1337 be built for the image. 1332 be built for the image.
1338 1333
1334 At the end of the file, we also use this setting to implement
1335 ``runqemu`` support on the host machine.
1336
1339- :term:`DEFAULTTUNE`: Machines 1337- :term:`DEFAULTTUNE`: Machines
1340 use tunings to optimize machine, CPU, and application performance. 1338 use tunings to optimize machine, CPU, and application performance.
1341 These features, which are collectively known as "tuning features", 1339 These features --- collectively known as "tuning features" ---
1342 exist in the :term:`OpenEmbedded-Core (OE-Core)` layer (e.g. 1340 are set in the :term:`OpenEmbedded-Core (OE-Core)` layer. In this
1343 ``poky/meta/conf/machine/include``). In this example, the default 1341 example, the default tuning file is :oe_git:`tune-cortexa8
1344 tuning file is "cortexa8hf-neon". 1342 </openembedded-core/tree/meta/conf/machine/include/arm/armv7a/tune-cortexa8.inc>`.
1345 1343
1346 .. note:: 1344 .. note::
1347 1345
1348 The include statement that pulls in the 1346 The include statement that pulls in the
1349 ``conf/machine/include/tune-cortexa8.inc`` file provides many tuning 1347 ``conf/machine/include/arm/tune-cortexa8.inc`` file provides many tuning
1350 possibilities. 1348 possibilities.
1351 1349
1352- :term:`IMAGE_FSTYPES`: The 1350- :term:`IMAGE_FSTYPES`: The
@@ -1357,25 +1355,18 @@ Project Reference Manual.
1357- :term:`EXTRA_IMAGECMD`: 1355- :term:`EXTRA_IMAGECMD`:
1358 Specifies additional options for image creation commands. In this 1356 Specifies additional options for image creation commands. In this
1359 example, the "-lnp " option is used when creating the 1357 example, the "-lnp " option is used when creating the
1360 `JFFS2 <https://en.wikipedia.org/wiki/JFFS2>`__ image. 1358 :wikipedia:`JFFS2 <JFFS2>` image.
1361 1359
1362- :term:`WKS_FILE`: The location of 1360- :term:`WKS_FILE`: The location of
1363 the :ref:`Wic kickstart <ref-manual/kickstart:openembedded kickstart (\`\`.wks\`\`) reference>` file used 1361 the :ref:`Wic kickstart <ref-manual/kickstart:openembedded kickstart (\`\`.wks\`\`) reference>` file used
1364 by the OpenEmbedded build system to create a partitioned image 1362 by the OpenEmbedded build system to create a partitioned image.
1365 (image.wic).
1366
1367- :term:`IMAGE_INSTALL`:
1368 Specifies packages to install into an image through the
1369 :ref:`image <ref-classes-image>` class. Recipes
1370 use the ``IMAGE_INSTALL`` variable.
1371 1363
1372- ``do_image_wic[depends]``: A task that is constructed during the 1364- ``do_image_wic[depends]``: A task that is constructed during the
1373 build. In this example, the task depends on specific tools in order 1365 build. In this example, the task depends on specific tools in order
1374 to create the sysroot when building a Wic image. 1366 to create the sysroot when building a Wic image.
1375 1367
1376- :term:`SERIAL_CONSOLES`: 1368- :term:`SERIAL_CONSOLES`:
1377 Defines a serial console (TTY) to enable using getty. In this case, 1369 Defines one or more serial consoles (TTYs) to enable using getty.
1378 the baud rate is "115200" and the device name is "ttyO0".
1379 1370
1380- :term:`PREFERRED_PROVIDER_virtual/kernel <PREFERRED_PROVIDER>`: 1371- :term:`PREFERRED_PROVIDER_virtual/kernel <PREFERRED_PROVIDER>`:
1381 Specifies the recipe that provides "virtual/kernel" when more than 1372 Specifies the recipe that provides "virtual/kernel" when more than
@@ -1385,7 +1376,7 @@ Project Reference Manual.
1385 1376
1386- :term:`PREFERRED_VERSION_linux-yocto <PREFERRED_VERSION>`: 1377- :term:`PREFERRED_VERSION_linux-yocto <PREFERRED_VERSION>`:
1387 Defines the version of the recipe used to build the kernel, which is 1378 Defines the version of the recipe used to build the kernel, which is
1388 "5.0" in this case. 1379 "6.12" in this case.
1389 1380
1390- :term:`KERNEL_IMAGETYPE`: 1381- :term:`KERNEL_IMAGETYPE`:
1391 The type of kernel to build for the device. In this case, the 1382 The type of kernel to build for the device. In this case, the
@@ -1407,7 +1398,7 @@ Project Reference Manual.
1407 1398
1408 The BeagleBone development board requires an SPL to boot and that SPL 1399 The BeagleBone development board requires an SPL to boot and that SPL
1409 file type must be MLO. Consequently, the machine configuration needs 1400 file type must be MLO. Consequently, the machine configuration needs
1410 to define ``SPL_BINARY`` as ``MLO``. 1401 to define :term:`SPL_BINARY` as ``MLO``.
1411 1402
1412 .. note:: 1403 .. note::
1413 1404
@@ -1427,12 +1418,6 @@ Project Reference Manual.
1427 Specifies the value passed on the make command line when building 1418 Specifies the value passed on the make command line when building
1428 a U-Boot image. 1419 a U-Boot image.
1429 1420
1430 - :term:`UBOOT_ENTRYPOINT`:
1431 Specifies the entry point for the U-Boot image.
1432
1433 - :term:`UBOOT_LOADADDRESS`:
1434 Specifies the load address for the U-Boot image.
1435
1436- :term:`MACHINE_FEATURES`: 1421- :term:`MACHINE_FEATURES`:
1437 Specifies the list of hardware features the BeagleBone device is 1422 Specifies the list of hardware features the BeagleBone device is
1438 capable of supporting. In this case, the device supports "usbgadget 1423 capable of supporting. In this case, the device supports "usbgadget
@@ -1447,42 +1432,38 @@ BSP Kernel Recipe Example
1447------------------------- 1432-------------------------
1448 1433
1449The kernel recipe used to build the kernel image for the BeagleBone 1434The kernel recipe used to build the kernel image for the BeagleBone
1450device was established in the machine configuration: :: 1435device was established in the machine configuration::
1451 1436
1452 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" 1437 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
1453 PREFERRED_VERSION_linux-yocto ?= "5.0%" 1438 PREFERRED_VERSION_linux-yocto ?= "6.1%"
1454 1439
1455The ``meta-yocto-bsp/recipes-kernel/linux`` directory in the layer contains 1440The ``meta-yocto-bsp/recipes-kernel/linux`` directory in the layer contains
1456metadata used to build the kernel. In this case, a kernel append file 1441metadata used to build the kernel. In this case, a kernel append file
1457(i.e. ``linux-yocto_5.0.bbappend``) is used to override an established 1442(i.e. ``linux-yocto_6.1.bbappend``) is used to override an established
1458kernel recipe (i.e. ``linux-yocto_5.0.bb``), which is located in 1443kernel recipe (i.e. ``linux-yocto_6.1.bb``), which is located in
1459:yocto_git:`/poky/tree/meta/recipes-kernel/linux`. 1444:yocto_git:`/poky/tree/meta/recipes-kernel/linux`.
1460 1445
1461Following is the contents of the append file: :: 1446The contents of the append file are::
1462 1447
1463 KBRANCH_genericx86 = "v5.0/standard/base" 1448 KBRANCH:genericx86 = "v6.1/standard/base"
1464 KBRANCH_genericx86-64 = "v5.0/standard/base" 1449 KBRANCH:genericx86-64 = "v6.1/standard/base"
1465 KBRANCH_edgerouter = "v5.0/standard/edgerouter" 1450 KBRANCH:beaglebone-yocto = "v6.1/standard/beaglebone"
1466 KBRANCH_beaglebone-yocto = "v5.0/standard/beaglebone"
1467 1451
1468 KMACHINE_genericx86 ?= "common-pc" 1452 KMACHINE:genericx86 ?= "common-pc"
1469 KMACHINE_genericx86-64 ?= "common-pc-64" 1453 KMACHINE:genericx86-64 ?= "common-pc-64"
1470 KMACHINE_beaglebone-yocto ?= "beaglebone" 1454 KMACHINE:beaglebone-yocto ?= "beaglebone"
1471 1455
1472 SRCREV_machine_genericx86 ?= "3df4aae6074e94e794e27fe7f17451d9353cdf3d" 1456 SRCREV_machine:genericx86 ?= "6ec439b4b456ce929c4c07fe457b5d6a4b468e86"
1473 SRCREV_machine_genericx86-64 ?= "3df4aae6074e94e794e27fe7f17451d9353cdf3d" 1457 SRCREV_machine:genericx86-64 ?= "6ec439b4b456ce929c4c07fe457b5d6a4b468e86"
1474 SRCREV_machine_edgerouter ?= "3df4aae6074e94e794e27fe7f17451d9353cdf3d" 1458 SRCREV_machine:beaglebone-yocto ?= "423e1996694b61fbfc8ec3bf062fc6461d64fde1"
1475 SRCREV_machine_beaglebone-yocto ?= "3df4aae6074e94e794e27fe7f17451d9353cdf3d"
1476 1459
1477 COMPATIBLE_MACHINE_genericx86 = "genericx86" 1460 COMPATIBLE_MACHINE:genericx86 = "genericx86"
1478 COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64" 1461 COMPATIBLE_MACHINE:genericx86-64 = "genericx86-64"
1479 COMPATIBLE_MACHINE_edgerouter = "edgerouter" 1462 COMPATIBLE_MACHINE:beaglebone-yocto = "beaglebone-yocto"
1480 COMPATIBLE_MACHINE_beaglebone-yocto = "beaglebone-yocto"
1481 1463
1482 LINUX_VERSION_genericx86 = "5.0.3" 1464 LINUX_VERSION:genericx86 = "6.1.30"
1483 LINUX_VERSION_genericx86-64 = "5.0.3" 1465 LINUX_VERSION:genericx86-64 = "6.1.30"
1484 LINUX_VERSION_edgerouter = "5.0.3" 1466 LINUX_VERSION:beaglebone-yocto = "6.1.20"
1485 LINUX_VERSION_beaglebone-yocto = "5.0.3"
1486 1467
1487This particular append file works for all the machines that are 1468This particular append file works for all the machines that are
1488part of the ``meta-yocto-bsp`` layer. The relevant statements are 1469part of the ``meta-yocto-bsp`` layer. The relevant statements are
diff --git a/documentation/bsp-guide/history.rst b/documentation/bsp-guide/history.rst
deleted file mode 100644
index d7cd8ef7f0..0000000000
--- a/documentation/bsp-guide/history.rst
+++ /dev/null
@@ -1,73 +0,0 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3***********************
4Manual Revision History
5***********************
6
7.. list-table::
8 :widths: 10 15 40
9 :header-rows: 1
10
11 * - Revision
12 - Date
13 - Note
14 * - 0.9
15 - November 2010
16 - The initial document released with the Yocto Project 0.9 Release
17 * - 1.0
18 - April 2011
19 - Released with the Yocto Project 1.0 Release.
20 * - 1.1
21 - October 2011
22 - Released with the Yocto Project 1.1 Release.
23 * - 1.2
24 - April 2012
25 - Released with the Yocto Project 1.2 Release.
26 * - 1.3
27 - October 2012
28 - Released with the Yocto Project 1.3 Release.
29 * - 1.4
30 - April 2013
31 - Released with the Yocto Project 1.4 Release.
32 * - 1.5
33 - October 2013
34 - Released with the Yocto Project 1.5 Release.
35 * - 1.6
36 - April 2014
37 - Released with the Yocto Project 1.6 Release.
38 * - 1.7
39 - October 2014
40 - Released with the Yocto Project 1.7 Release.
41 * - 1.8
42 - April 2015
43 - Released with the Yocto Project 1.8 Release.
44 * - 2.0
45 - October 2015
46 - Released with the Yocto Project 2.0 Release.
47 * - 2.1
48 - April 2016
49 - Released with the Yocto Project 2.1 Release.
50 * - 2.2
51 - October 2016
52 - Released with the Yocto Project 2.2 Release.
53 * - 2.3
54 - May 2017
55 - Released with the Yocto Project 2.3 Release.
56 * - 2.4
57 - October 2017
58 - Released with the Yocto Project 2.4 Release.
59 * - 2.5
60 - May 2018
61 - Released with the Yocto Project 2.5 Release.
62 * - 2.6
63 - November 2018
64 - Released with the Yocto Project 2.6 Release.
65 * - 2.7
66 - May 2019
67 - Released with the Yocto Project 2.7 Release.
68 * - 3.0
69 - October 2019
70 - Released with the Yocto Project 3.0 Release.
71 * - 3.1
72 - April 2020
73 - Released with the Yocto Project 3.1 Release.
diff --git a/documentation/bsp-guide/index.rst b/documentation/bsp-guide/index.rst
index a4394a85ed..9a8e034ae6 100644
--- a/documentation/bsp-guide/index.rst
+++ b/documentation/bsp-guide/index.rst
@@ -11,6 +11,5 @@ Yocto Project Board Support Package Developer's Guide
11 :numbered: 11 :numbered:
12 12
13 bsp 13 bsp
14 history
15 14
16.. include:: /boilerplate.rst 15.. include:: /boilerplate.rst