diff --git a/documentation/bsp-guide/bsp.xml b/documentation/bsp-guide/bsp.xml
index 4d0ace0484..cb9940c77a 100644
--- a/documentation/bsp-guide/bsp.xml
+++ b/documentation/bsp-guide/bsp.xml
@@ -352,135 +352,139 @@
- License Files
+ License Files
-
- You can find these files in the BSP Layer at:
-
+
+ You can find these files in the BSP Layer at:
+
meta-bsp_name/bsp_license_file
-
-
+
+
-
- These optional files satisfy licensing requirements for the BSP.
- The type or types of files here can vary depending on the licensing requirements.
- For example, in the Raspberry Pi BSP all licensing requirements are handled with the
- COPYING.MIT file.
-
+
+ These optional files satisfy licensing requirements for the BSP.
+ The type or types of files here can vary depending on the licensing requirements.
+ For example, in the Raspberry Pi BSP all licensing requirements are handled with the
+ COPYING.MIT file.
+
-
- Licensing files can be MIT, BSD, GPLv*, and so forth.
- These files are recommended for the BSP but are optional and totally up to the BSP developer.
-
+
+ Licensing files can be MIT, BSD, GPLv*, and so forth.
+ These files are recommended for the BSP but are optional and totally up to the BSP developer.
+
- README File
-
- You can find this file in the BSP Layer at:
-
+ README File
+
+
+ You can find this file in the BSP Layer at:
+
meta-bsp_name/README
-
-
+
+
-
- This file provides information on how to boot the live images that are optionally
- included in the binary/ directory.
- The README file also provides special information needed for
- building the image.
-
+
+ This file provides information on how to boot the live images that are optionally
+ included in the binary/ directory.
+ The README file also provides special information needed for
+ building the image.
+
-
- At a minimum, the README file must
- contain a list of dependencies, such as the names of
- any other layers on which the BSP depends and the name of
- the BSP maintainer with his or her contact information.
-
+
+ At a minimum, the README file must
+ contain a list of dependencies, such as the names of
+ any other layers on which the BSP depends and the name of
+ the BSP maintainer with his or her contact information.
+
- README.sources File
-
- You can find this file in the BSP Layer at:
-
- meta-bsp_name/README.sources
-
-
+ README.sources File
-
- This file provides information on where to locate the BSP
- source files used to build the images (if any) that reside in
- meta-bsp_name/binary.
- Images in the binary would be images
- released with the BSP.
- The information in the README.sources
- file also helps you find the
- Metadata
- used to generate the images that ship with the BSP.
-
- If the BSP's binary directory is
- missing or the directory has no images, an existing
- README.sources file is
- meaningless.
-
-
+
+ You can find this file in the BSP Layer at:
+
+ meta-bsp_name/README.sources
+
+
+
+
+ This file provides information on where to locate the BSP
+ source files used to build the images (if any) that reside in
+ meta-bsp_name/binary.
+ Images in the binary would be images
+ released with the BSP.
+ The information in the README.sources
+ file also helps you find the
+ Metadata
+ used to generate the images that ship with the BSP.
+
+ If the BSP's binary directory is
+ missing or the directory has no images, an existing
+ README.sources file is
+ meaningless.
+
+
- Pre-built User Binaries
-
- You can find these files in the BSP Layer at:
-
+ Pre-built User Binaries
+
+
+ You can find these files in the BSP Layer at:
+
meta-bsp_name/binary/bootable_images
-
-
+
+
-
- This optional area contains useful pre-built kernels and
- user-space filesystem images released with the BSP that are
- appropriate to the target system.
- This directory typically contains graphical (e.g. Sato) and
- minimal live images when the BSP tarball has been created and
- made available in the
- Yocto Project website.
- You can use these kernels and images to get a system running
- and quickly get started on development tasks.
-
+
+ This optional area contains useful pre-built kernels and
+ user-space filesystem images released with the BSP that are
+ appropriate to the target system.
+ This directory typically contains graphical (e.g. Sato) and
+ minimal live images when the BSP tarball has been created and
+ made available in the
+ Yocto Project website.
+ You can use these kernels and images to get a system running
+ and quickly get started on development tasks.
+
-
- The exact types of binaries present are highly
- hardware-dependent.
- The README file should be present in the
- BSP Layer and it will explain how to use the images with the
- target hardware.
- Additionally, the README.sources file
- should be present to locate the sources used to build the
- images and provide information on the Metadata.
-
+
+ The exact types of binaries present are highly
+ hardware-dependent.
+ The README file should be present in the
+ BSP Layer and it will explain how to use the images with the
+ target hardware.
+ Additionally, the README.sources file
+ should be present to locate the sources used to build the
+ images and provide information on the Metadata.
+
- Layer Configuration File
-
- You can find this file in the BSP Layer at:
-
+ Layer Configuration File
+
+
+ You can find this file in the BSP Layer at:
+
meta-bsp_name/conf/layer.conf
-
-
+
+
-
- The conf/layer.conf file identifies the file structure as a
- layer, identifies the
- contents of the layer, and contains information about how the build
- system should use it.
- Generally, a standard boilerplate file such as the following works.
- In the following example, you would replace "bsp" and
- "_bsp" with the actual name
- of the BSP (i.e. bsp_name from the example template).
-
+
+ The conf/layer.conf file identifies the file structure as a
+ layer, identifies the
+ contents of the layer, and contains information about how the build
+ system should use it.
+ Generally, a standard boilerplate file such as the following works.
+ In the following example, you would replace "bsp" and
+ "_bsp" with the actual name
+ of the BSP (i.e. bsp_name from the example template).
+
-
-
+
+
# We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"
@@ -493,13 +497,13 @@
BBFILE_PRIORITY_bsp = "6"
LAYERDEPENDS_bsp = "intel"
-
-
+
+
-
- To illustrate the string substitutions, here are the corresponding statements
- from the Raspberry Pi conf/layer.conf file:
-
+
+ To illustrate the string substitutions, here are the corresponding statements
+ from the Raspberry Pi conf/layer.conf file:
+
# We have a conf and classes directory, append to BBPATH
BBPATH .= ":${LAYERDIR}"
@@ -513,316 +517,196 @@
# Additional license directories.
LICENSE_PATH += "${LAYERDIR}/files/custom-licenses"
-
-
+
+
-
- This file simply makes
- BitBake
- aware of the recipes and configuration directories.
- The file must exist so that the OpenEmbedded build system can recognize the BSP.
-
+
+ This file simply makes
+ BitBake
+ aware of the recipes and configuration directories.
+ The file must exist so that the OpenEmbedded build system can recognize the BSP.
+
- Hardware Configuration Options
-
- You can find these files in the BSP Layer at:
-
+ Hardware Configuration Options
+
+
+ You can find these files in the BSP Layer at:
+
meta-bsp_name/conf/machine/*.conf
-
-
+
+
-
- The machine files bind together all the information contained elsewhere
- in the BSP into a format that the build system can understand.
- If the BSP supports multiple machines, multiple machine configuration files
- can be present.
- These filenames correspond to the values to which users have set the
- MACHINE variable.
-
+
+ The machine files bind together all the information contained elsewhere
+ in the BSP into a format that the build system can understand.
+ If the BSP supports multiple machines, multiple machine configuration files
+ can be present.
+ These filenames correspond to the values to which users have set the
+ MACHINE variable.
+
-
- These files define things such as the kernel package to use
- (PREFERRED_PROVIDER
- of virtual/kernel), the hardware drivers to
- include in different types of images, any special software components
- that are needed, any bootloader information, and also any special image
- format requirements.
-
+
+ These files define things such as the kernel package to use
+ (PREFERRED_PROVIDER
+ of virtual/kernel), the hardware drivers to
+ include in different types of images, any special software components
+ that are needed, any bootloader information, and also any special image
+ format requirements.
+
-
- Each BSP Layer requires at least one machine file.
- However, you can supply more than one file.
-
+
+ Each BSP Layer requires at least one machine file.
+ However, you can supply more than one file.
+
-
- This configuration file could also include a hardware "tuning"
- file that is commonly used to define the package architecture
- and specify optimization flags, which are carefully chosen
- to give best performance on a given processor.
-
+
+ This configuration file could also include a hardware "tuning"
+ file that is commonly used to define the package architecture
+ and specify optimization flags, which are carefully chosen
+ to give best performance on a given processor.
+
-
- Tuning files are found in the meta/conf/machine/include
- directory within the
- Source Directory.
- For example, the ia32-base.inc file resides in the
- meta/conf/machine/include directory.
-
+
+ Tuning files are found in the meta/conf/machine/include
+ directory within the
+ Source Directory.
+ For example, the ia32-base.inc file resides in the
+ meta/conf/machine/include directory.
+
-
- To use an include file, you simply include them in the
- machine configuration file.
- For example, the Raspberry Pi BSP
- raspberrypi3.conf contains the
- following statement:
-
+
+ To use an include file, you simply include them in the
+ machine configuration file.
+ For example, the Raspberry Pi BSP
+ raspberrypi3.conf contains the
+ following statement:
+
include conf/machine/raspberrypi2.conf
-
-
+
+
- Miscellaneous BSP-Specific Recipe Files
-
- You can find these files in the BSP Layer at:
-
- meta-bsp_name/recipes-bsp/*
-
-
+ Miscellaneous BSP-Specific Recipe Files
-
- This optional directory contains miscellaneous recipe files for
- the BSP.
- Most notably would be the formfactor files.
- For example, in the Raspberry Pi BSP there is the
- formfactor_0.0.bbappend file, which is an
- append file used to augment the recipe that starts the build.
- Furthermore, there are machine-specific settings used during
- the build that are defined by the
- machconfig file further down in the
- directory.
- Here is the machconfig
- file for the Raspberry Pi BSP:
-
+
+ You can find these files in the BSP Layer at:
+
+ meta-bsp_name/recipes-bsp/*
+
+
+
+
+ This optional directory contains miscellaneous recipe files for
+ the BSP.
+ Most notably would be the formfactor files.
+ For example, in the Raspberry Pi BSP there is the
+ formfactor_0.0.bbappend file, which is an
+ append file used to augment the recipe that starts the build.
+ Furthermore, there are machine-specific settings used during
+ the build that are defined by the
+ machconfig file further down in the
+ directory.
+ Here is the machconfig
+ file for the Raspberry Pi BSP:
+
HAVE_TOUCHSCREEN=0
HAVE_KEYBOARD=1
DISPLAY_CAN_ROTATE=0
DISPLAY_ORIENTATION=0
DISPLAY_DPI=133
-
-
+
+
-
- If a BSP does not have a formfactor entry, defaults are established according to
- the formfactor configuration file that is installed by the main
- formfactor recipe
- meta/recipes-bsp/formfactor/formfactor_0.0.bb,
- which is found in the
- Source Directory.
-
+
+ If a BSP does not have a formfactor entry, defaults are established according to
+ the formfactor configuration file that is installed by the main
+ formfactor recipe
+ meta/recipes-bsp/formfactor/formfactor_0.0.bb,
+ which is found in the
+ Source Directory.
+
- Display Support Files
-
- You can find these files in the BSP Layer at:
-
- meta-bsp_name/recipes-graphics/*
-
-
+ Display Support Files
-
- This optional directory contains recipes for the BSP if it has
- special requirements for graphics support.
- All files that are needed for the BSP to support a display are
- kept here.
-
+
+ You can find these files in the BSP Layer at:
+
+ meta-bsp_name/recipes-graphics/*
+
+
+
+
+ This optional directory contains recipes for the BSP if it has
+ special requirements for graphics support.
+ All files that are needed for the BSP to support a display are
+ kept here.
+
- Linux Kernel Configuration
-
- You can find these files in the BSP Layer at:
-
- meta-bsp_name/recipes-kernel/linux/linux-yocto*.bbappend
-
-
+ Linux Kernel Configuration
-
- These files append your specific changes to the main kernel recipe you are using.
-
-
- For your BSP, you typically want to use an existing Yocto Project kernel recipe found in the
- Source Directory
- at meta/recipes-kernel/linux.
- You can append your specific changes to the kernel recipe by using a
- similarly named append file, which is located in the BSP Layer (e.g.
- the meta-bsp_name/recipes-kernel/linux directory).
-
-
- Suppose you are using the linux-yocto_4.4.bb recipe to build
- the kernel.
- In other words, you have selected the kernel in your
- bsp_name.conf file by adding these types
- of statements:
-
+
+ You can find these files in the BSP Layer at:
+
+ meta-bsp_name/recipes-kernel/linux/linux-yocto*.bbappend
+
+
+
+
+ These files append machine-specific changes to the main
+ kernel recipe you are using.
+
+
+
+ For your BSP, you typically want to use an existing Yocto
+ Project kernel recipe found in the
+ Source Directory
+ at meta/recipes-kernel/linux.
+ You can append machine-specific changes to the kernel recipe
+ by using a similarly named append file, which is located in
+ the BSP Layer for your target device (e.g. the
+ meta-bsp_name/recipes-kernel/linux directory).
+
+
+
+ Suppose you are using the linux-yocto_4.4.bb
+ recipe to build the kernel.
+ In other words, you have selected the kernel in your
+ bsp_name.conf
+ file by adding
+ PREFERRED_PROVIDER
+ and
+ PREFERRED_VERSION
+ statements as follows:
+
PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
PREFERRED_VERSION_linux-yocto ?= "4.4%"
-
-
- When the preferred provider is assumed by default, the
- PREFERRED_PROVIDER statement does not appear in the
- bsp_name.conf file.
-
- You would use the linux-yocto_4.4.bbappend
- file to append specific BSP settings to the kernel, thus
- configuring the kernel for your particular BSP.
-
-
-
- As an example, consider the following append file
- used by the BSPs in meta-yocto-bsp:
-
- meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.4.bbappend
-
- The following listing shows the file.
- Be aware that the actual commit ID strings in this
- example listing might be different than the actual strings
- in the file from the meta-yocto-bsp
- layer upstream.
-
- KBRANCH_genericx86 = "standard/base"
- KBRANCH_genericx86-64 = "standard/base"
-
- KMACHINE_genericx86 ?= "common-pc"
- KMACHINE_genericx86-64 ?= "common-pc-64"
- KBRANCH_edgerouter = "standard/edgerouter"
- KBRANCH_beaglebone = "standard/beaglebone"
- KBRANCH_mpc8315e-rdb = "standard/fsl-mpc8315e-rdb"
-
- SRCREV_machine_genericx86 ?= "ff4c4ef15b51f45b9106d71bf1f62fe7c02e63c2"
- SRCREV_machine_genericx86-64 ?= "ff4c4ef15b51f45b9106d71bf1f62fe7c02e63c2"
- SRCREV_machine_edgerouter ?= "ff4c4ef15b51f45b9106d71bf1f62fe7c02e63c2"
- SRCREV_machine_beaglebone ?= "ff4c4ef15b51f45b9106d71bf1f62fe7c02e63c2"
- SRCREV_machine_mpc8315e-rdb ?= "df00877ef9387b38b9601c82db57de2a1b23ce53"
-
- COMPATIBLE_MACHINE_genericx86 = "genericx86"
- COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64"
- COMPATIBLE_MACHINE_edgerouter = "edgerouter"
- COMPATIBLE_MACHINE_beaglebone = "beaglebone"
- COMPATIBLE_MACHINE_mpc8315e-rdb = "mpc8315e-rdb"
-
- LINUX_VERSION_genericx86 = "4.4.3"
- LINUX_VERSION_genericx86-64 = "4.4.3"
-
- This append file contains statements used to support
- several BSPs that ship with the Yocto Project.
- The file defines machines using the
- COMPATIBLE_MACHINE
- variable and uses the
- KMACHINE
- variable to ensure the machine name used by the OpenEmbedded
- build system maps to the machine name used by the Linux Yocto
- kernel.
- The file also uses the optional
- KBRANCH
- variable to ensure the build process uses the
- appropriate kernel branch.
-
-
-
- Although this particular example does not use it, the
- KERNEL_FEATURES
- variable could be used to enable features specific to
- the kernel.
- The append file points to specific commits in the
- Source Directory
- Git repository and the meta Git repository
- branches to identify the exact kernel needed to build the
- BSP.
-
-
-
- One thing missing in this particular BSP, which you will
- typically need when developing a BSP, is the kernel configuration
- file (.config) for your BSP.
- When developing a BSP, you probably have a kernel configuration
- file or a set of kernel configuration files that, when taken
- together, define the kernel configuration for your BSP.
- You can accomplish this definition by putting the configurations
- in a file or a set of files inside a directory located at the
- same level as your kernel's append file and having the same
- name as the kernel's main recipe file.
- With all these conditions met, simply reference those files in the
- SRC_URI
- statement in the append file.
-
-
-
- For example, suppose you had some configuration options
- in a file called network_configs.cfg.
- You can place that file inside a directory named
- linux-yocto and then add
- a SRC_URI statement such as the
- following to the append file.
- When the OpenEmbedded build system builds the kernel, the
- configuration options are picked up and applied.
-
- SRC_URI += "file://network_configs.cfg"
-
-
-
-
- To group related configurations into multiple files, you
- perform a similar procedure.
- Here is an example that groups separate configurations
- specifically for Ethernet and graphics into their own
- files and adds the configurations by using a
- SRC_URI statement like the following
- in your append file:
-
- SRC_URI += "file://myconfig.cfg \
- file://eth.cfg \
- file://gfx.cfg"
-
-
-
-
- Another variable you can use in your kernel recipe append
- file is the
- FILESEXTRAPATHS
- variable.
- When you use this statement, you are extending the locations
- used by the OpenEmbedded system to look for files and
- patches as the recipe is processed.
-
-
-
-
- Other methods exist to accomplish grouping and defining configuration options.
- For example, if you are working with a local clone of the kernel repository,
- you could checkout the kernel's meta branch, make your changes,
- and then push the changes to the local bare clone of the kernel.
- The result is that you directly add configuration options to the
- meta branch for your BSP.
- The configuration options will likely end up in that location anyway if the BSP gets
- added to the Yocto Project.
+
+
+ When the preferred provider is assumed by default, the
+ PREFERRED_PROVIDER
+ statement does not appear in the
+ bsp_name.conf file.
+
+ You would use the linux-yocto_4.4.bbappend
+ file to append specific BSP settings to the kernel, thus
+ configuring the kernel for your particular BSP.
- In general, however, the Yocto Project maintainers take care of moving the
- SRC_URI-specified
- configuration options to the kernel's meta branch.
- Not only is it easier for BSP developers to not have to worry about putting those
- configurations in the branch, but having the maintainers do it allows them to apply
- 'global' knowledge about the kinds of common configuration options multiple BSPs in
- the tree are typically using.
- This allows for promotion of common configurations into common features.
+ You can find more information on what your append file
+ should contain in the
+ "Creating the Append File"
+ section in the Yocto Project Linux Kernel Development
+ Manual.
-
diff --git a/documentation/kernel-dev/kernel-dev-advanced.xml b/documentation/kernel-dev/kernel-dev-advanced.xml
index 1c1b6366db..434c01fafb 100644
--- a/documentation/kernel-dev/kernel-dev-advanced.xml
+++ b/documentation/kernel-dev/kernel-dev-advanced.xml
@@ -524,170 +524,219 @@
BSP Descriptions
- BSP descriptions combine kernel types with hardware-specific
- features.
- The hardware-specific portion is typically defined
- independently, and then aggregated with each supported kernel
- type.
- Consider this simple BSP description that supports the
- mybsp machine:
-
- mybsp.scc:
- define KMACHINE mybsp
- define KTYPE standard
- define KARCH i386
-
- kconf mybsp.cfg
-
- Every BSP description should define the
- KMACHINE,
- KTYPE,
- and KARCH
- variables.
- These variables allow the OpenEmbedded build system to identify
- the description as meeting the criteria set by the recipe being
- built.
- This simple example supports the "mybsp" machine for the "standard"
- kernel and the "i386" architecture.
-
-
-
- Be aware that a hard link between the
- KTYPE variable and a kernel type
- description file does not exist.
- Thus, if you do not have kernel types defined in your kernel
- Metadata, you only need to ensure that the kernel recipe's
- LINUX_KERNEL_TYPE
- variable and the KTYPE variable in the
- BSP description file match.
+ BSP descriptions (i.e. *.scc files)
+ combine kernel types with hardware-specific features.
+ The hardware-specific Metadata is typically defined
+ independently in the BSP layer, and then aggregated with each
+ supported kernel type.
- Future versions of the tooling make the specification of
- KTYPE in the BSP optional.
+ For BSPs supported by the Yocto Project, the BSP description
+ files are located in the bsp directory
+ of the yocto-kernel-cache repository
+ organized under the "Yocto Linux Kernel" heading in the
+ Yocto Project Source Repositories.
- If you did want to separate your kernel policy from your
- hardware configuration, you could do so by specifying a kernel
- type, such as "standard" and including that description file
- in the BSP description file.
- See the "Kernel Types" section
- for more information.
+ This section provides a BSP description structural overview along
+ with aggregation concepts as well as a detailed example using
+ a BSP supported by the Yocto Project (i.e. Minnow Board).
-
- You might also have multiple hardware configurations that you
- aggregate into a single hardware description file that you
- could include in the BSP description file, rather than referencing
- a single .cfg file.
- Consider the following:
-
- mybsp.scc:
- define KMACHINE mybsp
- define KTYPE standard
- define KARCH i386
+
+ Overview
- include standard.scc
- include mybsp-hw.scc
-
-
+
+ For simplicity, consider the following top-level BSP
+ description file.
+ Top-level BSP descriptions files employ both a structure
+ and naming convention for consistency.
+ The naming convention for the file is as follows:
+
+ bsp_name-kernel_type.scc
+
+ Here are some example top-level BSP filenames for the
+ Minnow Board BSP, which is supported by the Yocto Project:
+
+ minnow-standard.scc
+ minnow-preempt-rt.scc
+ minnow-tiny.scc
+
+ Each file uses the BSP name followed by the kernel type.
+
-
- In the above example, standard.scc
- aggregates all the configuration fragments, patches, and
- features that make up your standard kernel policy whereas
- mybsp-hw.scc
- aggregates all those necessary
- to support the hardware available on the
- mybsp machine.
- For information on how to break a complete
- .config file into the various
- configuration fragments, see the
- "Generating Configuration Files"
- section.
-
+
+ is simple BSP description file whose name has the
+ form
+ mybsp-standard
+ and supports the mybsp machine using
+ a standard kernel:
+
+ define KMACHINE mybsp
+ define KTYPE standard
+ define KARCH i386
-
- Many real-world examples are more complex.
- Like any other .scc file, BSP
- descriptions can aggregate features.
- Consider the Minnow BSP definition from the
- linux-yocto-3.19
- Git repository:
-
+ include ktypes/standard
+
+ include mybsp.scc
+
+ kconf hardware mybsp-extra.cfg
+
+ Every top-level BSP description file should define the
+ KMACHINE,
+ KTYPE,
+ and KARCH
+ variables.
+ These variables allow the OpenEmbedded build system to identify
+ the description as meeting the criteria set by the recipe being
+ built.
+ This simple example supports the "mybsp" machine for the "standard"
+ kernel and the "i386" architecture.
+
+
+
+ Be aware that a hard link between the
+ KTYPE variable and a kernel type description
+ file does not exist.
+ Thus, if you do not have kernel types defined in your kernel
+ Metadata, you only need to ensure that the kernel recipe's
+ LINUX_KERNEL_TYPE
+ variable and the KTYPE variable in the
+ BSP description file match.
+
+ Future versions of the tooling make the specification of
+ KTYPE in the BSP optional.
+
+
+
+
+ To separate your kernel policy from your hardware configuration,
+ you include a kernel type (ktype), such as
+ "standard".
+ In the previous example, this is done using the following:
+
+ include ktypes/standard
+
+ In the previous example, ktypes/standard.scc
+ aggregates all the configuration fragments, patches, and
+ features that make up your standard kernel policy.
+ See the "Kernel Types" section
+ for more information.
+
+
+
+ To aggregate common configurations and features specific to the
+ kernel for mybsp, use the following:
+
+ include mybsp.scc
+
+ For information on how to break a complete
+ .config file into the various
+ configuration fragments, see the
+ "Generating Configuration Files"
+ section.
+
+
+
+ Finally, if you have any configurations specific to the
+ hardware that are not in a *.scc file,
+ you can include them as follows:
+
+ kconf hardware mybsp-extra.cfg
+
+
+
+
+
+ Example
+
+
+ Many real-world examples are more complex.
+ Like any other .scc file, BSP
+ descriptions can aggregate features.
+ Consider the Minnow BSP definition from the
+ linux-yocto-4.4 in the
+ Yocto Project
+ Source Repositories
+ (i.e.
+ yocto-kernel-cache/bsp/minnow):
+
minnow.scc:
- include cfg/x86.scc
- include features/eg20t/eg20t.scc
- include cfg/dmaengine.scc
- include features/power/intel.scc
- include cfg/efi.scc
- include features/usb/ehci-hcd.scc
- include features/usb/ohci-hcd.scc
- include features/usb/usb-gadgets.scc
- include features/usb/touchscreen-composite.scc
- include cfg/timer/hpet.scc
- include cfg/timer/rtc.scc
- include features/leds/leds.scc
- include features/spi/spidev.scc
- include features/i2c/i2cdev.scc
+ include cfg/x86.scc
+ include features/eg20t/eg20t.scc
+ include cfg/dmaengine.scc
+ include features/power/intel.scc
+ include cfg/efi.scc
+ include features/usb/ehci-hcd.scc
+ include features/usb/ohci-hcd.scc
+ include features/usb/usb-gadgets.scc
+ include features/usb/touchscreen-composite.scc
+ include cfg/timer/hpet.scc
+ include features/leds/leds.scc
+ include features/spi/spidev.scc
+ include features/i2c/i2cdev.scc
+ include features/mei/mei-txe.scc
- # Earlyprintk and port debug requires 8250
- kconf hardware cfg/8250.cfg
+ # Earlyprintk and port debug requires 8250
+ kconf hardware cfg/8250.cfg
- kconf hardware minnow.cfg
- kconf hardware minnow-dev.cfg
-
-
+ kconf hardware minnow.cfg
+ kconf hardware minnow-dev.cfg
+
+
-
- The minnow.scc description file includes
- a hardware configuration fragment
- (minnow.cfg) specific to the Minnow
- BSP as well as several more general configuration
- fragments and features enabling hardware found on the
- machine.
- This description file is then included in each of the three
- "minnow" description files for the supported kernel types
- (i.e. "standard", "preempt-rt", and "tiny").
- Consider the "minnow" description for the "standard" kernel
- type:
-
+
+ The minnow.scc description file includes
+ a hardware configuration fragment
+ (minnow.cfg) specific to the Minnow
+ BSP as well as several more general configuration
+ fragments and features enabling hardware found on the
+ machine.
+ This minnow.scc description file is then
+ included in each of the three
+ "minnow" description files for the supported kernel types
+ (i.e. "standard", "preempt-rt", and "tiny").
+ Consider the "minnow" description for the "standard" kernel
+ type:
+
minnow-standard.scc:
- define KMACHINE minnow
- define KTYPE standard
- define KARCH i386
+ define KMACHINE minnow
+ define KTYPE standard
+ define KARCH i386
- include ktypes/standard
+ include ktypes/standard
- include minnow.scc
+ include minnow.scc
- # Extra minnow configs above the minimal defined in minnow.scc
- include cfg/efi-ext.scc
- include features/media/media-all.scc
- include features/sound/snd_hda_intel.scc
+ # Extra minnow configs above the minimal defined in minnow.scc
+ include cfg/efi-ext.scc
+ include features/media/media-all.scc
+ include features/sound/snd_hda_intel.scc
- # The following should really be in standard.scc
- # USB live-image support
- include cfg/usb-mass-storage.scc
- include cfg/boot-live.scc
+ # The following should really be in standard.scc
+ # USB live-image support
+ include cfg/usb-mass-storage.scc
+ include cfg/boot-live.scc
- # Basic profiling
- include features/latencytop/latencytop.scc
- include features/profiling/profiling.scc
+ # Basic profiling
+ include features/latencytop/latencytop.scc
+ include features/profiling/profiling.scc
- # Requested drivers that don't have an existing scc
- kconf hardware minnow-drivers-extra.cfg
-
- The include command midway through the file
- includes the minnow.scc description that
- defines all hardware enablements for the BSP that is common to all
- kernel types.
- Using this command significantly reduces duplication.
-
+ # Requested drivers that don't have an existing scc
+ kconf hardware minnow-drivers-extra.cfg
+
+ The include command midway through the file
+ includes the minnow.scc description that
+ defines all enabled hardware for the BSP that is common to
+ all kernel types.
+ Using this command significantly reduces duplication.
+
-
- Now consider the "minnow" description for the "tiny" kernel type:
-
+
+ Now consider the "minnow" description for the "tiny" kernel
+ type:
+
minnow-tiny.scc:
define KMACHINE minnow
define KTYPE tiny
@@ -696,22 +745,24 @@
include ktypes/tiny
include minnow.scc
-
- As you might expect, the "tiny" description includes quite a
- bit less.
- In fact, it includes only the minimal policy defined by the
- "tiny" kernel type and the hardware-specific configuration required
- for booting the machine along with the most basic functionality of
- the system as defined in the base "minnow" description file.
-
+
+ As you might expect, the "tiny" description includes quite a
+ bit less.
+ In fact, it includes only the minimal policy defined by the
+ "tiny" kernel type and the hardware-specific configuration
+ required for booting the machine along with the most basic
+ functionality of the system as defined in the base "minnow"
+ description file.
+
-
- Notice again the three critical variables:
- KMACHINE, KTYPE,
- and KARCH.
- Of these variables, only the KTYPE has changed.
- It is now set to "tiny".
-
+
+ Notice again the three critical variables:
+ KMACHINE, KTYPE,
+ and KARCH.
+ Of these variables, only the KTYPE has changed.
+ It is now set to "tiny".
+
+
@@ -795,6 +846,18 @@
value when changing the content of files not explicitly listed
in the SRC_URI.
+
+
+ If the kernel Metadata is in a layer, you cannot simply list the
+ *.scc in the SRC_URI
+ statement.
+ You need to use the following form from your kernel append file:
+
+ SRC_URI_append_myplatform = " \
+ file://myplatform;type=kmeta;destsuffix=myplatform \
+ "
+
+
@@ -817,7 +880,8 @@
${KMETA}, in this context, is simply used to
name the directory into which the Git fetcher places the Metadata.
This behavior is no different than any multi-repository
- SRC_URI statement used in a recipe.
+ SRC_URI statement used in a recipe (e.g.
+ see the previous section).
diff --git a/documentation/kernel-dev/kernel-dev-common.xml b/documentation/kernel-dev/kernel-dev-common.xml
index a9aafd3c21..d49aa3ce17 100644
--- a/documentation/kernel-dev/kernel-dev-common.xml
+++ b/documentation/kernel-dev/kernel-dev-common.xml
@@ -84,11 +84,11 @@
You also name it accordingly based on the linux-yocto recipe
you are using.
For example, if you are modifying the
- meta/recipes-kernel/linux/linux-yocto_3.19.bb
+ meta/recipes-kernel/linux/linux-yocto_4.4.bb
recipe, the append file will typically be located as follows
within your custom layer:
- your-layer/recipes-kernel/linux/linux-yocto_3.19.bbappend
+ your-layer/recipes-kernel/linux/linux-yocto_4.4.bbappend
The append file should initially extend the
FILESPATH
@@ -114,6 +114,151 @@
Yocto Project Board Support Package (BSP) Developer's Guide.
+
+
+ As an example, consider the following append file
+ used by the BSPs in meta-yocto-bsp:
+
+ meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.4.bbappend
+
+ The following listing shows the file.
+ Be aware that the actual commit ID strings in this
+ example listing might be different than the actual strings
+ in the file from the meta-yocto-bsp
+ layer upstream.
+
+ KBRANCH_genericx86 = "standard/base"
+ KBRANCH_genericx86-64 = "standard/base"
+
+ KMACHINE_genericx86 ?= "common-pc"
+ KMACHINE_genericx86-64 ?= "common-pc-64"
+ KBRANCH_edgerouter = "standard/edgerouter"
+ KBRANCH_beaglebone = "standard/beaglebone"
+ KBRANCH_mpc8315e-rdb = "standard/fsl-mpc8315e-rdb"
+
+ SRCREV_machine_genericx86 ?= "ad8b1d659ddd2699ebf7d50ef9de8940b157bfc2"
+ SRCREV_machine_genericx86-64 ?= "ad8b1d659ddd2699ebf7d50ef9de8940b157bfc2"
+ SRCREV_machine_edgerouter ?= "cebe1ad56aebd89e0de29412e19433fb441bf13c"
+ SRCREV_machine_beaglebone ?= "cebe1ad56aebd89e0de29412e19433fb441bf13c"
+ SRCREV_machine_mpc8315e-rdb ?= "06c0dbdcba374ca7f92a53d69292d6bb7bc9b0f3"
+
+ COMPATIBLE_MACHINE_genericx86 = "genericx86"
+ COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64"
+ COMPATIBLE_MACHINE_edgerouter = "edgerouter"
+ COMPATIBLE_MACHINE_beaglebone = "beaglebone"
+ COMPATIBLE_MACHINE_mpc8315e-rdb = "mpc8315e-rdb"
+
+ LINUX_VERSION_genericx86 = "4.4.41"
+ LINUX_VERSION_genericx86-64 = "4.4.41"
+ LINUX_VERSION_edgerouter = "4.4.53"
+ LINUX_VERSION_beaglebone = "4.4.53"
+ LINUX_VERSION_mpc8315e-rdb = "4.4.53"
+
+ This append file contains statements used to support
+ several BSPs that ship with the Yocto Project.
+ The file defines machines using the
+ COMPATIBLE_MACHINE
+ variable and uses the
+ KMACHINE
+ variable to ensure the machine name used by the OpenEmbedded
+ build system maps to the machine name used by the Linux Yocto
+ kernel.
+ The file also uses the optional
+ KBRANCH
+ variable to ensure the build process uses the
+ appropriate kernel branch.
+
+
+
+ Although this particular example does not use it, the
+ KERNEL_FEATURES
+ variable could be used to enable features specific to
+ the kernel.
+ The append file points to specific commits in the
+ Source Directory
+ Git repository and the meta Git repository
+ branches to identify the exact kernel needed to build the
+ BSP.
+
+
+
+ One thing missing in this particular BSP, which you will
+ typically need when developing a BSP, is the kernel configuration
+ file (.config) for your BSP.
+ When developing a BSP, you probably have a kernel configuration
+ file or a set of kernel configuration files that, when taken
+ together, define the kernel configuration for your BSP.
+ You can accomplish this definition by putting the configurations
+ in a file or a set of files inside a directory located at the
+ same level as your kernel's append file and having the same
+ name as the kernel's main recipe file.
+ With all these conditions met, simply reference those files in the
+ SRC_URI
+ statement in the append file.
+
+
+
+ For example, suppose you had some configuration options
+ in a file called network_configs.cfg.
+ You can place that file inside a directory named
+ linux-yocto and then add
+ a SRC_URI statement such as the
+ following to the append file.
+ When the OpenEmbedded build system builds the kernel, the
+ configuration options are picked up and applied.
+
+ SRC_URI += "file://network_configs.cfg"
+
+
+
+
+ To group related configurations into multiple files, you
+ perform a similar procedure.
+ Here is an example that groups separate configurations
+ specifically for Ethernet and graphics into their own
+ files and adds the configurations by using a
+ SRC_URI statement like the following
+ in your append file:
+
+ SRC_URI += "file://myconfig.cfg \
+ file://eth.cfg \
+ file://gfx.cfg"
+
+
+
+
+ Another variable you can use in your kernel recipe append
+ file is the
+ FILESEXTRAPATHS
+ variable.
+ When you use this statement, you are extending the locations
+ used by the OpenEmbedded system to look for files and
+ patches as the recipe is processed.
+
+
+
+
+ Other methods exist to accomplish grouping and defining configuration options.
+ For example, if you are working with a local clone of the kernel repository,
+ you could checkout the kernel's meta branch, make your changes,
+ and then push the changes to the local bare clone of the kernel.
+ The result is that you directly add configuration options to the
+ meta branch for your BSP.
+ The configuration options will likely end up in that location anyway if the BSP gets
+ added to the Yocto Project.
+
+
+
+ In general, however, the Yocto Project maintainers take care of moving the
+ SRC_URI-specified
+ configuration options to the kernel's meta branch.
+ Not only is it easier for BSP developers to not have to worry about putting those
+ configurations in the branch, but having the maintainers do it allows them to apply
+ 'global' knowledge about the kinds of common configuration options multiple BSPs in
+ the tree are typically using.
+ This allows for promotion of common configurations into common features.
+
+