diff options
author | Scott Rifenbark <srifenbark@gmail.com> | 2018-02-19 15:40:19 -0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-03-03 08:35:24 +0000 |
commit | 189851f9d6c32f32a236338c35d2a911a91f2282 (patch) | |
tree | 91ea9e610eb481d6f53a0cdc7ca396bdda710336 /documentation/getting-started | |
parent | 68823387c35b766f32399b3051f789a2cf4a74f5 (diff) | |
download | poky-189851f9d6c32f32a236338c35d2a911a91f2282.tar.gz |
getting-started: Added section on BB workflow
New section called "The OpenEmbedded Build System Workflow".
This section presents the tried and true flow block figure
that shows what happens when you fire off a build.
(From yocto-docs rev: 5b4313ba87a2ccd139f2b980f4cf097700421cf4)
Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation/getting-started')
-rw-r--r-- | documentation/getting-started/getting-started-development-environment.xml | 120 | ||||
-rw-r--r-- | documentation/getting-started/getting-started-yp-intro.xml | 75 |
2 files changed, 72 insertions, 123 deletions
diff --git a/documentation/getting-started/getting-started-development-environment.xml b/documentation/getting-started/getting-started-development-environment.xml index 5d6491c51b..54a607f6ab 100644 --- a/documentation/getting-started/getting-started-development-environment.xml +++ b/documentation/getting-started/getting-started-development-environment.xml | |||
@@ -7,8 +7,7 @@ | |||
7 | 7 | ||
8 | <para> | 8 | <para> |
9 | This chapter takes a look at the Yocto Project development | 9 | This chapter takes a look at the Yocto Project development |
10 | environment and also provides a detailed look at what goes on during | 10 | environment. |
11 | development in that environment. | ||
12 | The chapter provides Yocto Project Development environment concepts that | 11 | The chapter provides Yocto Project Development environment concepts that |
13 | help you understand how work is accomplished in an open source environment, | 12 | help you understand how work is accomplished in an open source environment, |
14 | which is very different as compared to work accomplished in a closed, | 13 | which is very different as compared to work accomplished in a closed, |
@@ -21,123 +20,6 @@ | |||
21 | syntax. | 20 | syntax. |
22 | </para> | 21 | </para> |
23 | 22 | ||
24 | <section id='yp-intro'> | ||
25 | <title>Introduction</title> | ||
26 | |||
27 | <para> | ||
28 | The Yocto Project is an open-source collaboration project whose | ||
29 | focus is for developers of embedded Linux systems. | ||
30 | Among other things, the Yocto Project uses an | ||
31 | <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>. | ||
32 | The build system, which is based on the OpenEmbedded (OE) project and | ||
33 | uses the | ||
34 | <ulink url='&YOCTO_DOCS_REF_URL;#bitbake-term'>BitBake</ulink> tool, | ||
35 | constructs complete Linux images for architectures based on ARM, MIPS, | ||
36 | PowerPC, x86 and x86-64. | ||
37 | <note> | ||
38 | Historically, the OpenEmbedded build system, which is the | ||
39 | combination of BitBake and OE components, formed a reference | ||
40 | build host that was known as | ||
41 | "<ulink url='&YOCTO_DOCS_REF_URL;#poky'>Poky</ulink>" | ||
42 | (<emphasis>Pah</emphasis>-kee). | ||
43 | The term "Poky", as used throughout the Yocto Project Documentation | ||
44 | set, can have different meanings. | ||
45 | </note> | ||
46 | The Yocto Project provides various ancillary tools for the embedded | ||
47 | developer and also features the Sato reference User Interface, which | ||
48 | is optimized for stylus-driven, low-resolution screens. | ||
49 | </para> | ||
50 | |||
51 | <mediaobject> | ||
52 | <imageobject> | ||
53 | <imagedata fileref="figures/YP-flow-diagram.png" | ||
54 | format="PNG" align='center' width="8in"/> | ||
55 | </imageobject> | ||
56 | </mediaobject> | ||
57 | |||
58 | <para> | ||
59 | Here are some highlights for the Yocto Project: | ||
60 | </para> | ||
61 | |||
62 | <itemizedlist> | ||
63 | <listitem><para> | ||
64 | Provides a recent Linux kernel along with a set of system | ||
65 | commands and libraries suitable for the embedded | ||
66 | environment. | ||
67 | </para></listitem> | ||
68 | <listitem><para> | ||
69 | Makes available system components such as X11, GTK+, Qt, | ||
70 | Clutter, and SDL (among others) so you can create a rich user | ||
71 | experience on devices that have display hardware. | ||
72 | For devices that do not have a display or where you wish to | ||
73 | use alternative UI frameworks, these components need not be | ||
74 | installed. | ||
75 | </para></listitem> | ||
76 | <listitem><para> | ||
77 | Creates a focused and stable core compatible with the | ||
78 | OpenEmbedded project with which you can easily and reliably | ||
79 | build and develop. | ||
80 | </para></listitem> | ||
81 | <listitem><para> | ||
82 | Fully supports a wide range of hardware and device emulation | ||
83 | through the Quick EMUlator (QEMU). | ||
84 | </para></listitem> | ||
85 | <listitem><para> | ||
86 | Provides a layer mechanism that allows you to easily extend | ||
87 | the system, make customizations, and keep them organized. | ||
88 | </para></listitem> | ||
89 | </itemizedlist> | ||
90 | |||
91 | <para> | ||
92 | You can use the Yocto Project to generate images for many kinds | ||
93 | of devices. | ||
94 | As mentioned earlier, the Yocto Project supports creation of | ||
95 | reference images that you can boot within and emulate using QEMU. | ||
96 | The standard example machines target QEMU full-system | ||
97 | emulation for 32-bit and 64-bit variants of x86, ARM, MIPS, and | ||
98 | PowerPC architectures. | ||
99 | Beyond emulation, you can use the layer mechanism to extend | ||
100 | support to just about any platform that Linux can run on and that | ||
101 | a toolchain can target. | ||
102 | </para> | ||
103 | |||
104 | <para> | ||
105 | Another Yocto Project feature is the Sato reference User | ||
106 | Interface. | ||
107 | This optional UI that is based on GTK+ is intended for devices with | ||
108 | restricted screen sizes and is included as part of the | ||
109 | OpenEmbedded Core layer so that developers can test parts of the | ||
110 | software stack. | ||
111 | </para> | ||
112 | |||
113 | <para> | ||
114 | While the Yocto Project does not provide a strict testing framework, | ||
115 | it does provide or generate for you artifacts that let you perform | ||
116 | target-level and emulated testing and debugging. | ||
117 | Additionally, if you are an | ||
118 | <trademark class='trade'>Eclipse</trademark> IDE user, you can | ||
119 | install an Eclipse Yocto Plug-in to allow you to develop within that | ||
120 | familiar environment. | ||
121 | </para> | ||
122 | |||
123 | <para> | ||
124 | By default, using the Yocto Project to build an image creates a Poky | ||
125 | distribution. | ||
126 | However, you can create your own distribution by providing key | ||
127 | <ulink url='&YOCTO_DOCS_REF_URL;#metadata'>Metadata</ulink>. | ||
128 | A good example is Angstrom, which has had a distribution | ||
129 | based on the Yocto Project since its inception. | ||
130 | Other examples include commercial distributions like | ||
131 | <ulink url='https://www.yoctoproject.org/organization/wind-river-systems'>Wind River Linux</ulink>, | ||
132 | <ulink url='https://www.yoctoproject.org/organization/mentor-graphics'>Mentor Embedded Linux</ulink>, | ||
133 | <ulink url='https://www.yoctoproject.org/organization/enea-ab'>ENEA Linux</ulink> | ||
134 | and <ulink url='https://www.yoctoproject.org/ecosystem/member-organizations'>others</ulink>. | ||
135 | See the "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-your-own-distribution'>Creating Your Own Distribution</ulink>" | ||
136 | section in the Yocto Project Development Tasks Manual for more | ||
137 | information. | ||
138 | </para> | ||
139 | </section> | ||
140 | |||
141 | <section id='open-source-philosophy'> | 23 | <section id='open-source-philosophy'> |
142 | <title>Open Source Philosophy</title> | 24 | <title>Open Source Philosophy</title> |
143 | 25 | ||
diff --git a/documentation/getting-started/getting-started-yp-intro.xml b/documentation/getting-started/getting-started-yp-intro.xml index 964a500ad4..caabb13c10 100644 --- a/documentation/getting-started/getting-started-yp-intro.xml +++ b/documentation/getting-started/getting-started-yp-intro.xml | |||
@@ -72,7 +72,11 @@ | |||
72 | Most ODMs, OSVs, and chip vendors create and supply | 72 | Most ODMs, OSVs, and chip vendors create and supply |
73 | BSPs that support their hardware. | 73 | BSPs that support their hardware. |
74 | If you have custom silicon, you can create a BSP | 74 | If you have custom silicon, you can create a BSP |
75 | that supports that architecture. | 75 | that supports that architecture.</para> |
76 | |||
77 | <para>Aside from lots of architecture support, the | ||
78 | Yocto Project fully supports a wide range of device | ||
79 | emulation through the Quick EMUlator (QEMU). | ||
76 | </para></listitem> | 80 | </para></listitem> |
77 | <listitem><para> | 81 | <listitem><para> |
78 | <emphasis>Images and Code Transfer Easily:</emphasis> | 82 | <emphasis>Images and Code Transfer Easily:</emphasis> |
@@ -104,6 +108,13 @@ | |||
104 | embedded devices. | 108 | embedded devices. |
105 | You only add the feature support or packages that you | 109 | You only add the feature support or packages that you |
106 | absolutely need for the device. | 110 | absolutely need for the device. |
111 | For devices that have display hardware, you can use | ||
112 | available system components such as X11, GTK+, Qt, | ||
113 | Clutter, and SDL (among others) to create a rich user | ||
114 | experience. | ||
115 | For devices that do not have a display or where you | ||
116 | want to use alternative UI frameworks, you can choose | ||
117 | to not install these components. | ||
107 | </para></listitem> | 118 | </para></listitem> |
108 | <listitem><para> | 119 | <listitem><para> |
109 | <emphasis>Comprehensive Toolchain Capabilities:</emphasis> | 120 | <emphasis>Comprehensive Toolchain Capabilities:</emphasis> |
@@ -130,7 +141,9 @@ | |||
130 | You can incrementally add these grouped functionalities | 141 | You can incrementally add these grouped functionalities |
131 | to your project as needed. | 142 | to your project as needed. |
132 | Using layers to isolate and group functionality | 143 | Using layers to isolate and group functionality |
133 | reduces project complexity and redundancy. | 144 | reduces project complexity and redundancy, allows you |
145 | to easily extend the system, make customizations, | ||
146 | and keep functionality organized. | ||
134 | </para></listitem> | 147 | </para></listitem> |
135 | <listitem><para> | 148 | <listitem><para> |
136 | <emphasis>Supports Partial Builds:</emphasis> | 149 | <emphasis>Supports Partial Builds:</emphasis> |
@@ -736,6 +749,9 @@ | |||
736 | It is a working example of how to build your own custom | 749 | It is a working example of how to build your own custom |
737 | Linux distribution from source. | 750 | Linux distribution from source. |
738 | </note> | 751 | </note> |
752 | You can read more about Poky in the | ||
753 | "<link linkend='reference-embedded-distribution'>Reference Embedded Distribution (Poky)</link>" | ||
754 | section. | ||
739 | </para> | 755 | </para> |
740 | </section> | 756 | </section> |
741 | 757 | ||
@@ -1071,9 +1087,60 @@ | |||
1071 | </para> | 1087 | </para> |
1072 | </section> | 1088 | </section> |
1073 | 1089 | ||
1074 | <section id='the-yocto-project-workflow'> | 1090 | <section id='openembedded-build-system-workflow'> |
1075 | <title>The Yocto Project Workflow</title> | 1091 | <title>The OpenEmbedded Build System Workflow</title> |
1092 | |||
1093 | <para> | ||
1094 | The OpenEmbedded build system uses a "workflow" to accomplish | ||
1095 | image and SDK generation. | ||
1096 | The following figure overviews that workflow: | ||
1097 | <imagedata fileref="figures/YP-flow-diagram.png" | ||
1098 | format="PNG" align='center' width="8in"/> | ||
1099 | Following is a brief summary of the "workflow": | ||
1100 | <orderedlist> | ||
1101 | <listitem><para> | ||
1102 | Developers specify architecture, policies, patches and | ||
1103 | configuration details. | ||
1104 | </para></listitem> | ||
1105 | <listitem><para> | ||
1106 | The build system fetches and downloads the source code | ||
1107 | from the specified location. | ||
1108 | The build system supports standard methods such as tarballs | ||
1109 | or source code repositories systems such as Git. | ||
1110 | </para></listitem> | ||
1111 | <listitem><para> | ||
1112 | Once downloaded, the build system extracts the sources | ||
1113 | into a local work area where patches are applied and | ||
1114 | common steps for configuring and compiling the software | ||
1115 | are run. | ||
1116 | </para></listitem> | ||
1117 | <listitem><para> | ||
1118 | The build system then installs the software into a | ||
1119 | temporary staging area where the binary package format you | ||
1120 | select (DEB, RPM, or IPK) is used to roll up the software. | ||
1121 | </para></listitem> | ||
1122 | <listitem><para> | ||
1123 | Different QA and sanity checks run throughout entire | ||
1124 | build process. | ||
1125 | </para></listitem> | ||
1126 | <listitem><para> | ||
1127 | After the binaries are created, the build system | ||
1128 | generates a binary package feed that is used to create | ||
1129 | the final root file image. | ||
1130 | </para></listitem> | ||
1131 | <listitem><para> | ||
1132 | The build system generates the file system image and a | ||
1133 | customized Extensible SDK (eSDSK) for application | ||
1134 | development in parallel. | ||
1135 | </para></listitem> | ||
1136 | </orderedlist> | ||
1137 | </para> | ||
1076 | 1138 | ||
1139 | <para> | ||
1140 | For a very detailed look at this workflow, see the | ||
1141 | "<ulink url='&YOCTO_DOCS_CM_URL;#development-concepts'>Development Concepts</ulink>" | ||
1142 | section in the Yocto Project Concepts Manual. | ||
1143 | </para> | ||
1077 | </section> | 1144 | </section> |
1078 | 1145 | ||
1079 | 1146 | ||