blob: 58f5733f7ae29791cd139a8fbfd08296f254726c [file] [log] [blame]
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
2"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
3[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
4
5<chapter id='bsp'>
6
Brad Bishop316dfdd2018-06-25 12:45:53 -04007<title>Board Support Packages (BSP) - Developer's Guide</title>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008
Brad Bishop316dfdd2018-06-25 12:45:53 -04009<para>
10 A Board Support Package (BSP) is a collection of information that
11 defines how to support a particular hardware device, set of devices, or
12 hardware platform.
13 The BSP includes information about the hardware features
14 present on the device and kernel configuration information along with any
15 additional hardware drivers required.
16 The BSP also lists any additional software
17 components required in addition to a generic Linux software stack for both
18 essential and optional platform features.
19</para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050020
Brad Bishop316dfdd2018-06-25 12:45:53 -040021<para>
22 This guide presents information about BSP Layers, defines a structure for components
23 so that BSPs follow a commonly understood layout, discusses how to customize
24 a recipe for a BSP, addresses BSP licensing, and provides information that
25 shows you how to create a
26 <link linkend='bsp-layers'>BSP Layer</link> using the
27 <link linkend='creating-a-new-bsp-layer-using-the-bitbake-layers-script'><filename>bitbake-layers</filename></link>
28 tool.
29</para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050030
Brad Bishop316dfdd2018-06-25 12:45:53 -040031<section id='bsp-layers'>
32 <title>BSP Layers</title>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050033
Brad Bishop316dfdd2018-06-25 12:45:53 -040034 <para>
35 A BSP consists of a file structure inside a base directory.
36 Collectively, you can think of the base directory, its file structure,
37 and the contents as a BSP Layer.
38 Although not a strict requirement, BSP layers in the Yocto Project
39 use the following well-established naming convention:
40 <literallayout class='monospaced'>
41 meta-<replaceable>bsp_root_name</replaceable>
42 </literallayout>
43 The string "meta-" is prepended to the machine or platform name, which is
44 <replaceable>bsp_root_name</replaceable> in the above form.
45 <note><title>Tip</title>
46 Because the BSP layer naming convention is well-established,
47 it is advisable to follow it when creating layers.
48 Technically speaking, a BSP layer name does not need to
49 start with <filename>meta-</filename>.
50 However, various scripts and tools in the Yocto Project
51 development environment assume this convention.
52 </note>
53 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050054
Brad Bishop316dfdd2018-06-25 12:45:53 -040055 <para>
56 To help understand the BSP layer concept, consider the BSPs that the
57 Yocto Project supports and provides with each release.
58 You can see the layers in the
59 <ulink url='&YOCTO_DOCS_OM_URL;#yocto-project-repositories'>Yocto Project Source Repositories</ulink>
60 through a web interface at
61 <ulink url='&YOCTO_GIT_URL;'></ulink>.
62 If you go to that interface, you will find a list of repositories
63 under "Yocto Metadata Layers".
64 <note>
65 Layers that are no longer actively supported as part of the
66 Yocto Project appear under the heading "Yocto Metadata Layer
67 Archive."
68 </note>
69 Each repository is a BSP layer supported by the Yocto Project
70 (e.g. <filename>meta-raspberrypi</filename> and
71 <filename>meta-intel</filename>).
72 Each of these layers is a repository unto itself and clicking on a
73 layer reveals information that includes two links from which you can choose
74 to set up a clone of the layer's repository on your local host system.
75 Here is an example that clones the Raspberry Pi BSP layer:
76 <literallayout class='monospaced'>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050077 $ git clone git://git.yoctoproject.org/meta-raspberrypi
Brad Bishop316dfdd2018-06-25 12:45:53 -040078 </literallayout>
79 </para>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050080
Brad Bishop316dfdd2018-06-25 12:45:53 -040081 <para>
82 In addition to BSP layers, the
83 <filename>meta-yocto-bsp</filename> layer is part of the
84 shipped <filename>poky</filename> repository.
85 The <filename>meta-yocto-bsp</filename> layer maintains several
86 BSPs such as the Beaglebone, EdgeRouter, and generic versions of
87 both 32-bit and 64-bit IA machines.
88 </para>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050089
Brad Bishop316dfdd2018-06-25 12:45:53 -040090 <para>
91 For information on the BSP development workflow, see the
92 "<link linkend='developing-a-board-support-package-bsp'>Developing a Board Support Package (BSP)</link>"
93 section.
94 For more information on how to set up a local copy of source files
95 from a Git repository, see the
96 "<ulink url='&YOCTO_DOCS_DEV_URL;#locating-yocto-project-source-files'>Locating Yocto Project Source Files</ulink>"
97 section in the Yocto Project Development Tasks Manual.
98 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050099
Brad Bishop316dfdd2018-06-25 12:45:53 -0400100 <para>
101 The layer's base directory
102 (<filename>meta-<replaceable>bsp_root_name</replaceable></filename>)
103 is the root directory of the BSP Layer.
104 This directory is what you add to the
105 <ulink url='&YOCTO_DOCS_REF_URL;#var-BBLAYERS'><filename>BBLAYERS</filename></ulink>
106 variable in the <filename>conf/bblayers.conf</filename> file found in the
107 <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>,
108 which is established after you run the OpenEmbedded build environment
109 setup script (i.e.
110 <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>).
111 Adding the root directory allows the
112 <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>
113 to recognize the BSP layer and from it build an image.
114 Here is an example:
115 <literallayout class='monospaced'>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500116 BBLAYERS ?= " \
117 /usr/local/src/yocto/meta \
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500118 /usr/local/src/yocto/meta-poky \
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500119 /usr/local/src/yocto/meta-yocto-bsp \
120 /usr/local/src/yocto/meta-mylayer \
121 "
Brad Bishop316dfdd2018-06-25 12:45:53 -0400122 </literallayout>
123 <note><title>Tip</title>
124 Ordering and
125 <ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILE_PRIORITY'><filename>BBFILE_PRIORITY</filename></ulink>
126 for the layers listed in <filename>BBLAYERS</filename>
127 matter.
128 For example, if multiple layers define a machine
129 configuration, the OpenEmbedded build system uses
130 the last layer searched given similar layer
131 priorities.
132 The build system works from the top-down through
133 the layers listed in <filename>BBLAYERS</filename>.
134 </note>
135 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500136
Brad Bishop316dfdd2018-06-25 12:45:53 -0400137 <para>
138 Some BSPs require or depend on additional layers
139 beyond the BSP's root layer in order to be functional.
140 In this case, you need to specify these layers in the
141 <filename>README</filename> "Dependencies" section of the
142 BSP's root layer.
143 Additionally, if any build instructions exist for the
144 BSP, you must add them to the "Dependencies" section.
145 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500146
Brad Bishop316dfdd2018-06-25 12:45:53 -0400147 <para>
148 Some layers function as a layer to hold other BSP layers.
149 These layers are knows as
150 "<ulink url='&YOCTO_DOCS_REF_URL;#term-container-layer'>container layers</ulink>".
Brad Bishopc342db32019-05-15 21:57:59 -0400151 An example of this type of layer is OpenEmbedded's
152 <ulink url='https://github.com/openembedded/meta-openembedded'><filename>meta-openembedded</filename></ulink>
153 layer.
154 The <filename>meta-openembedded</filename> layer contains
155 many <filename>meta-*</filename> layers.
Brad Bishop316dfdd2018-06-25 12:45:53 -0400156 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500157
Brad Bishop316dfdd2018-06-25 12:45:53 -0400158 <para>
159 For more information on layers, see the
160 "<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>"
161 section of the Yocto Project Development Tasks Manual.
162 </para>
163</section>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500164
Brad Bishop316dfdd2018-06-25 12:45:53 -0400165<section id='preparing-your-build-host-to-work-with-bsp-layers'>
166 <title>Preparing Your Build Host to Work With BSP Layers</title>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500167
Brad Bishop316dfdd2018-06-25 12:45:53 -0400168 <para>
169 This section describes how to get your build host ready
170 to work with BSP layers.
171 Once you have the host set up, you can create the layer
172 as described in the
173 "<link linkend='creating-a-new-bsp-layer-using-the-bitbake-layers-script'>Creating a new BSP Layer Using the <filename>bitbake-layers</filename> Script</link>"
174 section.
175 <note>
176 For structural information on BSPs, see the
177 <link linkend='bsp-filelayout'>Example Filesystem Layout</link>
178 section.
179 </note>
180 <orderedlist>
181 <listitem><para>
182 <emphasis>Set Up the Build Environment:</emphasis>
183 Be sure you are set up to use BitBake in a shell.
184 See the
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800185 "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-preparing-the-build-host'>Preparing the Build Host</ulink>"
Brad Bishop316dfdd2018-06-25 12:45:53 -0400186 section in the Yocto Project Development Tasks Manual for information
187 on how to get a build host ready that is either a native
188 Linux machine or a machine that uses CROPS.
189 </para></listitem>
190 <listitem><para>
191 <emphasis>Clone the <filename>poky</filename> Repository:</emphasis>
192 You need to have a local copy of the Yocto Project
193 <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
194 (i.e. a local <filename>poky</filename> repository).
195 See the
196 "<ulink url='&YOCTO_DOCS_DEV_URL;#cloning-the-poky-repository'>Cloning the <filename>poky</filename> Repository</ulink>"
197 and possibly the
198 "<ulink url='&YOCTO_DOCS_DEV_URL;#checking-out-by-branch-in-poky'>Checking Out by Branch in Poky</ulink>"
199 or
200 "<ulink url='&YOCTO_DOCS_DEV_URL;#checkout-out-by-tag-in-poky'>Checking Out by Tag in Poky</ulink>"
201 sections all in the Yocto Project Development Tasks Manual for
202 information on how to clone the <filename>poky</filename>
203 repository and check out the appropriate branch for your work.
204 </para></listitem>
205 <listitem><para>
206 <emphasis>Determine the BSP Layer You Want:</emphasis>
207 The Yocto Project supports many BSPs, which are maintained in
208 their own layers or in layers designed to contain several
209 BSPs.
210 To get an idea of machine support through BSP layers, you can
211 look at the
212 <ulink url='&YOCTO_RELEASE_DL_URL;/machines'>index of machines</ulink>
213 for the release.
214 </para></listitem>
215 <listitem><para>
216 <emphasis>Optionally Clone the
217 <filename>meta-intel</filename> BSP Layer:</emphasis>
218 If your hardware is based on current Intel CPUs and devices,
219 you can leverage this BSP layer.
220 For details on the <filename>meta-intel</filename> BSP layer,
221 see the layer's
222 <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel/tree/README'><filename>README</filename></ulink>
223 file.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500224 <orderedlist>
225 <listitem><para>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400226 <emphasis>Navigate to Your Source Directory:</emphasis>
227 Typically, you set up the
228 <filename>meta-intel</filename> Git repository
229 inside the
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500230 <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400231 (e.g. <filename>poky</filename>).
232 <literallayout class='monospaced'>
233 $ cd /home/<replaceable>you</replaceable>/poky
234 </literallayout>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500235 </para></listitem>
236 <listitem><para>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400237 <emphasis>Clone the Layer:</emphasis>
238 <literallayout class='monospaced'>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500239 $ git clone git://git.yoctoproject.org/meta-intel.git
240 Cloning into 'meta-intel'...
Brad Bishop316dfdd2018-06-25 12:45:53 -0400241 remote: Counting objects: 15585, done.
242 remote: Compressing objects: 100% (5056/5056), done.
243 remote: Total 15585 (delta 9123), reused 15329 (delta 8867)
244 Receiving objects: 100% (15585/15585), 4.51 MiB | 3.19 MiB/s, done.
245 Resolving deltas: 100% (9123/9123), done.
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500246 Checking connectivity... done.
247 </literallayout>
248 </para></listitem>
249 <listitem><para>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400250 <emphasis>Check Out the Proper Branch:</emphasis>
251 The branch you check out for
252 <filename>meta-intel</filename> must match the same
253 branch you are using for the Yocto Project release
254 (e.g. &DISTRO_NAME_NO_CAP;):
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500255 <literallayout class='monospaced'>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400256 $ cd meta-intel
257 $ git checkout -b &DISTRO_NAME_NO_CAP; remotes/origin/&DISTRO_NAME_NO_CAP;
258 Branch &DISTRO_NAME_NO_CAP; set up to track remote branch &DISTRO_NAME_NO_CAP; from origin.
259 Switched to a new branch '&DISTRO_NAME_NO_CAP;'
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500260 </literallayout>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400261 <note>
262 To see the available branch names in a cloned repository,
263 use the <filename>git branch -al</filename> command.
264 See the
265 "<ulink url='&YOCTO_DOCS_DEV_URL;#checking-out-by-branch-in-poky'>Checking Out By Branch in Poky</ulink>"
266 section in the Yocto Project Development Tasks
267 Manual for more information.
268 </note>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500269 </para></listitem>
270 </orderedlist>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400271 </para></listitem>
272 <listitem><para>
273 <emphasis>Optionally Set Up an Alternative BSP Layer:</emphasis>
274 If your hardware can be more closely leveraged to an
275 existing BSP not within the <filename>meta-intel</filename>
276 BSP layer, you can clone that BSP layer.</para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500277
Brad Bishop316dfdd2018-06-25 12:45:53 -0400278 <para>The process is identical to the process used for the
279 <filename>meta-intel</filename> layer except for the layer's
280 name.
281 For example, if you determine that your hardware most
282 closely matches the <filename>meta-raspberrypi</filename>,
283 clone that layer:
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500284 <literallayout class='monospaced'>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400285 $ git clone git://git.yoctoproject.org/meta-raspberrypi
286 Cloning into 'meta-raspberrypi'...
287 remote: Counting objects: 4743, done.
288 remote: Compressing objects: 100% (2185/2185), done.
289 remote: Total 4743 (delta 2447), reused 4496 (delta 2258)
290 Receiving objects: 100% (4743/4743), 1.18 MiB | 0 bytes/s, done.
291 Resolving deltas: 100% (2447/2447), done.
292 Checking connectivity... done.
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500293 </literallayout>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400294 </para></listitem>
295 <listitem><para>
296 <emphasis>Initialize the Build Environment:</emphasis>
297 While in the root directory of the Source Directory (i.e.
298 <filename>poky</filename>), run the
299 <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>
300 environment setup script to define the OpenEmbedded
301 build environment on your build host.
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500302 <literallayout class='monospaced'>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400303 $ source &OE_INIT_FILE;
304 </literallayout>
305 Among other things, the script creates the
306 <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>,
307 which is <filename>build</filename> in this case
308 and is located in the
309 <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>.
310 After the script runs, your current working directory
311 is set to the <filename>build</filename> directory.
312 </para></listitem>
313 </orderedlist>
314 </para>
315</section>
316
317<section id="bsp-filelayout">
318 <title>Example Filesystem Layout</title>
319
320 <para>
321 Defining a common BSP directory structure allows
322 end-users to understand and become familiar with
323 that standard.
324 A common format also encourages standardization
325 of software support for hardware.
326 </para>
327
328 <para>
329 The proposed form described in this section does
330 have elements that are specific to the OpenEmbedded
331 build system.
332 It is intended that developers can use this structure
333 with other build systems besides the OpenEmbedded build
334 system.
335 It is also intended that it will be be simple to extract
336 information and convert it to other formats if required.
337 The OpenEmbedded build system, through its standard
338 <ulink url='&YOCTO_DOCS_OM_URL;#the-yocto-project-layer-model'>layers mechanism</ulink>,
339 can directly accept the format described as a layer.
340 The BSP layer captures all the hardware-specific details
341 in one place using a standard format, which is useful
342 for any person wishing to use the hardware platform
343 regardless of the build system they are using.
344 </para>
345
346 <para>
347 The BSP specification does not include a build system
348 or other tools - the specification is concerned with
349 the hardware-specific components only.
350 At the end-distribution point, you can ship the BSP
351 layer combined with a build system and other tools.
352 Realize that it is important to maintain the distinction
353 that the BSP layer, a build system, and tools are
354 separate components that could to be combined in
355 certain end products.
356 </para>
357
358 <para>
359 Before looking at the common form for the file structure
360 inside a BSP Layer, you should be aware that some
361 requirements do exist in order for a BSP layer to
362 be considered compliant with the Yocto Project.
363 For that list of requirements, see the
364 "<link linkend='released-bsp-requirements'>Released BSP Requirements</link>"
365 section.
366 </para>
367
368 <para>
369 Below is the common form for the file structure
370 inside a BSP Layer.
371 While this basic form represents the standard,
372 realize that the actual file structures for specific
373 BSPs could differ.
374 <literallayout class='monospaced'>
375 meta-<replaceable>bsp_root_name</replaceable>/
376 meta-<replaceable>bsp_root_name</replaceable>/<replaceable>bsp_license_file</replaceable>
377 meta-<replaceable>bsp_root_name</replaceable>/README
378 meta-<replaceable>bsp_root_name</replaceable>/README.sources
379 meta-<replaceable>bsp_root_name</replaceable>/binary/<replaceable>bootable_images</replaceable>
380 meta-<replaceable>bsp_root_name</replaceable>/conf/layer.conf
381 meta-<replaceable>bsp_root_name</replaceable>/conf/machine/*.conf
382 meta-<replaceable>bsp_root_name</replaceable>/recipes-bsp/*
383 meta-<replaceable>bsp_root_name</replaceable>/recipes-core/*
384 meta-<replaceable>bsp_root_name</replaceable>/recipes-graphics/*
385 meta-<replaceable>bsp_root_name</replaceable>/recipes-kernel/linux/linux-yocto_<replaceable>kernel_rev</replaceable>.bbappend
386 </literallayout>
387 </para>
388
389 <para>
390 Below is an example of the Raspberry Pi BSP
391 layer that is available from the
392 <ulink url='&YOCTO_GIT_URL;'>Source Respositories</ulink>:
393 <literallayout class='monospaced'>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500394 meta-raspberrypi/COPYING.MIT
Brad Bishop316dfdd2018-06-25 12:45:53 -0400395 meta-raspberrypi/README.md
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500396 meta-raspberrypi/classes
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500397 meta-raspberrypi/classes/sdcard_image-rpi.bbclass
398 meta-raspberrypi/conf/
399 meta-raspberrypi/conf/layer.conf
400 meta-raspberrypi/conf/machine/
Brad Bishop316dfdd2018-06-25 12:45:53 -0400401 meta-raspberrypi/conf/machine/raspberrypi-cm.conf
402 meta-raspberrypi/conf/machine/raspberrypi-cm3.conf
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500403 meta-raspberrypi/conf/machine/raspberrypi.conf
Brad Bishop316dfdd2018-06-25 12:45:53 -0400404 meta-raspberrypi/conf/machine/raspberrypi0-wifi.conf
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500405 meta-raspberrypi/conf/machine/raspberrypi0.conf
406 meta-raspberrypi/conf/machine/raspberrypi2.conf
Brad Bishop316dfdd2018-06-25 12:45:53 -0400407 meta-raspberrypi/conf/machine/raspberrypi3-64.conf
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500408 meta-raspberrypi/conf/machine/raspberrypi3.conf
409 meta-raspberrypi/conf/machine/include
410 meta-raspberrypi/conf/machine/include/rpi-base.inc
411 meta-raspberrypi/conf/machine/include/rpi-default-providers.inc
412 meta-raspberrypi/conf/machine/include/rpi-default-settings.inc
413 meta-raspberrypi/conf/machine/include/rpi-default-versions.inc
Brad Bishop316dfdd2018-06-25 12:45:53 -0400414 meta-raspberrypi/conf/machine/include/tune-arm1176jzf-s.inc
415 meta-raspberrypi/docs
416 meta-raspberrypi/docs/Makefile
417 meta-raspberrypi/docs/conf.py
418 meta-raspberrypi/docs/contributing.md
419 meta-raspberrypi/docs/extra-apps.md
420 meta-raspberrypi/docs/extra-build-config.md
421 meta-raspberrypi/docs/index.rst
422 meta-raspberrypi/docs/layer-contents.md
423 meta-raspberrypi/docs/readme.md
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500424 meta-raspberrypi/files
425 meta-raspberrypi/files/custom-licenses
426 meta-raspberrypi/files/custom-licenses/Broadcom
427 meta-raspberrypi/recipes-bsp
428 meta-raspberrypi/recipes-bsp/bootfiles
429 meta-raspberrypi/recipes-bsp/bootfiles/bcm2835-bootfiles.bb
430 meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb
431 meta-raspberrypi/recipes-bsp/common
432 meta-raspberrypi/recipes-bsp/common/firmware.inc
Brad Bishop316dfdd2018-06-25 12:45:53 -0400433 meta-raspberrypi/recipes-bsp/formfactor
434 meta-raspberrypi/recipes-bsp/formfactor/formfactor
435 meta-raspberrypi/recipes-bsp/formfactor/formfactor/raspberrypi
436 meta-raspberrypi/recipes-bsp/formfactor/formfactor/raspberrypi/machconfig
437 meta-raspberrypi/recipes-bsp/formfactor/formfactor_0.0.bbappend
438 meta-raspberrypi/recipes-bsp/rpi-u-boot-src
439 meta-raspberrypi/recipes-bsp/rpi-u-boot-src/files
440 meta-raspberrypi/recipes-bsp/rpi-u-boot-src/files/boot.cmd.in
441 meta-raspberrypi/recipes-bsp/rpi-u-boot-src/rpi-u-boot-scr.bb
442 meta-raspberrypi/recipes-bsp/u-boot
443 meta-raspberrypi/recipes-bsp/u-boot/u-boot
444 meta-raspberrypi/recipes-bsp/u-boot/u-boot/*.patch
445 meta-raspberrypi/recipes-bsp/u-boot/u-boot_%.bbappend
446 meta-raspberrypi/recipes-connectivity
447 meta-raspberrypi/recipes-connectivity/bluez5
448 meta-raspberrypi/recipes-connectivity/bluez5/bluez5
449 meta-raspberrypi/recipes-connectivity/bluez5/bluez5/*.patch
450 meta-raspberrypi/recipes-connectivity/bluez5/bluez5/BCM43430A1.hcd
451 meta-raspberrypi/recipes-connectivity/bluez5/bluez5brcm43438.service
452 meta-raspberrypi/recipes-connectivity/bluez5/bluez5_%.bbappend
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500453 meta-raspberrypi/recipes-core
454 meta-raspberrypi/recipes-core/images
455 meta-raspberrypi/recipes-core/images/rpi-basic-image.bb
456 meta-raspberrypi/recipes-core/images/rpi-hwup-image.bb
457 meta-raspberrypi/recipes-core/images/rpi-test-image.bb
458 meta-raspberrypi/recipes-core/packagegroups
459 meta-raspberrypi/recipes-core/packagegroups/packagegroup-rpi-test.bb
460 meta-raspberrypi/recipes-core/psplash
461 meta-raspberrypi/recipes-core/psplash/files
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500462 meta-raspberrypi/recipes-core/psplash/files/psplash-raspberrypi-img.h
Brad Bishop316dfdd2018-06-25 12:45:53 -0400463 meta-raspberrypi/recipes-core/psplash/psplash_git.bbappend
464 meta-raspberrypi/recipes-core/udev
465 meta-raspberrypi/recipes-core/udev/udev-rules-rpi
466 meta-raspberrypi/recipes-core/udev/udev-rules-rpi/99-com.rules
467 meta-raspberrypi/recipes-core/udev/udev-rules-rpi.bb
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500468 meta-raspberrypi/recipes-devtools
469 meta-raspberrypi/recipes-devtools/bcm2835
Brad Bishop316dfdd2018-06-25 12:45:53 -0400470 meta-raspberrypi/recipes-devtools/bcm2835/bcm2835_1.52.bb
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500471 meta-raspberrypi/recipes-devtools/pi-blaster
472 meta-raspberrypi/recipes-devtools/pi-blaster/files
Brad Bishop316dfdd2018-06-25 12:45:53 -0400473 meta-raspberrypi/recipes-devtools/pi-blaster/files/*.patch
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500474 meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster_git.bb
475 meta-raspberrypi/recipes-devtools/python
476 meta-raspberrypi/recipes-devtools/python/python-rtimu
477 meta-raspberrypi/recipes-devtools/python/python-rtimu/*.patch
478 meta-raspberrypi/recipes-devtools/python/python-rtimu_git.bb
Brad Bishop316dfdd2018-06-25 12:45:53 -0400479 meta-raspberrypi/recipes-devtools/python/python-sense-hat_2.2.0.bb
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500480 meta-raspberrypi/recipes-devtools/python/rpi-gpio
481 meta-raspberrypi/recipes-devtools/python/rpi-gpio/*.patch
Brad Bishop316dfdd2018-06-25 12:45:53 -0400482 meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.6.3.bb
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500483 meta-raspberrypi/recipes-devtools/python/rpio
484 meta-raspberrypi/recipes-devtools/python/rpio/*.patch
485 meta-raspberrypi/recipes-devtools/python/rpio_0.10.0.bb
486 meta-raspberrypi/recipes-devtools/wiringPi
487 meta-raspberrypi/recipes-devtools/wiringPi/files
488 meta-raspberrypi/recipes-devtools/wiringPi/files/*.patch
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500489 meta-raspberrypi/recipes-devtools/wiringPi/wiringpi_git.bb
490 meta-raspberrypi/recipes-graphics
491 meta-raspberrypi/recipes-graphics/eglinfo
492 meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
493 meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-x11_%.bbappend
Brad Bishop316dfdd2018-06-25 12:45:53 -0400494 meta-raspberrypi/recipes-graphics/mesa
495 meta-raspberrypi/recipes-graphics/mesa/mesa-gl_%.bbappend
496 meta-raspberrypi/recipes-graphics/mesa/mesa_%.bbappend
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500497 meta-raspberrypi/recipes-graphics/userland
498 meta-raspberrypi/recipes-graphics/userland/userland
499 meta-raspberrypi/recipes-graphics/userland/userland/*.patch
500 meta-raspberrypi/recipes-graphics/userland/userland_git.bb
501 meta-raspberrypi/recipes-graphics/vc-graphics
502 meta-raspberrypi/recipes-graphics/vc-graphics/files
503 meta-raspberrypi/recipes-graphics/vc-graphics/files/egl.pc
504 meta-raspberrypi/recipes-graphics/vc-graphics/files/vchiq.sh
505 meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics-hardfp.bb
506 meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics.bb
507 meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics.inc
508 meta-raspberrypi/recipes-graphics/wayland
509 meta-raspberrypi/recipes-graphics/wayland/weston_%.bbappend
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500510 meta-raspberrypi/recipes-graphics/xorg-xserver
511 meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config
512 meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi
513 meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf
514 meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d
515 meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/10-evdev.conf
Brad Bishop316dfdd2018-06-25 12:45:53 -0400516 meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/98-pitft.conf
517 meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/99-calibration.conf
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500518 meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
Brad Bishop316dfdd2018-06-25 12:45:53 -0400519 meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500520 meta-raspberrypi/recipes-kernel
521 meta-raspberrypi/recipes-kernel/linux-firmware
Brad Bishop316dfdd2018-06-25 12:45:53 -0400522 meta-raspberrypi/recipes-kernel/linux-firmware/files
523 meta-raspberrypi/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.bin
524 meta-raspberrypi/recipes-kernel/linux-firmware/files/brcfmac43430-sdio.txt
525 meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_%.bbappend
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500526 meta-raspberrypi/recipes-kernel/linux
Brad Bishop316dfdd2018-06-25 12:45:53 -0400527 meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-dev.bb
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500528 meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc
Brad Bishop316dfdd2018-06-25 12:45:53 -0400529 meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.14.bb
530 meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.9.bb
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500531 meta-raspberrypi/recipes-multimedia
532 meta-raspberrypi/recipes-multimedia/gstreamer
533 meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx
534 meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/*.patch
535 meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_%.bbappend
536 meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend
Brad Bishop316dfdd2018-06-25 12:45:53 -0400537 meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12
538 meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12/*.patch
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500539 meta-raspberrypi/recipes-multimedia/omxplayer
540 meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer
541 meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/*.patch
542 meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer_git.bb
Brad Bishop316dfdd2018-06-25 12:45:53 -0400543 meta-raspberrypi/recipes-multimedia/x264
544 meta-raspberrypi/recipes-multimedia/x264/x264_git.bbappend
545 meta-raspberrypi/wic
546 meta-raspberrypi/wic/sdimage-raspberrypi.wks
547 </literallayout>
548 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500549
Brad Bishop316dfdd2018-06-25 12:45:53 -0400550 <para>
551 The following sections describe each part of the proposed
552 BSP format.
553 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500554
Brad Bishop316dfdd2018-06-25 12:45:53 -0400555 <section id="bsp-filelayout-license">
556 <title>License Files</title>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500557
Brad Bishop316dfdd2018-06-25 12:45:53 -0400558 <para>
559 You can find these files in the BSP Layer at:
560 <literallayout class='monospaced'>
561 meta-<replaceable>bsp_root_name</replaceable>/<replaceable>bsp_license_file</replaceable>
562 </literallayout>
563 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500564
Brad Bishop316dfdd2018-06-25 12:45:53 -0400565 <para>
566 These optional files satisfy licensing requirements
567 for the BSP.
568 The type or types of files here can vary depending
569 on the licensing requirements.
570 For example, in the Raspberry Pi BSP all licensing
571 requirements are handled with the
572 <filename>COPYING.MIT</filename> file.
573 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500574
Brad Bishop316dfdd2018-06-25 12:45:53 -0400575 <para>
576 Licensing files can be MIT, BSD, GPLv*, and so forth.
577 These files are recommended for the BSP but are
578 optional and totally up to the BSP developer.
579 For information on how to maintain license
580 compliance, see the
581 "<ulink url='&YOCTO_DOCS_DEV_URL;#maintaining-open-source-license-compliance-during-your-products-lifecycle'>Maintaining Open Source License Compliance During Your Product's Lifecycle</ulink>"
582 section in the Yocto Project Development Tasks
583 Manual.
584 </para>
585 </section>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500586
Brad Bishop316dfdd2018-06-25 12:45:53 -0400587 <section id="bsp-filelayout-readme">
588 <title>README File</title>
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500589
Brad Bishop316dfdd2018-06-25 12:45:53 -0400590 <para>
591 You can find this file in the BSP Layer at:
592 <literallayout class='monospaced'>
593 meta-<replaceable>bsp_root_name</replaceable>/README
594 </literallayout>
595 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500596
Brad Bishop316dfdd2018-06-25 12:45:53 -0400597 <para>
598 This file provides information on how to boot the live
599 images that are optionally included in the
600 <filename>binary/</filename> directory.
601 The <filename>README</filename> file also provides
602 information needed for building the image.
603 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500604
Brad Bishop316dfdd2018-06-25 12:45:53 -0400605 <para>
606 At a minimum, the <filename>README</filename> file must
607 contain a list of dependencies, such as the names of
608 any other layers on which the BSP depends and the name of
609 the BSP maintainer with his or her contact information.
610 </para>
611 </section>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500612
Brad Bishop316dfdd2018-06-25 12:45:53 -0400613 <section id="bsp-filelayout-readme-sources">
614 <title>README.sources File</title>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500615
Brad Bishop316dfdd2018-06-25 12:45:53 -0400616 <para>
617 You can find this file in the BSP Layer at:
618 <literallayout class='monospaced'>
619 meta-<replaceable>bsp_root_name</replaceable>/README.sources
620 </literallayout>
621 </para>
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500622
Brad Bishop316dfdd2018-06-25 12:45:53 -0400623 <para>
624 This file provides information on where to locate the BSP
625 source files used to build the images (if any) that
626 reside in
627 <filename>meta-<replaceable>bsp_root_name</replaceable>/binary</filename>.
628 Images in the <filename>binary</filename> would be images
629 released with the BSP.
630 The information in the <filename>README.sources</filename>
631 file also helps you find the
632 <ulink url='&YOCTO_DOCS_REF_URL;#metadata'>Metadata</ulink>
633 used to generate the images that ship with the BSP.
634 <note>
635 If the BSP's <filename>binary</filename> directory is
636 missing or the directory has no images, an existing
637 <filename>README.sources</filename> file is
638 meaningless and usually does not exist.
639 </note>
640 </para>
641 </section>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500642
Brad Bishop316dfdd2018-06-25 12:45:53 -0400643 <section id="bsp-filelayout-binary">
644 <title>Pre-built User Binaries</title>
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500645
Brad Bishop316dfdd2018-06-25 12:45:53 -0400646 <para>
647 You can find these files in the BSP Layer at:
648 <literallayout class='monospaced'>
649 meta-<replaceable>bsp_root_name</replaceable>/binary/<replaceable>bootable_images</replaceable>
650 </literallayout>
651 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500652
Brad Bishop316dfdd2018-06-25 12:45:53 -0400653 <para>
654 This optional area contains useful pre-built kernels
655 and user-space filesystem images released with the
656 BSP that are appropriate to the target system.
657 This directory typically contains graphical (e.g. Sato)
658 and minimal live images when the BSP tarball has been
659 created and made available in the
660 <ulink url='&YOCTO_HOME_URL;'>Yocto Project</ulink>
661 website.
662 You can use these kernels and images to get a system
663 running and quickly get started on development tasks.
664 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500665
Brad Bishop316dfdd2018-06-25 12:45:53 -0400666 <para>
667 The exact types of binaries present are highly
668 hardware-dependent.
669 The
670 <link linkend='bsp-filelayout-readme'><filename>README</filename></link>
671 file should be present in the BSP Layer and it
672 explains how to use the images with the target hardware.
673 Additionally, the
674 <link linkend='bsp-filelayout-readme-sources'><filename>README.sources</filename></link>
675 file should be present to locate the sources used to
676 build the images and provide information on the
677 Metadata.
678 </para>
679 </section>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500680
Brad Bishop316dfdd2018-06-25 12:45:53 -0400681 <section id='bsp-filelayout-layer'>
682 <title>Layer Configuration File</title>
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500683
Brad Bishop316dfdd2018-06-25 12:45:53 -0400684 <para>
685 You can find this file in the BSP Layer at:
686 <literallayout class='monospaced'>
687 meta-<replaceable>bsp_root_name</replaceable>/conf/layer.conf
688 </literallayout>
689 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500690
Brad Bishop316dfdd2018-06-25 12:45:53 -0400691 <para>
692 The <filename>conf/layer.conf</filename> file
693 identifies the file structure as a layer,
694 identifies the contents of the layer, and
695 contains information about how the build system should
696 use it.
697 Generally, a standard boilerplate file such as the
698 following works.
699 In the following example, you would replace
700 <replaceable>bsp</replaceable> with the actual
701 name of the BSP (i.e.
702 <replaceable>bsp_root_name</replaceable> from the example
703 template).
704 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500705
Brad Bishop316dfdd2018-06-25 12:45:53 -0400706 <para>
707 <literallayout class='monospaced'>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500708 # We have a conf and classes directory, add to BBPATH
709 BBPATH .= ":${LAYERDIR}"
710
711 # We have a recipes directory, add to BBFILES
712 BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500713 ${LAYERDIR}/recipes-*/*/*.bbappend"
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500714
715 BBFILE_COLLECTIONS += "<replaceable>bsp</replaceable>"
716 BBFILE_PATTERN_<replaceable>bsp</replaceable> = "^${LAYERDIR}/"
717 BBFILE_PRIORITY_<replaceable>bsp</replaceable> = "6"
718
719 LAYERDEPENDS_<replaceable>bsp</replaceable> = "intel"
Brad Bishop316dfdd2018-06-25 12:45:53 -0400720 </literallayout>
721 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500722
Brad Bishop316dfdd2018-06-25 12:45:53 -0400723 <para>
724 To illustrate the string substitutions, here are
725 the corresponding statements from the Raspberry
726 Pi <filename>conf/layer.conf</filename> file:
727 <literallayout class='monospaced'>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500728 # We have a conf and classes directory, append to BBPATH
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500729 BBPATH .= ":${LAYERDIR}"
730
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500731 # We have a recipes directory containing .bb and .bbappend files, add to BBFILES
732 BBFILES += "${LAYERDIR}/recipes*/*/*.bb \
733 ${LAYERDIR}/recipes*/*/*.bbappend"
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500734
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500735 BBFILE_COLLECTIONS += "raspberrypi"
736 BBFILE_PATTERN_raspberrypi := "^${LAYERDIR}/"
737 BBFILE_PRIORITY_raspberrypi = "9"
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500738
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500739 # Additional license directories.
740 LICENSE_PATH += "${LAYERDIR}/files/custom-licenses"
Brad Bishop316dfdd2018-06-25 12:45:53 -0400741 .
742 .
743 .
744 </literallayout>
745 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500746
Brad Bishop316dfdd2018-06-25 12:45:53 -0400747 <para>
748 This file simply makes
749 <ulink url='&YOCTO_DOCS_REF_URL;#bitbake-term'>BitBake</ulink>
750 aware of the recipes and configuration directories.
751 The file must exist so that the OpenEmbedded build system
752 can recognize the BSP.
753 </para>
754 </section>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500755
Brad Bishop316dfdd2018-06-25 12:45:53 -0400756 <section id="bsp-filelayout-machine">
757 <title>Hardware Configuration Options</title>
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500758
Brad Bishop316dfdd2018-06-25 12:45:53 -0400759 <para>
760 You can find these files in the BSP Layer at:
761 <literallayout class='monospaced'>
762 meta-<replaceable>bsp_root_name</replaceable>/conf/machine/*.conf
763 </literallayout>
764 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500765
Brad Bishop316dfdd2018-06-25 12:45:53 -0400766 <para>
767 The machine files bind together all the information
768 contained elsewhere in the BSP into a format that
769 the build system can understand.
770 Each BSP Layer requires at least one machine file.
771 If the BSP supports multiple machines, multiple
772 machine configuration files can exist.
773 These filenames correspond to the values to which
774 users have set the
775 <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink> variable.
776 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500777
Brad Bishop316dfdd2018-06-25 12:45:53 -0400778 <para>
779 These files define things such as the kernel package
780 to use
781 (<ulink url='&YOCTO_DOCS_REF_URL;#var-PREFERRED_PROVIDER'><filename>PREFERRED_PROVIDER</filename></ulink>
782 of
783 <ulink url='&YOCTO_DOCS_DEV_URL;#metadata-virtual-providers'>virtual/kernel</ulink>),
784 the hardware drivers to include in different types
785 of images, any special software components that are
786 needed, any bootloader information, and also any
787 special image format requirements.
788 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500789
Brad Bishop316dfdd2018-06-25 12:45:53 -0400790 <para>
791 This configuration file could also include a hardware
792 "tuning" file that is commonly used to define the
793 package architecture and specify optimization flags,
794 which are carefully chosen to give best performance
795 on a given processor.
796 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500797
Brad Bishop316dfdd2018-06-25 12:45:53 -0400798 <para>
799 Tuning files are found in the
800 <filename>meta/conf/machine/include</filename>
801 directory within the
802 <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>.
803 For example, many <filename>tune-*</filename> files
804 (e.g. <filename>tune-arm1136jf-s.inc</filename>,
805 <filename>tun-1586-nlp.inc</filename>, and so forth)
806 reside in the
807 <filename>poky/meta/conf/machine/include</filename>
808 directory.
809 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500810
Brad Bishop316dfdd2018-06-25 12:45:53 -0400811 <para>
812 To use an include file, you simply include them in the
813 machine configuration file.
814 For example, the Raspberry Pi BSP
815 <filename>raspberrypi3.conf</filename> contains the
816 following statement:
817 <literallayout class='monospaced'>
818 include conf/machine/include/rpi-base.inc
819 </literallayout>
820 </para>
821 </section>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500822
Brad Bishop316dfdd2018-06-25 12:45:53 -0400823 <section id='bsp-filelayout-misc-recipes'>
824 <title>Miscellaneous BSP-Specific Recipe Files</title>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500825
Brad Bishop316dfdd2018-06-25 12:45:53 -0400826 <para>
827 You can find these files in the BSP Layer at:
828 <literallayout class='monospaced'>
829 meta-<replaceable>bsp_root_name</replaceable>/recipes-bsp/*
830 </literallayout>
831 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500832
Brad Bishop316dfdd2018-06-25 12:45:53 -0400833 <para>
834 This optional directory contains miscellaneous recipe
835 files for the BSP.
836 Most notably would be the formfactor files.
837 For example, in the Raspberry Pi BSP there is the
838 <filename>formfactor_0.0.bbappend</filename> file,
839 which is an append file used to augment the recipe
840 that starts the build.
841 Furthermore, there are machine-specific settings used
842 during the build that are defined by the
843 <filename>machconfig</filename> file further down in
844 the directory.
845 Here is the <filename>machconfig</filename> file for
846 the Raspberry Pi BSP:
847 <literallayout class='monospaced'>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500848 HAVE_TOUCHSCREEN=0
849 HAVE_KEYBOARD=1
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500850
851 DISPLAY_CAN_ROTATE=0
852 DISPLAY_ORIENTATION=0
853 DISPLAY_DPI=133
Brad Bishop316dfdd2018-06-25 12:45:53 -0400854 </literallayout>
855 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500856
Brad Bishop316dfdd2018-06-25 12:45:53 -0400857 <note><para>
858 If a BSP does not have a formfactor entry, defaults
859 are established according to the formfactor
860 configuration file that is installed by the main
861 formfactor recipe
862 <filename>meta/recipes-bsp/formfactor/formfactor_0.0.bb</filename>,
863 which is found in the
864 <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>.
865 </para></note>
866 </section>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500867
Brad Bishop316dfdd2018-06-25 12:45:53 -0400868 <section id='bsp-filelayout-recipes-graphics'>
869 <title>Display Support Files</title>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500870
Brad Bishop316dfdd2018-06-25 12:45:53 -0400871 <para>
872 You can find these files in the BSP Layer at:
873 <literallayout class='monospaced'>
874 meta-<replaceable>bsp_root_name</replaceable>/recipes-graphics/*
875 </literallayout>
876 </para>
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500877
Brad Bishop316dfdd2018-06-25 12:45:53 -0400878 <para>
879 This optional directory contains recipes for the
880 BSP if it has special requirements for graphics
881 support.
882 All files that are needed for the BSP to support
883 a display are kept here.
884 </para>
885 </section>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500886
Brad Bishop316dfdd2018-06-25 12:45:53 -0400887 <section id='bsp-filelayout-kernel'>
888 <title>Linux Kernel Configuration</title>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500889
Brad Bishop316dfdd2018-06-25 12:45:53 -0400890 <para>
891 You can find these files in the BSP Layer at:
892 <literallayout class='monospaced'>
893 meta-<replaceable>bsp_root_name</replaceable>/recipes-kernel/linux/linux*.bbappend
894 meta-<replaceable>bsp_root_name</replaceable>/recipes-kernel/linux/*.bb
895 </literallayout>
896 </para>
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500897
Brad Bishop316dfdd2018-06-25 12:45:53 -0400898 <para>
899 Append files (<filename>*.bbappend</filename>) modify
900 the main kernel recipe being used to build the image.
901 The <filename>*.bb</filename> files would be a
902 developer-supplied kernel recipe.
903 This area of the BSP hierarchy can contain both these
904 types of files, although in practice, it is likely that
905 you would have one or the other.
906 </para>
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500907
Brad Bishop316dfdd2018-06-25 12:45:53 -0400908 <para>
909 For your BSP, you typically want to use an existing Yocto
910 Project kernel recipe found in the
911 <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
912 at <filename>meta/recipes-kernel/linux</filename>.
913 You can append machine-specific changes to the
914 kernel recipe by using a similarly named append
915 file, which is located in the BSP Layer for your
916 target device (e.g. the
917 <filename>meta-<replaceable>bsp_root_name</replaceable>/recipes-kernel/linux</filename> directory).
918 </para>
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500919
Brad Bishop316dfdd2018-06-25 12:45:53 -0400920 <para>
921 Suppose you are using the
922 <filename>linux-yocto_4.4.bb</filename> recipe to
923 build the kernel.
924 In other words, you have selected the kernel in your
925 <replaceable>bsp_root_name</replaceable><filename>.conf</filename>
926 file by adding
927 <ulink url='&YOCTO_DOCS_REF_URL;#var-PREFERRED_PROVIDER'><filename>PREFERRED_PROVIDER</filename></ulink>
928 and
929 <ulink url='&YOCTO_DOCS_REF_URL;#var-PREFERRED_VERSION'><filename>PREFERRED_VERSION</filename></ulink>
930 statements as follows:
931 <literallayout class='monospaced'>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500932 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500933 PREFERRED_VERSION_linux-yocto ?= "4.4%"
Brad Bishop316dfdd2018-06-25 12:45:53 -0400934 </literallayout>
935 <note>
936 When the preferred provider is assumed by
937 default, the
938 <filename>PREFERRED_PROVIDER</filename>
939 statement does not appear in the
940 <replaceable>bsp_root_name</replaceable><filename>.conf</filename> file.
941 </note>
942 You would use the
943 <filename>linux-yocto_4.4.bbappend</filename>
944 file to append specific BSP settings to the kernel,
945 thus configuring the kernel for your particular BSP.
946 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500947
Brad Bishop316dfdd2018-06-25 12:45:53 -0400948 <para>
949 You can find more information on what your append file
950 should contain in the
951 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#creating-the-append-file'>Creating the Append File</ulink>"
952 section in the Yocto Project Linux Kernel Development
953 Manual.
954 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500955
Brad Bishop316dfdd2018-06-25 12:45:53 -0400956 <para>
957 An alternate scenario is when you create your own
958 kernel recipe for the BSP.
959 A good example of this is the Raspberry Pi BSP.
960 If you examine the
961 <filename>recipes-kernel/linux</filename> directory
962 you see the following:
963 <literallayout class='monospaced'>
964 linux-raspberrypi-dev.bb
965 linux-raspberrypi.inc
966 linux-raspberrypi_4.14.bb
967 linux-raspberrypi_4.9.bb
968 </literallayout>
969 The directory contains three kernel recipes and a
970 common include file.
971 </para>
972 </section>
973</section>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500974
Brad Bishop316dfdd2018-06-25 12:45:53 -0400975<section id='developing-a-board-support-package-bsp'>
976 <title>Developing a Board Support Package (BSP)</title>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500977
Brad Bishop316dfdd2018-06-25 12:45:53 -0400978 <para>
979 This section contains the high-level procedure you can
980 follow to create a BSP.
981 Although not required for BSP creation, the
982 <filename>meta-intel</filename> repository, which
983 contains many BSPs supported by the Yocto Project,
984 is part of the example.
985 </para>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500986
Brad Bishop316dfdd2018-06-25 12:45:53 -0400987 <para>
988 For an example that shows how to create a new
989 layer using the tools, see the
990 "<link linkend='creating-a-new-bsp-layer-using-the-bitbake-layers-script'>Creating a New BSP Layer Using the <filename>bitbake-layers</filename> Script</link>"
991 section.
992 </para>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500993
Brad Bishop316dfdd2018-06-25 12:45:53 -0400994 <para>
995 The following illustration and list summarize the BSP
996 creation general workflow.
997 </para>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500998
Brad Bishop316dfdd2018-06-25 12:45:53 -0400999 <para>
1000 <imagedata fileref="figures/bsp-dev-flow.png" width="7in" depth="5in" align="center" scalefit="1" />
1001 </para>
Brad Bishopd7bf8c12018-02-25 22:55:05 -05001002
Brad Bishop316dfdd2018-06-25 12:45:53 -04001003 <para>
1004 <orderedlist>
1005 <listitem><para>
1006 <emphasis>Set up Your Host Development System
1007 to Support Development Using the Yocto
1008 Project</emphasis>:
1009 See the
Brad Bishop1a4b7ee2018-12-16 17:11:34 -08001010 "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-preparing-the-build-host'>Preparing the Build Host</ulink>"
Brad Bishop316dfdd2018-06-25 12:45:53 -04001011 section in the Yocto Project Development Tasks
1012 Manual for options on how to get a system ready
1013 to use the Yocto Project.
1014 </para></listitem>
1015 <listitem><para>
1016 <emphasis>Establish the
1017 <filename>meta-intel</filename>
1018 Repository on Your System:</emphasis>
1019 Having local copies of these supported BSP layers
1020 on your system gives you access to layers you
1021 might be able to leverage when creating your BSP.
1022 For information on how to get these files, see the
1023 "<link linkend='preparing-your-build-host-to-work-with-bsp-layers'>Preparing Your Build Host to Work with BSP Layers</link>"
1024 section.
1025 </para></listitem>
1026 <listitem><para>
1027 <emphasis>Create Your Own BSP Layer Using the
1028 <filename>bitbake-layers</filename>
1029 Script:</emphasis>
1030 Layers are ideal for isolating and storing work
1031 for a given piece of hardware.
1032 A layer is really just a location or area in which you
1033 place the recipes and configurations for your BSP.
1034 In fact, a BSP is, in itself, a special type of layer.
1035 The simplest way to create a new BSP layer that is
1036 compliant with the Yocto Project is to use the
1037 <filename>bitbake-layers</filename> script.
1038 For information about that script, see the
1039 "<link linkend='creating-a-new-bsp-layer-using-the-bitbake-layers-script'>Creating a New BSP Layer Using the <filename>bitbake-layers</filename> Script</link>"
1040 section.</para>
Brad Bishopd7bf8c12018-02-25 22:55:05 -05001041
Brad Bishop316dfdd2018-06-25 12:45:53 -04001042 <para>Another example that illustrates a layer
1043 is an application.
1044 Suppose you are creating an application that has
1045 library or other dependencies in order for it to
1046 compile and run.
1047 The layer, in this case, would be where all the
1048 recipes that define those dependencies are kept.
1049 The key point for a layer is that it is an
1050 isolated area that contains all the relevant
1051 information for the project that the
1052 OpenEmbedded build system knows about.
1053 For more information on layers, see the
1054 "<ulink url='&YOCTO_DOCS_OM_URL;#the-yocto-project-layer-model'>The Yocto Project Layer Model</ulink>"
1055 section in the Yocto Project Overview and Concepts
1056 Manual.
1057 You can also reference the
1058 "<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>"
1059 section in the Yocto Project Development Tasks
1060 Manual.
1061 For more information on BSP layers, see the
1062 "<link linkend='bsp-layers'>BSP Layers</link>"
1063 section.
1064 <note><title>Notes</title>
1065 <itemizedlist>
1066 <listitem><para>
1067 Five hardware reference BSPs exist
1068 that are part of the Yocto Project release
1069 and are located in the
1070 <filename>poky/meta-yocto-bsp</filename> BSP
1071 layer:
1072 <itemizedlist>
1073 <listitem><para>
1074 Texas Instruments Beaglebone
1075 (<filename>beaglebone-yocto</filename>)
1076 </para></listitem>
1077 <listitem><para>
1078 Freescale MPC8315E-RDB
1079 (<filename>mpc8315e-rdb</filename>)
1080 </para></listitem>
1081 <listitem><para>
1082 Ubiquiti Networks EdgeRouter Lite
1083 (<filename>edgerouter</filename>)
1084 </para></listitem>
1085 <listitem><para>
1086 Two general IA platforms
1087 (<filename>genericx86</filename> and
1088 <filename>genericx86-64</filename>)
1089 </para></listitem>
1090 </itemizedlist>
1091 </para></listitem>
1092 <listitem><para>
1093 Three core Intel BSPs exist as part of
1094 the Yocto Project release in the
Brad Bishopd7bf8c12018-02-25 22:55:05 -05001095 <filename>meta-intel</filename> layer:
1096 <itemizedlist>
1097 <listitem><para>
1098 <filename>intel-core2-32</filename>,
Brad Bishop316dfdd2018-06-25 12:45:53 -04001099 which is a BSP optimized for the Core2
1100 family of CPUs as well as all CPUs
1101 prior to the Silvermont core.
Brad Bishopd7bf8c12018-02-25 22:55:05 -05001102 </para></listitem>
1103 <listitem><para>
1104 <filename>intel-corei7-64</filename>,
Brad Bishop316dfdd2018-06-25 12:45:53 -04001105 which is a BSP optimized for Nehalem
1106 and later Core and Xeon CPUs as well
1107 as Silvermont and later Atom CPUs,
1108 such as the Baytrail SoCs.
Brad Bishopd7bf8c12018-02-25 22:55:05 -05001109 </para></listitem>
1110 <listitem><para>
1111 <filename>intel-quark</filename>,
Brad Bishop316dfdd2018-06-25 12:45:53 -04001112 which is a BSP optimized for the
1113 Intel Galileo gen1 &amp; gen2
1114 development boards.
Brad Bishopd7bf8c12018-02-25 22:55:05 -05001115 </para></listitem>
Brad Bishop316dfdd2018-06-25 12:45:53 -04001116 </itemizedlist>
Brad Bishopd7bf8c12018-02-25 22:55:05 -05001117 </para></listitem>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001118 </itemizedlist>
Brad Bishop316dfdd2018-06-25 12:45:53 -04001119 </note></para>
1120
1121 <para>When you set up a layer for a new BSP,
1122 you should follow a standard layout.
1123 This layout is described in the
1124 "<link linkend='bsp-filelayout'>Example Filesystem Layout</link>"
1125 section.
1126 In the standard layout, notice the suggested
1127 structure for recipes and configuration
1128 information.
1129 You can see the standard layout for a BSP
1130 by examining any supported BSP found in the
1131 <filename>meta-intel</filename> layer inside
1132 the Source Directory.
1133 </para></listitem>
1134 <listitem><para>
1135 <emphasis>Make Configuration Changes to Your New
1136 BSP Layer:</emphasis>
1137 The standard BSP layer structure organizes the
1138 files you need to edit in
1139 <filename>conf</filename> and several
1140 <filename>recipes-*</filename> directories
1141 within the BSP layer.
1142 Configuration changes identify where your new
1143 layer is on the local system and identifies the
1144 kernel you are going to use.
1145 When you run the
1146 <filename>bitbake-layers</filename> script,
1147 you are able to interactively configure many
1148 things for the BSP (e.g. keyboard, touchscreen,
1149 and so forth).
1150 </para></listitem>
1151 <listitem><para>
1152 <emphasis>Make Recipe Changes to Your New BSP
1153 Layer:</emphasis>
1154 Recipe changes include altering recipes
1155 (<filename>*.bb</filename> files), removing
1156 recipes you do not use, and adding new recipes
1157 or append files (<filename>.bbappend</filename>)
1158 that support your hardware.
1159 </para></listitem>
1160 <listitem><para>
1161 <emphasis>Prepare for the Build:</emphasis>
1162 Once you have made all the changes to your BSP
1163 layer, there remains a few things you need to
1164 do for the OpenEmbedded build system in order
1165 for it to create your image.
1166 You need to get the build environment ready by
1167 sourcing an environment setup script
1168 (i.e. <filename>oe-init-build-env</filename>)
1169 and you need to be sure two key configuration
1170 files are configured appropriately: the
1171 <filename>conf/local.conf</filename> and the
1172 <filename>conf/bblayers.conf</filename> file.
1173 You must make the OpenEmbedded build system aware
1174 of your new layer.
1175 See the
1176 "<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-your-layer'>Enabling Your Layer</ulink>"
1177 section in the Yocto Project Development Tasks Manual
1178 for information on how to let the build system
1179 know about your new layer.
1180 </para></listitem>
1181 <listitem><para>
1182 <emphasis>Build the Image:</emphasis>
1183 The OpenEmbedded build system uses the BitBake tool
1184 to build images based on the type of image you want to
1185 create.
1186 You can find more information about BitBake in the
1187 <ulink url='&YOCTO_DOCS_BB_URL;'>BitBake User Manual</ulink>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001188 </para>
1189
Brad Bishop316dfdd2018-06-25 12:45:53 -04001190 <para>The build process supports several types of
1191 images to satisfy different needs.
1192 See the
1193 "<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>"
1194 chapter in the Yocto Project Reference Manual for
1195 information on supported images.
1196 </para></listitem>
1197 </orderedlist>
1198 </para>
1199</section>
1200
1201<section id='requirements-and-recommendations-for-released-bsps'>
1202 <title>Requirements and Recommendations for Released BSPs</title>
1203
1204 <para>
1205 Certain requirements exist for a released BSP to be
1206 considered compliant with the Yocto Project.
1207 Additionally, recommendations also exist.
1208 This section describes the requirements and
1209 recommendations for released BSPs.
1210 </para>
1211
1212 <section id='released-bsp-requirements'>
1213 <title>Released BSP Requirements</title>
1214
1215 <para>
1216 Before looking at BSP requirements, you should consider
1217 the following:
1218 <itemizedlist>
1219 <listitem><para>
1220 The requirements here assume the BSP layer
1221 is a well-formed, "legal" layer that can be
1222 added to the Yocto Project.
1223 For guidelines on creating a layer that meets
1224 these base requirements, see the
1225 "<link linkend='bsp-layers'>BSP Layers</link>"
1226 section in this manual and the
1227 "<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers"</ulink>"
1228 section in the Yocto Project Development Tasks
1229 Manual.
1230 </para></listitem>
1231 <listitem><para>
1232 The requirements in this section apply
1233 regardless of how you package a BSP.
1234 You should consult the packaging and distribution
1235 guidelines for your specific release process.
1236 For an example of packaging and distribution
1237 requirements, see the
1238 "<ulink url='https://wiki.yoctoproject.org/wiki/Third_Party_BSP_Release_Process'>Third Party BSP Release Process</ulink>"
1239 wiki page.
1240 </para></listitem>
1241 <listitem><para>
1242 The requirements for the BSP as it is made
1243 available to a developer are completely
1244 independent of the released form of the BSP.
1245 For example, the BSP Metadata can be contained
1246 within a Git repository and could have a directory
1247 structure completely different from what appears
1248 in the officially released BSP layer.
1249 </para></listitem>
1250 <listitem><para>
1251 It is not required that specific packages or
1252 package modifications exist in the BSP layer,
1253 beyond the requirements for general
1254 compliance with the Yocto Project.
1255 For example, no requirement exists dictating
1256 that a specific kernel or kernel version be
1257 used in a given BSP.
1258 </para></listitem>
1259 </itemizedlist>
1260 </para>
1261
1262 <para>
1263 Following are the requirements for a released BSP
1264 that conform to the Yocto Project:
1265 <itemizedlist>
1266 <listitem><para>
1267 <emphasis>Layer Name:</emphasis>
1268 The BSP must have a layer name that follows
1269 the Yocto Project standards.
1270 For information on BSP layer names, see the
1271 "<link linkend='bsp-layers'>BSP Layers</link>" section.
1272 </para></listitem>
1273 <listitem><para>
1274 <emphasis>File System Layout:</emphasis>
1275 When possible, use the same directory names
1276 in your BSP layer as listed in the
1277 <filename>recipes.txt</filename> file, which
1278 is found in <filename>poky/meta</filename>
1279 directory of the
1280 <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
1281 or in the OpenEmbedded-Core Layer
1282 (<filename>openembedded-core</filename>) at
1283 <ulink url='http://git.openembedded.org/openembedded-core/tree/meta'></ulink>.
1284 </para>
1285
1286 <para>You should place recipes
1287 (<filename>*.bb</filename> files) and recipe
1288 modifications (<filename>*.bbappend</filename>
1289 files) into <filename>recipes-*</filename>
1290 subdirectories by functional area as outlined
1291 in <filename>recipes.txt</filename>.
1292 If you cannot find a category in
1293 <filename>recipes.txt</filename> to fit a
1294 particular recipe, you can make up your own
1295 <filename>recipes-*</filename> subdirectory.
1296 </para>
1297
1298 <para>Within any particular
1299 <filename>recipes-*</filename> category, the
1300 layout should match what is found in the
1301 OpenEmbedded-Core Git repository
1302 (<filename>openembedded-core</filename>)
1303 or the Source Directory (<filename>poky</filename>).
1304 In other words, make sure you place related
1305 files in appropriately related
1306 <filename>recipes-*</filename> subdirectories
1307 specific to the recipe's function, or within
1308 a subdirectory containing a set of closely-related
1309 recipes.
1310 The recipes themselves should follow the general
1311 guidelines for recipes used in the Yocto Project
1312 found in the
1313 "<ulink url='http://openembedded.org/wiki/Styleguide'>OpenEmbedded Style Guide</ulink>".
1314 </para></listitem>
1315 <listitem><para>
1316 <emphasis>License File:</emphasis>
1317 You must include a license file in the
1318 <filename>meta-</filename><replaceable>bsp_root_name</replaceable>
1319 directory.
1320 This license covers the BSP Metadata as a whole.
1321 You must specify which license to use since no
1322 default license exists when one not specified.
1323 See the
1324 <ulink url='&YOCTO_GIT_URL;/cgit.cgi/meta-raspberrypi/tree/COPYING.MIT'><filename>COPYING.MIT</filename></ulink>
1325 file for the Raspberry Pi BSP in the
1326 <filename>meta-raspberrypi</filename> BSP layer
1327 as an example.
1328 </para></listitem>
1329 <listitem><para>
1330 <emphasis>README File:</emphasis>
1331 You must include a <filename>README</filename>
1332 file in the
1333 <filename>meta-</filename><replaceable>bsp_root_name</replaceable>
1334 directory.
1335 See the
1336 <ulink url='&YOCTO_GIT_URL;/cgit.cgi/meta-raspberrypi/tree/README.md'><filename>README.md</filename></ulink>
1337 file for the Raspberry Pi BSP in the
1338 <filename>meta-raspberrypi</filename> BSP layer
1339 as an example.</para>
1340
1341 <para>At a minimum, the <filename>README</filename>
1342 file should contain the following:
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001343 <itemizedlist>
Brad Bishop316dfdd2018-06-25 12:45:53 -04001344 <listitem><para>
1345 A brief description about the hardware the BSP
1346 targets.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001347 </para></listitem>
Brad Bishop316dfdd2018-06-25 12:45:53 -04001348 <listitem><para>
1349 A list of all the dependencies
1350 on which a BSP layer depends.
1351 These dependencies are typically a list
1352 of required layers needed to build the
1353 BSP.
1354 However, the dependencies should also
1355 contain information regarding any other
1356 dependencies the BSP might have.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001357 </para></listitem>
Brad Bishop316dfdd2018-06-25 12:45:53 -04001358 <listitem><para>
1359 Any required special licensing information.
1360 For example, this information includes
1361 information on special variables needed
1362 to satisfy a EULA, or instructions on
1363 information needed to build or distribute
1364 binaries built from the BSP Metadata.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001365 </para></listitem>
Brad Bishop316dfdd2018-06-25 12:45:53 -04001366 <listitem><para>
1367 The name and contact information for the
1368 BSP layer maintainer.
1369 This is the person to whom patches and
1370 questions should be sent.
1371 For information on how to find the right
1372 person, see the
1373 "<ulink url='&YOCTO_DOCS_DEV_URL;#how-to-submit-a-change'>Submitting a Change to the Yocto Project</ulink>"
1374 section in the Yocto Project Development
1375 Tasks Manual.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001376 </para></listitem>
Brad Bishop316dfdd2018-06-25 12:45:53 -04001377 <listitem><para>
1378 Instructions on how to build the BSP using
1379 the BSP layer.
1380 </para></listitem>
1381 <listitem><para>
1382 Instructions on how to boot the BSP build
1383 from the BSP layer.
1384 </para></listitem>
1385 <listitem><para>
1386 Instructions on how to boot the binary
1387 images contained in the
1388 <filename>binary</filename> directory,
1389 if present.
1390 </para></listitem>
1391 <listitem><para>
1392 Information on any known bugs or issues
1393 that users should know about when either
1394 building or booting the BSP binaries.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001395 </para></listitem>
1396 </itemizedlist>
Brad Bishop316dfdd2018-06-25 12:45:53 -04001397 </para></listitem>
1398 <listitem><para>
1399 <emphasis>README.sources File:</emphasis>
1400 If you BSP contains binary images in the
1401 <filename>binary</filename> directory, you must
1402 include a <filename>README.sources</filename>
1403 file in the
1404 <filename>meta-</filename><replaceable>bsp_root_name</replaceable>
1405 directory.
1406 This file specifies exactly where you can find
1407 the sources used to generate the binary images.
1408 </para></listitem>
1409 <listitem><para>
1410 <emphasis>Layer Configuration File:</emphasis>
1411 You must include a
1412 <filename>conf/layer.conf</filename> file in
1413 the
1414 <filename>meta-</filename><replaceable>bsp_root_name</replaceable>
1415 directory.
1416 This file identifies the
1417 <filename>meta-</filename><replaceable>bsp_root_name</replaceable>
1418 BSP layer as a layer to the build system.
1419 </para></listitem>
1420 <listitem><para>
1421 <emphasis>Machine Configuration File:</emphasis>
1422 You must include one or more
1423 <filename>conf/machine/</filename><replaceable>bsp_root_name</replaceable><filename>.conf</filename>
1424 files in the
1425 <filename>meta-</filename><replaceable>bsp_root_name</replaceable>
1426 directory.
1427 These configuration files define machine targets
1428 that can be built using the BSP layer.
1429 Multiple machine configuration files define
1430 variations of machine configurations that the
1431 BSP supports.
1432 If a BSP supports multiple machine variations,
1433 you need to adequately describe each variation
1434 in the BSP <filename>README</filename> file.
1435 Do not use multiple machine configuration files
1436 to describe disparate hardware.
1437 If you do have very different targets, you should
1438 create separate BSP layers for each target.
1439 <note>
1440 It is completely possible for a developer to
1441 structure the working repository as a
1442 conglomeration of unrelated BSP files, and to
1443 possibly generate BSPs targeted for release
1444 from that directory using scripts or some
1445 other mechanism
1446 (e.g. <filename>meta-yocto-bsp</filename> layer).
1447 Such considerations are outside the scope of
1448 this document.
1449 </note>
1450 </para></listitem>
1451 </itemizedlist>
1452 </para>
1453 </section>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001454
Brad Bishop316dfdd2018-06-25 12:45:53 -04001455 <section id='released-bsp-recommendations'>
1456 <title>Released BSP Recommendations</title>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001457
Brad Bishop316dfdd2018-06-25 12:45:53 -04001458 <para>
1459 Following are recommendations for released BSPs that
1460 conform to the Yocto Project:
1461 <itemizedlist>
1462 <listitem><para>
1463 <emphasis>Bootable Images:</emphasis>
1464 Released BSPs can contain one or more bootable
1465 images.
1466 Including bootable images allows users to easily
1467 try out the BSP using their own hardware.</para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001468
Brad Bishop316dfdd2018-06-25 12:45:53 -04001469 <para>In some cases, it might not be convenient
1470 to include a bootable image.
1471 If so, you might want to make two versions of the
1472 BSP available: one that contains binary images, and
1473 one that does not.
1474 The version that does not contain bootable images
1475 avoids unnecessary download times for users not
1476 interested in the images.</para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001477
Brad Bishop316dfdd2018-06-25 12:45:53 -04001478 <para>If you need to distribute a BSP and include
1479 bootable images or build kernel and filesystems
1480 meant to allow users to boot the BSP for evaluation
1481 purposes, you should put the images and artifacts
1482 within a
1483 <filename>binary/</filename> subdirectory located
1484 in the
1485 <filename>meta-</filename><replaceable>bsp_root_name</replaceable>
1486 directory.
1487 <note>
1488 If you do include a bootable image as part
1489 of the BSP and the image was built by software
1490 covered by the GPL or other open source licenses,
1491 it is your responsibility to understand
1492 and meet all licensing requirements, which could
1493 include distribution of source files.
1494 </note>
1495 </para></listitem>
1496 <listitem><para>
1497 <emphasis>Use a Yocto Linux Kernel:</emphasis>
1498 Kernel recipes in the BSP should be based on a
1499 Yocto Linux kernel.
1500 Basing your recipes on these kernels reduces
1501 the costs for maintaining the BSP and increases
1502 its scalability.
1503 See the <filename>Yocto Linux Kernel</filename>
1504 category in the
1505 <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink>
1506 for these kernels.
1507 </para></listitem>
1508 </itemizedlist>
1509 </para>
1510 </section>
1511</section>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001512
Brad Bishop316dfdd2018-06-25 12:45:53 -04001513<section id='customizing-a-recipe-for-a-bsp'>
1514 <title>Customizing a Recipe for a BSP</title>
1515
1516 <para>
1517 If you plan on customizing a recipe for a particular BSP,
1518 you need to do the following:
1519 <itemizedlist>
1520 <listitem><para>
1521 Create a <filename>*.bbappend</filename> file for
1522 the modified recipe.
1523 For information on using append files, see the
1524 "<ulink url='&YOCTO_DOCS_DEV_URL;#using-bbappend-files'>Using .bbappend Files in Your Layer</ulink>"
1525 section in the Yocto Project Development Tasks
1526 Manual.
1527 </para></listitem>
1528 <listitem><para>
1529 Ensure your directory structure in the BSP layer
1530 that supports your machine is such that the
1531 OpenEmbedded build system can find it.
1532 See the example later in this section for more
1533 information.
1534 </para></listitem>
1535 <listitem><para>
1536 Put the append file in a directory whose name matches
1537 the machine's name and is located in an appropriate
1538 sub-directory inside the BSP layer (i.e.
1539 <filename>recipes-bsp</filename>,
1540 <filename>recipes-graphics</filename>,
1541 <filename>recipes-core</filename>, and so forth).
1542 </para></listitem>
1543 <listitem><para>
1544 Place the BSP-specific files in the proper
1545 directory inside the BSP layer.
1546 How expansive the layer is affects where you must
1547 place these files.
1548 For example, if your layer supports several
1549 different machine types, you need to be sure your
1550 layer's directory structure includes hierarchy
1551 that separates the files according to machine.
1552 If your layer does not support multiple machines,
1553 the layer would not have that additional hierarchy
1554 and the files would obviously not be able to reside
1555 in a machine-specific directory.
1556 </para></listitem>
1557 </itemizedlist>
1558 </para>
1559
1560 <para>
1561 Following is a specific example to help you better understand
1562 the process.
1563 This example customizes customizes a recipe by adding a
1564 BSP-specific configuration file named
1565 <filename>interfaces</filename> to the
1566 <filename>init-ifupdown_1.0.bb</filename> recipe for machine
1567 "xyz" where the BSP layer also supports several other
1568 machines:
1569 <orderedlist>
1570 <listitem><para>
1571 Edit the
1572 <filename>init-ifupdown_1.0.bbappend</filename> file
1573 so that it contains the following:
1574 <literallayout class='monospaced'>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001575 FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
Brad Bishop316dfdd2018-06-25 12:45:53 -04001576 </literallayout>
1577 The append file needs to be in the
1578 <filename>meta-xyz/recipes-core/init-ifupdown</filename>
1579 directory.
1580 </para></listitem>
1581 <listitem><para>
1582 Create and place the new
1583 <filename>interfaces</filename> configuration file in
1584 the BSP's layer here:
1585 <literallayout class='monospaced'>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001586 meta-xyz/recipes-core/init-ifupdown/files/xyz-machine-one/interfaces
Brad Bishop316dfdd2018-06-25 12:45:53 -04001587 </literallayout>
1588 <note>
1589 If the <filename>meta-xyz</filename> layer did
1590 not support multiple machines, you would place
1591 the <filename>interfaces</filename> configuration
1592 file in the layer here:
1593 <literallayout class='monospaced'>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001594 meta-xyz/recipes-core/init-ifupdown/files/interfaces
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001595 </literallayout>
Brad Bishop316dfdd2018-06-25 12:45:53 -04001596 </note>
1597 The
1598 <ulink url='&YOCTO_DOCS_REF_URL;#var-FILESEXTRAPATHS'><filename>FILESEXTRAPATHS</filename></ulink>
1599 variable in the append files extends the search path
1600 the build system uses to find files during the build.
1601 Consequently, for this example you need to have the
1602 <filename>files</filename> directory in the same
1603 location as your append file.
1604 </para></listitem>
1605 </orderedlist>
1606 </para>
1607</section>
1608
1609<section id='bsp-licensing-considerations'>
1610 <title>BSP Licensing Considerations</title>
1611
1612 <para>
1613 In some cases, a BSP contains separately licensed
1614 Intellectual Property (IP) for a component or components.
1615 For these cases, you are required to accept the terms
1616 of a commercial or other type of license that requires
1617 some kind of explicit End User License Agreement (EULA).
1618 Once you accept the license, the OpenEmbedded build system
1619 can then build and include the corresponding component
1620 in the final BSP image.
1621 If the BSP is available as a pre-built image, you can
1622 download the image after agreeing to the license or EULA.
1623 </para>
1624
1625 <para>
1626 You could find that some separately licensed components
1627 that are essential for normal operation of the system might
1628 not have an unencumbered (or free) substitute.
1629 Without these essential components, the system would be
1630 non-functional.
1631 Then again, you might find that other licensed components
1632 that are simply 'good-to-have' or purely elective do have
1633 an unencumbered, free replacement component that you can
1634 use rather than agreeing to the separately licensed
1635 component.
1636 Even for components essential to the system, you might
1637 find an unencumbered component that is not identical but
1638 will work as a less-capable version of the licensed version
1639 in the BSP recipe.
1640 </para>
1641
1642 <para>
1643 For cases where you can substitute a free component and
1644 still maintain the system's functionality, the "DOWNLOADS"
1645 selection from the "SOFTWARE" tab on the
1646 <ulink url='&YOCTO_HOME_URL;'>Yocto Project website</ulink>
1647 makes available de-featured BSPs that are completely free
1648 of any IP encumbrances.
1649 For these cases, you can use the substitution directly and
1650 without any further licensing requirements.
1651 If present, these fully de-featured BSPs are named
1652 appropriately different as compared to the names of their
1653 respective encumbered BSPs.
1654 If available, these substitutions are your simplest and
1655 most preferred options.
1656 Obviously, use of these substitutions assumes the resulting
1657 functionality meets system requirements.
1658 <note>
1659 If however, a non-encumbered version is unavailable or
1660 it provides unsuitable functionality or quality, you can
1661 use an encumbered version.
1662 </note>
1663 </para>
1664
1665 <para>
1666 A couple different methods exist within the OpenEmbedded
1667 build system to satisfy the licensing requirements for an
1668 encumbered BSP.
1669 The following list describes them in order of preference:
1670 <orderedlist>
1671 <listitem><para>
1672 <emphasis>Use the
1673 <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE_FLAGS'><filename>LICENSE_FLAGS</filename></ulink>
1674 Variable to Define the Recipes that Have Commercial
1675 or Other Types of Specially-Licensed Packages:</emphasis>
1676 For each of those recipes, you can specify a
1677 matching license string in a
1678 <filename>local.conf</filename> variable named
1679 <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE_FLAGS_WHITELIST'><filename>LICENSE_FLAGS_WHITELIST</filename></ulink>.
1680 Specifying the matching license string signifies
1681 that you agree to the license.
1682 Thus, the build system can build the corresponding
1683 recipe and include the component in the image.
1684 See the
1685 "<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</ulink>"
1686 section in the Yocto Project Development Tasks
1687 Manual for details on how to use these variables.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001688 </para>
1689
Brad Bishop316dfdd2018-06-25 12:45:53 -04001690 <para>If you build as you normally would, without
1691 specifying any recipes in the
1692 <filename>LICENSE_FLAGS_WHITELIST</filename>, the
1693 build stops and provides you with the list of recipes
1694 that you have tried to include in the image that
1695 need entries in the
1696 <filename>LICENSE_FLAGS_WHITELIST</filename>.
1697 Once you enter the appropriate license flags into
1698 the whitelist, restart the build to continue where
1699 it left off.
1700 During the build, the prompt will not appear again
1701 since you have satisfied the requirement.</para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001702
Brad Bishop316dfdd2018-06-25 12:45:53 -04001703 <para>Once the appropriate license flags are on the
1704 white list in the
1705 <filename>LICENSE_FLAGS_WHITELIST</filename> variable,
1706 you can build the encumbered image with no change
1707 at all to the normal build process.
1708 </para></listitem>
1709 <listitem><para>
1710 <emphasis>Get a Pre-Built Version of the BSP:</emphasis>
1711 You can get this type of BSP by selecting the
1712 "DOWNLOADS" item from the "SOFTWARE" tab on the
1713 <ulink url='&YOCTO_HOME_URL;'>Yocto Project website</ulink>.
1714 You can download BSP tarballs that contain
1715 proprietary components after agreeing to the
1716 licensing requirements of each of the individually
1717 encumbered packages as part of the download process.
1718 Obtaining the BSP this way allows you to access an
1719 encumbered image immediately after agreeing to the
1720 click-through license agreements presented by the
1721 website.
1722 If you want to build the image yourself using
1723 the recipes contained within the BSP tarball,
1724 you will still need to create an appropriate
1725 <filename>LICENSE_FLAGS_WHITELIST</filename>
1726 to match the encumbered recipes in the BSP.
1727 </para></listitem>
1728 </orderedlist>
1729 <note>
1730 Pre-compiled images are bundled with a time-limited
1731 kernel that runs for a predetermined amount of time
1732 (10 days) before it forces the system to reboot.
1733 This limitation is meant to discourage direct
1734 redistribution of the image.
1735 You must eventually rebuild the image if you want
1736 to remove this restriction.
1737 </note>
1738 </para>
1739</section>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001740
Brad Bishop316dfdd2018-06-25 12:45:53 -04001741<section id='creating-a-new-bsp-layer-using-the-bitbake-layers-script'>
1742 <title>Creating a new BSP Layer Using the <filename>bitbake-layers</filename> Script</title>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001743
Brad Bishop316dfdd2018-06-25 12:45:53 -04001744 <para>
1745 The <filename>bitbake-layers create-layer</filename> script
1746 automates creating a BSP layer.
1747 What makes a layer a "BSP layer", is the presence of a machine
1748 configuration file.
1749 Additionally, a BSP layer usually has a kernel recipe
1750 or an append file that leverages off an existing kernel recipe.
1751 The primary requirement, however, is the machine configuration.
1752 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001753
Brad Bishop316dfdd2018-06-25 12:45:53 -04001754 <para>
1755 Use these steps to create a BSP layer:
1756 <itemizedlist>
1757 <listitem><para>
1758 <emphasis>Create a General Layer:</emphasis>
1759 Use the <filename>bitbake-layers</filename> script with the
1760 <filename>create-layer</filename> subcommand to create a
1761 new general layer.
1762 For instructions on how to create a general layer using the
1763 <filename>bitbake-layers</filename> script, see the
1764 "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-a-general-layer-using-the-bitbake-layers-script'>Creating a General Layer Using the <filename>bitbake-layers</filename> Script</ulink>"
1765 section in the Yocto Project Development Tasks Manual.
1766 </para></listitem>
1767 <listitem><para>
1768 <emphasis>Create a Layer Configuration File:</emphasis>
1769 Every layer needs a layer configuration file.
1770 This configuration file establishes locations for the
1771 layer's recipes, priorities for the layer, and so forth.
1772 You can find examples of <filename>layer.conf</filename>
1773 files in the Yocto Project
1774 <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink>.
1775 To get examples of what you need in your configuration
1776 file, locate a layer (e.g. "meta-ti") and examine the
1777 <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/meta-ti/tree/conf/layer.conf'></ulink>
1778 file.
1779 </para></listitem>
1780 <listitem><para>
1781 <emphasis>Create a Machine Configuration File:</emphasis>
1782 Create a <filename>conf/machine/</filename><replaceable>bsp_root_name</replaceable><filename>.conf</filename>
1783 file.
1784 See
1785 <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta-yocto-bsp/conf/machine'><filename>meta-yocto-bsp/conf/machine</filename></ulink>
1786 for sample
1787 <replaceable>bsp_root_name</replaceable><filename>.conf</filename>
1788 files.
1789 Other samples such as
1790 <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/meta-ti/tree/conf/machine'><filename>meta-ti</filename></ulink>
1791 and
1792 <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/meta-freescale/tree/conf/machine'><filename>meta-freescale</filename></ulink>
1793 exist from other vendors that have more specific machine
1794 and tuning examples.
1795 </para></listitem>
1796 <listitem><para>
1797 <emphasis>Create a Kernel Recipe:</emphasis>
1798 Create a kernel recipe in <filename>recipes-kernel/linux</filename>
1799 by either using a kernel append file or a new custom kernel
1800 recipe file (e.g. <filename>yocto-linux_4.12.bb</filename>).
1801 The BSP layers mentioned in the previous step also contain different
1802 kernel examples.
1803 See the
1804 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#modifying-an-existing-recipe'>Modifying an Existing Recipe</ulink>"
1805 section in the Yocto Project Linux Kernel Development Manual
1806 for information on how to create a custom kernel.
1807 </para></listitem>
1808 </itemizedlist>
1809 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001810
Brad Bishop316dfdd2018-06-25 12:45:53 -04001811 <para>
1812 The remainder of this section provides a description of
1813 the Yocto Project reference BSP for Beaglebone, which
1814 resides in the
Brad Bishopc342db32019-05-15 21:57:59 -04001815 <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta-yocto-bsp'><filename>meta-yocto-bsp</filename></ulink>
1816 layer.
Brad Bishop316dfdd2018-06-25 12:45:53 -04001817 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001818
Brad Bishop316dfdd2018-06-25 12:45:53 -04001819 <section id='bsp-layer-configuration-example'>
1820 <title>BSP Layer Configuration Example</title>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001821
Brad Bishop316dfdd2018-06-25 12:45:53 -04001822 <para>
1823 The layer's <filename>conf</filename> directory
1824 contains the <filename>layer.conf</filename>
1825 configuration file.
1826 In this example, the
1827 <filename>conf/layer.conf</filename> is the
1828 following:
1829 <literallayout class='monospaced'>
1830 # We have a conf and classes directory, add to BBPATH
1831 BBPATH .= ":${LAYERDIR}"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001832
Brad Bishop316dfdd2018-06-25 12:45:53 -04001833 # We have recipes-* directories, add to BBFILES
1834 BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
1835 ${LAYERDIR}/recipes-*/*/*.bbappend"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001836
Brad Bishop316dfdd2018-06-25 12:45:53 -04001837 BBFILE_COLLECTIONS += "yoctobsp"
1838 BBFILE_PATTERN_yoctobsp = "^${LAYERDIR}/"
1839 BBFILE_PRIORITY_yoctobsp = "5"
1840 LAYERVERSION_yoctobsp = "4"
1841 LAYERSERIES_COMPAT_yoctobsp = "&DISTRO_NAME_NO_CAP;"
1842 </literallayout>
1843 The variables used in this file configure the
1844 layer.
1845 A good way to learn about layer configuration
1846 files is to examine various files for BSP from
1847 the
1848 <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink>.
1849 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001850
Brad Bishop316dfdd2018-06-25 12:45:53 -04001851 <para>
1852 For a detailed description of this particular
1853 layer configuration file, see
1854 "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-layer-config-file-description'>step 3</ulink>
1855 in the discussion that describes how to create
1856 layers in the Yocto Project Development Tasks Manual.
1857 </para>
1858 </section>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001859
Brad Bishop316dfdd2018-06-25 12:45:53 -04001860 <section id='bsp-machine-configuration-example'>
1861 <title>BSP Machine Configuration Example</title>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001862
Brad Bishop316dfdd2018-06-25 12:45:53 -04001863 <para>
1864 As mentioned earlier in this section, the existence
1865 of a machine configuration file is what makes a
1866 layer a BSP layer as compared to a general or
1867 kernel layer.
1868 </para>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001869
Brad Bishop316dfdd2018-06-25 12:45:53 -04001870 <para>
1871 Machine configuration files exist in the
1872 <replaceable>bsp_layer</replaceable><filename>/conf/machine/</filename>
1873 directory of the layer:
1874 <literallayout class='monospaced'>
1875 <replaceable>bsp_layer</replaceable><filename>/conf/machine/</filename><replaceable>machine</replaceable><filename>.conf</filename>
1876 </literallayout>
1877 For example, the machine configuration file for the
1878 <ulink url='http://beagleboard.org/bone'>BeagleBone and BeagleBone Black development boards</ulink>
Brad Bishopc342db32019-05-15 21:57:59 -04001879 is located in the layer
Brad Bishop316dfdd2018-06-25 12:45:53 -04001880 <filename>poky/meta-yocto-bsp/conf/machine</filename>
1881 and is named <filename>beaglebone-yocto.conf</filename>:
1882 <literallayout class='monospaced'>
1883 #@TYPE: Machine
1884 #@NAME: Beaglebone-yocto machine
1885 #@DESCRIPTION: Reference machine configuration for http://beagleboard.org/bone and http://beagleboard.org/black boards
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001886
Brad Bishop316dfdd2018-06-25 12:45:53 -04001887 PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
1888 XSERVER ?= "xserver-xorg \
1889 xf86-video-modesetting \
1890 "
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001891
Brad Bishop316dfdd2018-06-25 12:45:53 -04001892 MACHINE_EXTRA_RRECOMMENDS = "kernel-modules kernel-devicetree"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001893
Brad Bishop316dfdd2018-06-25 12:45:53 -04001894 EXTRA_IMAGEDEPENDS += "u-boot"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001895
Brad Bishop316dfdd2018-06-25 12:45:53 -04001896 DEFAULTTUNE ?= "cortexa8hf-neon"
1897 include conf/machine/include/tune-cortexa8.inc
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001898
Brad Bishop316dfdd2018-06-25 12:45:53 -04001899 IMAGE_FSTYPES += "tar.bz2 jffs2 wic wic.bmap"
1900 EXTRA_IMAGECMD_jffs2 = "-lnp "
1901 WKS_FILE ?= "beaglebone-yocto.wks"
1902 IMAGE_INSTALL_append = " kernel-devicetree kernel-image-zimage"
1903 do_image_wic[depends] += "mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001904
Brad Bishopc342db32019-05-15 21:57:59 -04001905 SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyO0"
1906 SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
Brad Bishop316dfdd2018-06-25 12:45:53 -04001907
1908 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
Brad Bishopc342db32019-05-15 21:57:59 -04001909 PREFERRED_VERSION_linux-yocto ?= "5.0%"
Brad Bishop316dfdd2018-06-25 12:45:53 -04001910
1911 KERNEL_IMAGETYPE = "zImage"
1912 KERNEL_DEVICETREE = "am335x-bone.dtb am335x-boneblack.dtb am335x-bonegreen.dtb"
1913 KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_ENTRYPOINT}"
1914
1915 SPL_BINARY = "MLO"
1916 UBOOT_SUFFIX = "img"
Brad Bishopc342db32019-05-15 21:57:59 -04001917 UBOOT_MACHINE = "am335x_evm_defconfig"
Brad Bishop316dfdd2018-06-25 12:45:53 -04001918 UBOOT_ENTRYPOINT = "0x80008000"
1919 UBOOT_LOADADDRESS = "0x80008000"
1920
1921 MACHINE_FEATURES = "usbgadget usbhost vfat alsa"
1922
Brad Bishopc342db32019-05-15 21:57:59 -04001923 IMAGE_BOOT_FILES ?= "u-boot.${UBOOT_SUFFIX} MLO zImage am335x-bone.dtb am335x-boneblack.dtb am335x-bonegreen.dtb"
Brad Bishop316dfdd2018-06-25 12:45:53 -04001924 </literallayout>
1925 The variables used to configure the machine define
1926 machine-specific properties.
1927 For example, machine-dependent packages, machine
1928 tunings, the type of kernel to build, and
1929 U-Boot configurations.
1930 </para>
1931
1932 <para>
1933 The following list provides some explanation
1934 for the statements found in the example reference
1935 machine configuration file for the BeagleBone
1936 development boards.
1937 Realize that much more can be defined as part of
1938 a machines configuration file.
1939 In general, you can learn about related variables
1940 that this example does not have by locating the
1941 variables in the
1942 "<ulink url='&YOCTO_DOCS_REF_URL;#ref-variables-glos'>Yocto Project Variables Glossary</ulink>"
1943 in the Yocto Project Reference Manual.
1944 <itemizedlist>
1945 <listitem><para>
1946 <ulink url='&YOCTO_DOCS_REF_URL;#var-PREFERRED_PROVIDER'><filename>PREFERRED_PROVIDER_virtual/xserver</filename></ulink>:
1947 The recipe that provides "virtual/xserver" when
1948 more than one provider is found.
1949 In this case, the recipe that provides
1950 "virtual/xserver" is "xserver-xorg", which
1951 exists in
Brad Bishopc342db32019-05-15 21:57:59 -04001952 <filename>poky/meta/recipes-graphics/xorg-xserver</filename>.
Brad Bishop316dfdd2018-06-25 12:45:53 -04001953 </para></listitem>
1954 <listitem><para>
1955 <ulink url='&YOCTO_DOCS_REF_URL;#var-XSERVER'><filename>XSERVER</filename></ulink>:
1956 The packages that should be installed to provide
1957 an X server and drivers for the machine.
1958 In this example, the "xserver-xorg" and
1959 "xf86-video-modesetting" are installed.
1960 </para></listitem>
1961 <listitem><para>
1962 <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_EXTRA_RRECOMMENDS'><filename>MACHINE_EXTRA_RRECOMMENDS</filename></ulink>:
1963 A list of machine-dependent packages
1964 not essential for booting the image.
1965 Thus, the build does not fail if the packages
1966 do not exist.
1967 However, the packages are required for a
1968 fully-featured image.
1969 <note><title>Tip</title>
1970 Many <filename>MACHINE*</filename> variables
1971 exist that help you configure a particular
1972 piece of hardware.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001973 </note>
Brad Bishop316dfdd2018-06-25 12:45:53 -04001974 </para></listitem>
1975 <listitem><para>
1976 <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_IMAGEDEPENDS'><filename>EXTRA_IMAGEDEPENDS</filename></ulink>:
1977 Recipes to build that do not provide packages
1978 for installing into the root filesystem
1979 but building the image depends on the
1980 recipes.
1981 Sometimes a recipe is required to build
1982 the final image but is not needed in the
1983 root filesystem.
1984 In this case, the U-Boot recipe must be
1985 built for the image.
1986 </para></listitem>
1987 <listitem><para>
1988 <ulink url='&YOCTO_DOCS_REF_URL;#var-DEFAULTTUNE'><filename>DEFAULTTUNE</filename></ulink>:
1989 Machines use tunings to optimize machine,
1990 CPU, and application performance.
1991 These features, which are collectively known
1992 as "tuning features", exist in the
1993 <ulink url='&YOCTO_DOCS_REF_URL;#oe-core'>OpenEmbedded-Core (OE-Core)</ulink>
1994 layer (e.g.
1995 <filename>poky/meta/conf/machine/include</filename>).
1996 In this example, the default tunning file is
1997 "cortexa8hf-neon".
1998 <note>
1999 The <filename>include</filename> statement
2000 that pulls in the
2001 <filename>conf/machine/include/tune-cortexa8.inc</filename>
2002 file provides many tuning possibilities.
2003 </note>
2004 </para></listitem>
2005 <listitem><para>
2006 <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></ulink>:
2007 The formats the OpenEmbedded build system
2008 uses during the build when creating the
2009 root filesystem.
2010 In this example, four types of images are
2011 supported.
2012 </para></listitem>
2013 <listitem><para>
2014 <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_IMAGECMD'><filename>EXTRA_IMAGECMD</filename></ulink>:
2015 Specifies additional options for image
2016 creation commands.
2017 In this example, the "-lnp " option is used
2018 when creating the
2019 <ulink url='https://en.wikipedia.org/wiki/JFFS2'>JFFS2</ulink>
2020 image.
2021 </para></listitem>
2022 <listitem><para>
2023 <ulink url='&YOCTO_DOCS_REF_URL;#var-WKS_FILE'><filename>WKS_FILE</filename></ulink>:
2024 The location of the
2025 <ulink url='&YOCTO_DOCS_REF_URL;#ref-kickstart'>Wic kickstart</ulink>
2026 file used by the OpenEmbedded build system to
2027 create a partitioned image (image.wic).
2028 </para></listitem>
2029 <listitem><para>
2030 <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></ulink>:
2031 Specifies packages to install into an image
2032 through the
2033 <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-image'><filename>image</filename></ulink>
2034 class.
2035 Recipes use the <filename>IMAGE_INSTALL</filename>
2036 variable.
2037 </para></listitem>
2038 <listitem><para>
2039 <filename>do_image_wic[depends]</filename>:
2040 A task that is constructed during the build.
2041 In this example, the task depends on specific tools
2042 in order to create the sysroot when buiding a Wic
2043 image.
2044 </para></listitem>
2045 <listitem><para>
2046 <ulink url='&YOCTO_DOCS_REF_URL;#var-SERIAL_CONSOLES'><filename>SERIAL_CONSOLES</filename></ulink>:
2047 Defines a serial console (TTY) to enable using
2048 getty.
2049 In this case, the baud rate is "115200" and the
2050 device name is "ttyO0".
2051 </para></listitem>
2052 <listitem><para>
2053 <ulink url='&YOCTO_DOCS_REF_URL;#var-PREFERRED_PROVIDER'><filename>PREFERRED_PROVIDER_virtual/kernel</filename></ulink>:
2054 Specifies the recipe that provides
2055 "virtual/kernel" when more than one provider
2056 is found.
2057 In this case, the recipe that provides
2058 "virtual/kernel" is "linux-yocto", which
2059 exists in the layer's
2060 <filename>recipes-kernel/linux</filename> directory.
2061 </para></listitem>
2062 <listitem><para>
2063 <ulink url='&YOCTO_DOCS_REF_URL;#var-PREFERRED_VERSION'><filename>PREFERRED_VERSION_linux-yocto</filename></ulink>:
2064 Defines the version of the recipe used
Brad Bishopc342db32019-05-15 21:57:59 -04002065 to build the kernel, which is "5.0" in this
Brad Bishop316dfdd2018-06-25 12:45:53 -04002066 case.
2067 </para></listitem>
2068 <listitem><para>
2069 <ulink url='&YOCTO_DOCS_REF_URL;#var-KERNEL_IMAGETYPE'><filename>KERNEL_IMAGETYPE</filename></ulink>:
2070 The type of kernel to build for the device.
2071 In this case, the OpenEmbedded build system
2072 creates a "zImage" image type.
2073 </para></listitem>
2074 <listitem><para>
2075 <ulink url='&YOCTO_DOCS_REF_URL;#var-KERNEL_DEVICETREE'><filename>KERNEL_DEVICETREE</filename></ulink>:
Brad Bishopc342db32019-05-15 21:57:59 -04002076 The names of the generated Linux kernel device
2077 trees (i.e. the <filename>*.dtb</filename>) files.
Brad Bishop316dfdd2018-06-25 12:45:53 -04002078 All the device trees for the various BeagleBone
2079 devices are included.
2080<!--
2081 You have to include some *.inc files according to the definition of KERNEL_DEVICETREE.
2082 I don't see where these are being provided.
2083-->
2084 </para></listitem>
2085 <listitem><para>
2086 <ulink url='&YOCTO_DOCS_REF_URL;#var-KERNEL_EXTRA_ARGS'><filename>KERNEL_EXTRA_ARGS</filename></ulink>:
2087 Additional <filename>make</filename>
2088 command-line arguments the OpenEmbedded build
2089 system passes on when compiling the kernel.
2090 In this example, "LOADADDR=${UBOOT_ENTRYPOINT}"
2091 is passed as a command-line argument.
2092 </para></listitem>
2093 <listitem><para>
2094 <ulink url='&YOCTO_DOCS_REF_URL;#var-SPL_BINARY'><filename>SPL_BINARY</filename></ulink>:
2095 Defines the Secondary Program Loader (SPL) binary
2096 type.
2097 In this case, the SPL binary is set to
2098 "MLO", which stands for Multimedia card LOader.
2099 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002100
Brad Bishop316dfdd2018-06-25 12:45:53 -04002101 <para>The BeagleBone development board requires an
2102 SPL to boot and that SPL file type must be MLO.
2103 Consequently, the machine configuration needs to
2104 define <filename>SPL_BINARY</filename> as "MLO".
2105 <note>
2106 For more information on how the SPL variables
2107 are used, see the
2108 <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta/recipes-bsp/u-boot/u-boot.inc'><filename>u-boot.inc</filename></ulink>
2109 include file.
2110 </note>
2111 </para></listitem>
2112 <listitem><para>
2113 <ulink url='&YOCTO_DOCS_REF_URL;#var-UBOOT_ENTRYPOINT'><filename>UBOOT_*</filename></ulink>:
2114 Defines various U-Boot configurations needed
2115 to build a U-Boot image.
2116 In this example, a U-Boot image is required
2117 to boot the BeagleBone device.
2118 See the following variables for more information:
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002119 <itemizedlist>
Brad Bishop316dfdd2018-06-25 12:45:53 -04002120 <listitem><para>
2121 <ulink url='&YOCTO_DOCS_REF_URL;#var-UBOOT_SUFFIX'><filename>UBOOT_SUFFIX</filename></ulink>:
2122 Points to the generated U-Boot extension.
2123 </para></listitem>
2124 <listitem><para>
2125 <ulink url='&YOCTO_DOCS_REF_URL;#var-UBOOT_MACHINE'><filename>UBOOT_MACHINE</filename></ulink>:
2126 Specifies the value passed on the make command line when building a U-Boot image.
2127 </para></listitem>
2128 <listitem><para>
2129 <ulink url='&YOCTO_DOCS_REF_URL;#var-UBOOT_ENTRYPOINT'><filename>UBOOT_ENTRYPOINT</filename></ulink>:
2130 Specifies the entry point for the U-Boot image.
2131 </para></listitem>
2132 <listitem><para>
2133 <ulink url='&YOCTO_DOCS_REF_URL;#var-UBOOT_LOADADDRESS'><filename>UBOOT_LOADADDRESS</filename></ulink>:
2134 Specifies the load address for the U-Boot image.
2135 </para></listitem>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002136 </itemizedlist>
Brad Bishop316dfdd2018-06-25 12:45:53 -04002137 </para></listitem>
2138 <listitem><para>
2139 <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_FEATURES'><filename>MACHINE_FEATURES</filename></ulink>:
2140 Specifies the list of hardware features the
2141 BeagleBone device is capable of supporting.
2142 In this case, the device supports
2143 "usbgadget usbhost vfat alsa".
2144 </para></listitem>
2145 <listitem><para>
2146 <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_BOOT_FILES'><filename>IMAGE_BOOT_FILES</filename></ulink>:
2147 Files installed into the device's boot partition
2148 when preparing the image using the Wic tool
2149 with the <filename>bootimg-partition</filename>
2150 source plugin.
Brad Bishop316dfdd2018-06-25 12:45:53 -04002151 </para></listitem>
2152 </itemizedlist>
2153 </para>
2154 </section>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002155
Brad Bishop316dfdd2018-06-25 12:45:53 -04002156 <section id='bsp-kernel-recipe-example'>
2157 <title>BSP Kernel Recipe Example</title>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002158
Brad Bishop316dfdd2018-06-25 12:45:53 -04002159 <para>
2160 The kernel recipe used to build the kernel image
2161 for the BeagleBone device was established in the
2162 machine configuration:
2163 <literallayout class='monospaced'>
2164 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
Brad Bishopc342db32019-05-15 21:57:59 -04002165 PREFERRED_VERSION_linux-yocto ?= "5.0%"
Brad Bishop316dfdd2018-06-25 12:45:53 -04002166 </literallayout>
2167 The <filename>meta-yocto-bsp/recipes-kernel/linux</filename>
2168 directory in the layer contains metadata used
2169 to build the kernel.
Brad Bishopc342db32019-05-15 21:57:59 -04002170 In this case, a kernel append file (i.e.
2171 <filename>linux-yocto_5.0.bbappend</filename>) is used to
2172 override an established kernel recipe (i.e.
2173 <filename>linux-yocto_5.0.bb</filename>), which is
Brad Bishop316dfdd2018-06-25 12:45:53 -04002174 located in
Brad Bishopc342db32019-05-15 21:57:59 -04002175 <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta/recipes-kernel/linux'></ulink>.
Brad Bishop316dfdd2018-06-25 12:45:53 -04002176 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002177
Brad Bishop316dfdd2018-06-25 12:45:53 -04002178 <para>
2179 Following is the contents of the append file:
2180 <literallayout class='monospaced'>
Brad Bishopc342db32019-05-15 21:57:59 -04002181 KBRANCH_genericx86 = "v5.0/standard/base"
2182 KBRANCH_genericx86-64 = "v5.0/standard/base"
2183 KBRANCH_edgerouter = "v5.0/standard/edgerouter"
2184 KBRANCH_beaglebone-yocto = "v5.0/standard/beaglebone"
2185 KBRANCH_mpc8315e-rdb = "v5.0/standard/fsl-mpc8315e-rdb"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002186
Brad Bishop316dfdd2018-06-25 12:45:53 -04002187 KMACHINE_genericx86 ?= "common-pc"
2188 KMACHINE_genericx86-64 ?= "common-pc-64"
Brad Bishopc342db32019-05-15 21:57:59 -04002189 KMACHINE_beaglebone-yocto ?= "beaglebone"
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002190
Brad Bishopc342db32019-05-15 21:57:59 -04002191 SRCREV_machine_genericx86 ?= "3df4aae6074e94e794e27fe7f17451d9353cdf3d"
2192 SRCREV_machine_genericx86-64 ?= "3df4aae6074e94e794e27fe7f17451d9353cdf3d"
2193 SRCREV_machine_edgerouter ?= "3df4aae6074e94e794e27fe7f17451d9353cdf3d"
2194 SRCREV_machine_beaglebone-yocto ?= "3df4aae6074e94e794e27fe7f17451d9353cdf3d"
2195 SRCREV_machine_mpc8315e-rdb ?= "8b62af7f252af10588276802c4c6d7c502e875be"
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002196
Brad Bishop316dfdd2018-06-25 12:45:53 -04002197 COMPATIBLE_MACHINE_genericx86 = "genericx86"
2198 COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64"
2199 COMPATIBLE_MACHINE_edgerouter = "edgerouter"
2200 COMPATIBLE_MACHINE_beaglebone-yocto = "beaglebone-yocto"
2201 COMPATIBLE_MACHINE_mpc8315e-rdb = "mpc8315e-rdb"
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002202
Brad Bishopc342db32019-05-15 21:57:59 -04002203 LINUX_VERSION_genericx86 = "5.0.3"
2204 LINUX_VERSION_genericx86-64 = "5.0.3"
2205 LINUX_VERSION_edgerouter = "5.0.3"
2206 LINUX_VERSION_beaglebone-yocto = "5.0.3"
2207 LINUX_VERSION_mpc8315e-rdb = "5.0.3"
Brad Bishop316dfdd2018-06-25 12:45:53 -04002208 </literallayout>
2209 This particular append file works for all the
2210 machines that are part of the
Brad Bishopc342db32019-05-15 21:57:59 -04002211 <filename>meta-yocto-bsp</filename> layer.
Brad Bishop316dfdd2018-06-25 12:45:53 -04002212 The relevant statements are appended with
2213 the "beaglebone-yocto" string.
2214 The OpenEmbedded build system uses these
2215 statements to override similar statements
2216 in the kernel recipe:
2217 <itemizedlist>
2218 <listitem><para>
2219 <ulink url='&YOCTO_DOCS_REF_URL;#var-KBRANCH'><filename>KBRANCH</filename></ulink>:
2220 Identifies the kernel branch that is validated,
2221 patched, and configured during the build.
2222 </para></listitem>
2223 <listitem><para>
2224 <ulink url='&YOCTO_DOCS_REF_URL;#var-KMACHINE'><filename>KMACHINE</filename></ulink>:
2225 Identifies the machine name as known by the
2226 kernel, which is sometimes a different name
2227 than what is known by the OpenEmbedded build
2228 system.
2229 </para></listitem>
2230 <listitem><para>
2231 <ulink url='&YOCTO_DOCS_REF_URL;#var-SRCREV'><filename>SRCREV</filename></ulink>:
2232 Identifies the revision of the source code used
2233 to build the image.
Brad Bishop316dfdd2018-06-25 12:45:53 -04002234 </para></listitem>
2235 <listitem><para>
2236 <ulink url='&YOCTO_DOCS_REF_URL;#var-COMPATIBLE_MACHINE'><filename>COMPATIBLE_MACHINE</filename></ulink>:
2237 A regular expression that resolves to one or
2238 more target machines with which the recipe
2239 is compatible.
2240 </para></listitem>
2241 <listitem><para>
2242 <ulink url='&YOCTO_DOCS_REF_URL;#var-LINUX_VERSION'><filename>LINUX_VERSION</filename></ulink>:
2243 The Linux version from kernel.org used by
2244 the OpenEmbedded build system to build the
2245 kernel image.
2246 </para></listitem>
2247 </itemizedlist>
2248 </para>
2249 </section>
2250</section>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002251</chapter>