Many real-world examples are more complex.
Like any other .scc
file, BSP
descriptions can aggregate features.
Consider the Minnow BSP definition given the
linux-yocto-4.4
branch of the
yocto-kernel-cache
(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 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 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 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 (i.e. minnow-standard.scc
:
define KMACHINE minnow define KTYPE standard define KARCH i386 include ktypes/standard 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 # 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 # 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 (i.e. minnow-tiny.scc
):
define KMACHINE minnow define KTYPE tiny define KARCH i386 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.
Notice again the three critical variables:
KMACHINE
,
KTYPE
,
and
KARCH
.
Of these variables, only KTYPE
has changed to specify the "tiny" kernel type.