diff options
author | Scott Rifenbark <scott.m.rifenbark@intel.com> | 2011-09-20 10:26:58 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-09-25 17:59:59 +0100 |
commit | 42c80283e27707cf9019197ec232eba8678c8fba (patch) | |
tree | fd3b1a830dd8e7e1a83c56e2a525734514aa7670 /documentation/dev-manual | |
parent | 15793a82104fd79b5b5c3f1fb84bc455309ab4d6 (diff) | |
download | poky-42c80283e27707cf9019197ec232eba8678c8fba.tar.gz |
documentation/dev-manual: model changes and updated figure
Edits to the dev-manual-model.xml chapter for general improvements.
Also had to update the figure that shows the kernel development flow.
(From yocto-docs rev: 2aacccb03d167eac74a1b45c39a9edac160efc7f)
Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation/dev-manual')
-rw-r--r-- | documentation/dev-manual/dev-manual-model.xml | 181 | ||||
-rw-r--r-- | documentation/dev-manual/figures/kernel-dev-flow.png | bin | 62234 -> 61779 bytes |
2 files changed, 93 insertions, 88 deletions
diff --git a/documentation/dev-manual/dev-manual-model.xml b/documentation/dev-manual/dev-manual-model.xml index 5831033008..9ef09eab53 100644 --- a/documentation/dev-manual/dev-manual-model.xml +++ b/documentation/dev-manual/dev-manual-model.xml | |||
@@ -9,16 +9,22 @@ | |||
9 | Many development models exist for which you can use the Yocto Project. | 9 | Many development models exist for which you can use the Yocto Project. |
10 | However, for the purposes of this manual we are going to focus on two common ones: | 10 | However, for the purposes of this manual we are going to focus on two common ones: |
11 | System Development and User Application Development. | 11 | System Development and User Application Development. |
12 | System Development covers Board Support Package (BSP) development and kernel modification. | 12 | System Development covers Board Support Package (BSP) development and kernel modification |
13 | or configuration. | ||
13 | User Application Development covers development of applications that you intend to run on some | 14 | User Application Development covers development of applications that you intend to run on some |
14 | target hardware. | 15 | target hardware. |
15 | </para> | 16 | </para> |
16 | 17 | ||
17 | <para> | 18 | <para> |
18 | This chapter presents overviews of both system and application models. | 19 | This chapter presents overviews of both system and application models. |
19 | If you want to reference specific examples of these development models, | 20 | If you want to examine specific examples of the system development models, |
20 | see <xref linkend='dev-manual-bsp-appendix'>BSP Development Example</xref> and | 21 | see the "<link linkend='dev-manual-bsp-appendix'>BSP Development Example</link>" |
21 | <xref linkend='dev-manual-kernel-appendix'>Kernel Modification Example</xref>. | 22 | appendix and the |
23 | "<link linkend='dev-manual-kernel-appendix'>Kernel Modification Example</link>" appendix. | ||
24 | For a user-space application development example that uses the Eclipse IDE, | ||
25 | see the | ||
26 | <ulink url='http://www.yoctoproject.org/docs/1.1/adt-manual/adt-manual.html'> | ||
27 | The Yocto Project Application Development Toolkit (ADT) User's Guide</ulink>. | ||
22 | </para> | 28 | </para> |
23 | 29 | ||
24 | <section id='system-development-model'> | 30 | <section id='system-development-model'> |
@@ -27,7 +33,7 @@ | |||
27 | <para> | 33 | <para> |
28 | System development involves modification or creation of an image that you want to run on | 34 | System development involves modification or creation of an image that you want to run on |
29 | a specific hardware target. | 35 | a specific hardware target. |
30 | Usually when you want to create an image that runs on embedded hardware the image does | 36 | Usually, when you want to create an image that runs on embedded hardware, the image does |
31 | not require the same amount of features that a full-fledged Linux distribution provides. | 37 | not require the same amount of features that a full-fledged Linux distribution provides. |
32 | Thus, you can create a much smaller image that is designed to just use the hardware | 38 | Thus, you can create a much smaller image that is designed to just use the hardware |
33 | features for your particular hardware. | 39 | features for your particular hardware. |
@@ -35,33 +41,33 @@ | |||
35 | 41 | ||
36 | <para> | 42 | <para> |
37 | To help you understand how system development works in the Yocto Project, this section | 43 | To help you understand how system development works in the Yocto Project, this section |
38 | covers two types of image development: BSP creation and kernel modification | 44 | covers two types of image development: BSP creation and kernel modification or |
39 | (see <xref linkend='kernel-spot'></xref>). | 45 | configuration. |
40 | </para> | 46 | </para> |
41 | 47 | ||
42 | <section id='developing-a-board-support-package-bsp'> | 48 | <section id='developing-a-board-support-package-bsp'> |
43 | <title>Developing a Board Support Package (BSP)</title> | 49 | <title>Developing a Board Support Package (BSP)</title> |
44 | 50 | ||
45 | <para> | 51 | <para> |
46 | A BSP is a package of recipes that when applied during a build results in | 52 | A BSP is a package of recipes that, when applied, during a build results in |
47 | an image you can run on a particular board. | 53 | an image you can run on a particular board. |
48 | Thus, the package, when compiled into the new image, supports the operation of the board. | 54 | Thus, the package, when compiled into the new image, supports the operation of the board. |
49 | </para> | 55 | </para> |
50 | 56 | ||
51 | <note> | 57 | <note> |
52 | For a brief list of terms used when describing the development process in the Yocto Project, | 58 | For a brief list of terms used when describing the development process in the Yocto Project, |
53 | see <xref linkend='yocto-project-terms'>Yocto Project Terms</xref> in this manual. | 59 | see the "<link linkend='yocto-project-terms'>Yocto Project Terms</link>" section. |
54 | </note> | 60 | </note> |
55 | 61 | ||
56 | <para> | 62 | <para> |
57 | The remainder of this section presents the basic steps to create a BSP basing it on an | 63 | The remainder of this section presents the basic steps to create a BSP basing it on an |
58 | existing BSP that ships with the Yocto Project. | 64 | existing BSP that ships with the Yocto Project. |
59 | You can reference <xref linkend='dev-manual-bsp-appendix'>BSP Development Example</xref> | 65 | You can reference the "<link linkend='dev-manual-bsp-appendix'>BSP Development Example</link>" |
60 | for a detailed example that uses the Crown Bay BSP as a base BSP from which to start. | 66 | appendix for a detailed example that uses the Crown Bay BSP as a base BSP from which to start. |
61 | </para> | 67 | </para> |
62 | 68 | ||
63 | <para> | 69 | <para> |
64 | This illustration and the following list summarizes the BSP creation general workflow. | 70 | The following illustration and list summarize the BSP creation general workflow. |
65 | </para> | 71 | </para> |
66 | 72 | ||
67 | <para> | 73 | <para> |
@@ -71,37 +77,38 @@ | |||
71 | <para> | 77 | <para> |
72 | <orderedlist> | 78 | <orderedlist> |
73 | <listitem><para><emphasis>Set up your host development system to support | 79 | <listitem><para><emphasis>Set up your host development system to support |
74 | development using the Yocto Project</emphasis>: See | 80 | development using the Yocto Project</emphasis>: See the |
75 | <ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#the-linux-distro'> | 81 | "<ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#the-linux-distro'>The Linux Distributions</ulink>" and the |
76 | The Linux Distributions</ulink> section and | 82 | "<ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#packages'>The Packages</ulink>" sections both |
77 | <ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#packages'> | ||
78 | The Packages</ulink> section both | ||
79 | in the Yocto Project Quick Start for requirements.</para></listitem> | 83 | in the Yocto Project Quick Start for requirements.</para></listitem> |
80 | <listitem><para><emphasis>Establish a local copy of the Yocto Project files on your | 84 | <listitem><para><emphasis>Establish a local copy of the Yocto Project files on your |
81 | system</emphasis>: You need to have the Yocto Project files available on your host system. | 85 | system</emphasis>: You need to have the Yocto Project files available on your host system. |
82 | Having the Yocto Project files on your system gives you access to the build | 86 | Having the Yocto Project files on your system gives you access to the build |
83 | process and tools you need. | 87 | process and tools you need. |
84 | For information on how to get these files, see the | 88 | For information on how to get these files, see the |
85 | <xref linkend='getting-setup'>Getting Setup</xref> section in this manual.</para></listitem> | 89 | "<link linkend='getting-setup'>Getting Setup</link>" section.</para></listitem> |
86 | <listitem><para><emphasis>Establish a local copy of the base BSP files</emphasis>: Having | 90 | <listitem><para><emphasis>Establish a local copy of the base BSP files</emphasis>: Having |
87 | the BSP files on your system gives you access to the build | 91 | the BSP files on your system gives you access to the build |
88 | process and tools you need. | 92 | process and tools you need for creating a BSP. |
89 | For information on how to get these files, see | 93 | For information on how to get these files, see the |
90 | <xref linkend='getting-setup'>Getting Setup</xref> earlier in this manual.</para></listitem> | 94 | "<link linkend='getting-setup'>Getting Setup</link>" section.</para></listitem> |
91 | <listitem><para><emphasis>Choose a Yocto Project-supported BSP as your base BSP</emphasis>: | 95 | <listitem><para><emphasis>Choose a Yocto Project-supported BSP as your base BSP</emphasis>: |
92 | The Yocto Project ships with several BSPs that support various hardware. | 96 | The Yocto Project ships with several BSPs that support various hardware. |
93 | It is best to base your new BSP on an existing BSP rather than create all the | 97 | It is best to base your new BSP on an existing BSP rather than create all the |
94 | recipes and configuration files from scratch. | 98 | recipes and configuration files from scratch. |
95 | While it is possible to create everything from scratch, basing your new BSP | 99 | While it is possible to create everything from scratch, basing your new BSP |
96 | on something that is close is much easier. | 100 | on something that is close is much easier. |
97 | Or, at a minimum, it gives you some structure with which to start.</para> | 101 | Or, at a minimum, leveraging off an existing BSP |
102 | gives you some structure with which to start.</para> | ||
98 | <para>At this point you need to understand your target hardware well enough to determine which | 103 | <para>At this point you need to understand your target hardware well enough to determine which |
99 | existing BSP it most closely matches. | 104 | existing BSP it most closely matches. |
100 | Things to consider are your hardware’s on-board features such as CPU type and graphics support. | 105 | Things to consider are your hardware’s on-board features, such as CPU type and graphics support. |
101 | You should look at the README files for supported BSPs to get an idea of which one | 106 | You should look at the README files for supported BSPs to get an idea of which one |
102 | you could use. | 107 | you could use. |
103 | A generic Atom-based BSP to consider is the Crown Bay that does not support | 108 | A generic <trademark class='registered'>Intel</trademark> |
104 | the Intel® Embedded Media Graphics Driver (EMGD). | 109 | <trademark class='trade'>Atom</trademark>-based BSP to consider is the |
110 | Crown Bay that does not support the <trademark class='registered'>Intel</trademark> | ||
111 | Embedded Media Graphics Driver (EMGD). | ||
105 | The remainder of this example uses that base BSP.</para> | 112 | The remainder of this example uses that base BSP.</para> |
106 | <para>To see the supported BSPs, go to the Yocto Project | 113 | <para>To see the supported BSPs, go to the Yocto Project |
107 | <ulink url='http://www.yoctoproject.org/download'>download page</ulink> and click | 114 | <ulink url='http://www.yoctoproject.org/download'>download page</ulink> and click |
@@ -110,35 +117,34 @@ | |||
110 | isolating and storing work for a given piece of hardware. | 117 | isolating and storing work for a given piece of hardware. |
111 | A layer is really just a location or area in which you place the recipes for your BSP. | 118 | A layer is really just a location or area in which you place the recipes for your BSP. |
112 | In fact, a BSP is, in itself, a special type of layer. | 119 | In fact, a BSP is, in itself, a special type of layer. |
113 | Consider an application as another example that illustrates a layer. | 120 | Another example that illustrates a layer is an application. |
114 | Suppose you are creating an application that has library or other dependencies in | 121 | Suppose you are creating an application that has library or other dependencies in |
115 | order for it to compile and run. | 122 | order for it to compile and run. |
116 | The layer, in this case, would be where all the recipes that define those dependencies | 123 | The layer, in this case, would be where all the recipes that define those dependencies |
117 | are kept. The key point for a layer is that it is an isolated area that contains | 124 | are kept. |
125 | The key point for a layer is that it is an isolated area that contains | ||
118 | all the relevant information for the project that the Yocto Project build | 126 | all the relevant information for the project that the Yocto Project build |
119 | system knows about.</para> | 127 | system knows about.</para> |
120 | <note>The Yocto Project supports four BSPs that are part of the | 128 | <note>The Yocto Project supports four BSPs that are part of the |
121 | Yocto Project release: <filename>atom-pc</filename>, <filename>beagleboard</filename>, | 129 | Yocto Project release: <filename>atom-pc</filename>, <filename>beagleboard</filename>, |
122 | <filename>mpc8315e</filename>, and <filename>routerstationpro</filename>. | 130 | <filename>mpc8315e</filename>, and <filename>routerstationpro</filename>. |
123 | The recipes and configurations for these four BSPs are located and dispersed | 131 | The recipes and configurations for these four BSPs are located and dispersed |
124 | within local Yocto Project files. | 132 | within the local Yocto Project files. |
125 | Consequently, they are not totally isolated in the spirit of layers unless you think | 133 | Consequently, they are not totally isolated in the spirit of layers unless you think |
126 | of <filename>meta-yocto</filename> as a layer itself. | 134 | of <filename>meta-yocto</filename> as a layer itself. |
127 | On the other hand, BSP layers for Crown Bay, Emenlow, Jasper Forest, | 135 | On the other hand, BSP layers for Crown Bay, Emenlow, Jasper Forest, |
128 | N450, and Sugar Bay are isolated.</note> | 136 | N450, and Sugar Bay are isolated.</note> |
129 | <para>When you set up a layer for a new BSP you should follow a standard layout. | 137 | <para>When you set up a layer for a new BSP, you should follow a standard layout. |
130 | This layout is described in the | 138 | This layout is described in the section |
131 | <ulink url='http://www.yoctoproject.org/docs/1.1/bsp-guide/bsp-guide.html#bsp-filelayout'> | 139 | "<ulink url='http://www.yoctoproject.org/docs/1.1/bsp-guide/bsp-guide.html#bsp-filelayout'>Example Filesystem Layout</ulink>" section of the Board Support Package (BSP) Development Guide. |
132 | Example Filesystem Layout</ulink> section of the Board Support Package (BSP) Development | 140 | In the standard layout, you will notice a suggested structure for recipes and |
133 | Guide. | ||
134 | In the standard layout you will notice a suggested structure for recipes and | ||
135 | configuration information. | 141 | configuration information. |
136 | You can see the standard layout for the Crown Bay BSP in this example by examining the | 142 | You can see the standard layout for the Crown Bay BSP in this example by examining the |
137 | directory structure of the <filename>meta-crownbay</filename> layer inside the | 143 | directory structure of the <filename>meta-crownbay</filename> layer inside the |
138 | local Yocto Project files.</para></listitem> | 144 | local Yocto Project files.</para></listitem> |
139 | <listitem><para><emphasis>Make configuration changes to your new BSP | 145 | <listitem><para><emphasis>Make configuration changes to your new BSP |
140 | layer</emphasis>: The standard BSP layer structure organizes the files you need to edit in | 146 | layer</emphasis>: The standard BSP layer structure organizes the files you need to edit in |
141 | <filename>conf</filename> and several <filename>recipes-*</filename> within the | 147 | <filename>conf</filename> and several <filename>recipes-*</filename> directories within the |
142 | BSP layer. | 148 | BSP layer. |
143 | Configuration changes identify where your new layer is on the local system | 149 | Configuration changes identify where your new layer is on the local system |
144 | and identify which kernel you are going to use. | 150 | and identify which kernel you are going to use. |
@@ -148,22 +154,20 @@ | |||
148 | recipes you don't use, and adding new recipes that you need to support your hardware. | 154 | recipes you don't use, and adding new recipes that you need to support your hardware. |
149 | </para></listitem> | 155 | </para></listitem> |
150 | <listitem><para><emphasis>Prepare for the build</emphasis>: Once you have made all the | 156 | <listitem><para><emphasis>Prepare for the build</emphasis>: Once you have made all the |
151 | changes to your BSP layer there remains a few things | 157 | changes to your BSP layer, there remains a few things |
152 | you need to do for the Yocto Project build system in order for it to create your image. | 158 | you need to do for the Yocto Project build system in order for it to create your image. |
153 | You need to get the build environment ready by sourcing an environment setup script | 159 | You need to get the build environment ready by sourcing an environment setup script |
154 | and you need to be sure two key configuration files are configured appropriately.</para> | 160 | and you need to be sure two key configuration files are configured appropriately.</para> |
155 | <para>The entire process for building an image is overviewed in the | 161 | <para>The entire process for building an image is overviewed in the section |
156 | <ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#building-image'> | 162 | "<ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#building-image'>Building an Image</ulink>" section of the Yocto Project Quick Start. |
157 | Building an Image</ulink> section of the Yocto Project Quick Start. | ||
158 | You might want to reference this information.</para></listitem> | 163 | You might want to reference this information.</para></listitem> |
159 | <listitem><para><emphasis>Build the image</emphasis>: The Yocto Project uses the BitBake | 164 | <listitem><para><emphasis>Build the image</emphasis>: The Yocto Project uses the BitBake |
160 | tool to build images based on the type of image you want to create. | 165 | tool to build images based on the type of image you want to create. |
161 | You can find more information on BitBake | 166 | You can find more information on BitBake |
162 | <ulink url='http://bitbake.berlios.de/manual/'>here</ulink>.</para> | 167 | <ulink url='http://bitbake.berlios.de/manual/'>here</ulink>.</para> |
163 | <para>The build process supports several types of images to satisfy different needs. | 168 | <para>The build process supports several types of images to satisfy different needs. |
164 | See | 169 | See the |
165 | <ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html#ref-images'> | 170 | "<ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html#ref-images'>Reference: Images</ulink>" appendix in the |
166 | Reference: Images</ulink> in the | ||
167 | <ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html'> | 171 | <ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html'> |
168 | Yocto Project Reference Manual</ulink>for information on supported images.</para></listitem> | 172 | Yocto Project Reference Manual</ulink>for information on supported images.</para></listitem> |
169 | </orderedlist> | 173 | </orderedlist> |
@@ -175,9 +179,9 @@ | |||
175 | You can also find supplemental information in | 179 | You can also find supplemental information in |
176 | <ulink url='http://yoctoproject.org/docs/1.1/bsp-guide/bsp-guide.html'> | 180 | <ulink url='http://yoctoproject.org/docs/1.1/bsp-guide/bsp-guide.html'> |
177 | The Board Support Package (BSP) Development Guide</ulink>. | 181 | The Board Support Package (BSP) Development Guide</ulink>. |
178 | Finally, there is wiki page write up of the example located | 182 | Finally, there is wiki page write up of the example also located |
179 | <ulink url='https://wiki.yoctoproject.org/wiki/Transcript:_creating_one_generic_Atom_BSP_from_another'> | 183 | <ulink url='https://wiki.yoctoproject.org/wiki/Transcript:_creating_one_generic_Atom_BSP_from_another'> |
180 | here</ulink> you might find helpful. | 184 | here</ulink> that you might find helpful. |
181 | </para> | 185 | </para> |
182 | </section> | 186 | </section> |
183 | 187 | ||
@@ -198,7 +202,8 @@ | |||
198 | For a complete discussion of the kernel, see | 202 | For a complete discussion of the kernel, see |
199 | <ulink url='http://www.yoctoproject.org/docs/1.1/kernel-manual/kernel-manual.html'> | 203 | <ulink url='http://www.yoctoproject.org/docs/1.1/kernel-manual/kernel-manual.html'> |
200 | The Yocto Project Kernel Architecture and Use Manual</ulink>. | 204 | The Yocto Project Kernel Architecture and Use Manual</ulink>. |
201 | You can reference <xref linkend='dev-manual-kernel-appendix'>Kernel Modification Example</xref> | 205 | You can reference the appendix |
206 | "<link linkend='dev-manual-kernel-appendix'>Kernel Modification Example</link>" | ||
202 | for a detailed example that changes the configuration of a kernel. | 207 | for a detailed example that changes the configuration of a kernel. |
203 | </para> | 208 | </para> |
204 | 209 | ||
@@ -210,6 +215,7 @@ | |||
210 | of files that contain kernel patches. | 215 | of files that contain kernel patches. |
211 | The Yocto Project, however, employs mechanisims, that in a sense, result in a kernel source | 216 | The Yocto Project, however, employs mechanisims, that in a sense, result in a kernel source |
212 | generator. | 217 | generator. |
218 | By the end of this section, this analogy will become clearer. | ||
213 | </para> | 219 | </para> |
214 | 220 | ||
215 | <para> | 221 | <para> |
@@ -365,17 +371,14 @@ | |||
365 | <orderedlist> | 371 | <orderedlist> |
366 | <listitem><para><emphasis>Set up your host development system to support | 372 | <listitem><para><emphasis>Set up your host development system to support |
367 | development using the Yocto Project</emphasis>: See | 373 | development using the Yocto Project</emphasis>: See |
368 | <ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#the-linux-distro'> | 374 | "<ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#the-linux-distro'>The Linux Distributions</ulink>" and |
369 | The Linux Distributions</ulink> section and | 375 | "<ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#packages'>The Packages</ulink>" sections both |
370 | <ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#packages'> | ||
371 | The Packages</ulink> section both | ||
372 | in the Yocto Project Quick Start for requirements.</para></listitem> | 376 | in the Yocto Project Quick Start for requirements.</para></listitem> |
373 | <listitem><para><emphasis>Establish a local copy of the Yocto Project files on your | 377 | <listitem><para><emphasis>Establish a local copy of the Yocto Project files on your |
374 | system</emphasis>: Having the Yocto Project files on your system gives you access to | 378 | system</emphasis>: Having the Yocto Project files on your system gives you access to |
375 | the build process and tools you need. | 379 | the build process and tools you need. |
376 | For information on how to get these files, see the bulleted item | 380 | For information on how to get these files, see the bulleted item |
377 | <link linkend='local-yp-release'>Yocto Project Release</link> in | 381 | "<link linkend='local-yp-release'>Yocto Project Release</link>" earlier in this manual. |
378 | <xref linkend='getting-setup'>Getting Setup</xref> earlier in this manual. | ||
379 | </para></listitem> | 382 | </para></listitem> |
380 | <listitem><para><emphasis>Set up the <filename>poky-extras</filename> Git | 383 | <listitem><para><emphasis>Set up the <filename>poky-extras</filename> Git |
381 | repository</emphasis>: This repository is the area for your configuration | 384 | repository</emphasis>: This repository is the area for your configuration |
@@ -384,85 +387,87 @@ | |||
384 | It is good practice to set this repository up inside the local Yocto | 387 | It is good practice to set this repository up inside the local Yocto |
385 | Project files Git repository. | 388 | Project files Git repository. |
386 | For information on how to get these files, see the bulleted item | 389 | For information on how to get these files, see the bulleted item |
387 | <link linkend='poky-extras-repo'>The | 390 | "<link linkend='poky-extras-repo'>The <filename>poky-extras</filename> Git Repository</link>" |
388 | <filename>poky-extras</filename> Git Repository</link> in | 391 | earlier in this manual.</para></listitem> |
389 | <xref linkend='getting-setup'>Getting Setup</xref> earlier in this manual. | ||
390 | </para></listitem> | ||
391 | <listitem><para><emphasis>Establish a local copy of the Linux Yocto kernel files on your | 392 | <listitem><para><emphasis>Establish a local copy of the Linux Yocto kernel files on your |
392 | system</emphasis>: In order to make modifications to the kernel you need two things: | 393 | system</emphasis>: In order to make modifications to the kernel you need two things: |
393 | a bare clone of the Linux Yocto kernel you are modifying and a copy of that | 394 | a bare clone of the Linux Yocto kernel you are modifying and |
394 | bare clone. | 395 | a copy of that bare clone. |
395 | The bare clone is required by the build process and is the area to which you | 396 | The bare clone is required by the build process and is the area to which you |
396 | push your kernel source changes. | 397 | push your kernel source changes (pulling does not work with bare clones). |
397 | The copy of the bare clone is a local Git repository that contains all the kernel's | 398 | The copy of the bare clone is a local Git repository that contains all the kernel's |
398 | source files. | 399 | source files. |
399 | You make your changes to the files in this copy of the bare clone. | 400 | You make your changes to the files in this copy of the bare clone. |
400 | For information on how to set these two items up, see the bulleted item | 401 | For information on how to set these two items up, see the bulleted item |
401 | <link linkend='local-kernel-files'>Linux Yocto Kernel</link> in | 402 | "<link linkend='local-kernel-files'>Linux Yocto Kernel</link>" |
402 | <xref linkend='getting-setup'>Getting Setup</xref> earlier in this manual. | 403 | earlier in this manual.</para></listitem> |
403 | </para></listitem> | ||
404 | <listitem><para><emphasis>Make changes to the kernel source code if | 404 | <listitem><para><emphasis>Make changes to the kernel source code if |
405 | applicable</emphasis>: Modifying the kernel does not always mean directly | 405 | applicable</emphasis>: Modifying the kernel does not always mean directly |
406 | changing source files. | 406 | changing source files. |
407 | However, if you have to do this then you make the changes in the local | 407 | However, if you have to do this, you make the changes in the local |
408 | Git repository you set up to hold the source files (i.e. the copy of the | 408 | Git repository you set up to hold the source files (i.e. the copy of the |
409 | bare clone). | 409 | bare clone). |
410 | Once the changes are made you need to use Git commands to commit the changes | 410 | Once the changes are made, you need to use Git commands to commit the changes |
411 | and then push them to the bare clone.</para></listitem> | 411 | and then push them to the bare clone.</para></listitem> |
412 | <listitem><para><emphasis>Make kernel configuration changes | 412 | <listitem><para><emphasis>Make kernel configuration changes |
413 | to your local kernel layer if applicable</emphasis>: | 413 | to your local kernel layer if applicable</emphasis>: |
414 | If your situation calls for changing the kernel's configuration you can | 414 | If your situation calls for changing the kernel's configuration, you can |
415 | use <filename>menuconfig</filename> | 415 | use <filename>menuconfig</filename> |
416 | to enable and disable kernel configurations. | 416 | to enable and disable kernel configurations. |
417 | Using <filename>menuconfig</filename> allows you to develop and test the | 417 | Using <filename>menuconfig</filename> allows you to interactively develop and test the |
418 | configuration changes you are making to the kernel.</para></listitem> | 418 | configuration changes you are making to the kernel. |
419 | When saved, changes using <filename>menuconfig</filename> update the kernel's | ||
420 | <filename>.config</filename>. | ||
421 | As an alternative method to changing the kernel's configuration, you can simply | ||
422 | edit the <filename>.config</filename> found in the Yocto Project build | ||
423 | directory at <filename>tmp/sysroots/<machine-name>/kernel</filename> | ||
424 | directly.</para></listitem> | ||
419 | <listitem><para><emphasis>Add new kernel recipes if applicable</emphasis>: The standard | 425 | <listitem><para><emphasis>Add new kernel recipes if applicable</emphasis>: The standard |
420 | layer structure organizes recipe files inside the | 426 | layer structure organizes recipe files inside the |
421 | <filename>meta-kernel-dev</filename> layer that is within the | 427 | <filename>meta-kernel-dev</filename> layer that is within the |
422 | <filename>poky-extras</filename> Git repository. | 428 | <filename>poky-extras</filename> Git repository. |
423 | If you need to add new kernel recipes you add them within this layer. | 429 | If you need to add new kernel recipes, you add them within this layer. |
424 | Also within this area you will find the <filename>.bbappend</filename> | 430 | Also within this area, you will find the <filename>.bbappend</filename> |
425 | file that appends information to the kernel's recipe file used during the | 431 | file that appends information to the kernel's recipe file used during the |
426 | build. | 432 | build. |
427 | </para></listitem> | 433 | </para></listitem> |
428 | <listitem><para><emphasis>Prepare for the build</emphasis>: Once you have made all the | 434 | <listitem><para><emphasis>Prepare for the build</emphasis>: Once you have made all the |
429 | changes to your kernel (configurations, source code changes, recipe additions, | 435 | changes to your kernel (configurations, source code changes, recipe additions, |
430 | or recipe changes) there remains a few things | 436 | or recipe changes), there remains a few things |
431 | you need to do for the Yocto Project build system in order for it to create your image. | 437 | you need to do in order for the Yocto Project build system to create your image. |
432 | If you have not done so you need to get the build environment ready by sourcing | 438 | If you have not done so, you need to get the build environment ready by sourcing |
433 | the environment setup script described earlier. | 439 | the environment setup script described earlier. |
434 | You also need to be sure two key configuration files | 440 | You also need to be sure two key configuration files |
435 | (<filename>local.conf</filename> and <filename>bblayers.conf</filename>) | 441 | (<filename>local.conf</filename> and <filename>bblayers.conf</filename>) |
436 | are configured appropriately.</para> | 442 | are configured appropriately.</para> |
437 | <para>The entire process for building an image is overviewed in the | 443 | <para>The entire process for building an image is overviewed in the |
438 | <ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#building-image'> | 444 | "<ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#building-image'>Building an Image</ulink>" section of the Yocto Project Quick Start. |
439 | Building an Image</ulink> section of the Yocto Project Quick Start. | ||
440 | You might want to reference this information. | 445 | You might want to reference this information. |
441 | Also, you should look at the detailed examples found in the appendices at | 446 | Also, you should look at the detailed examples found in the appendices at |
442 | end of this manual.</para></listitem> | 447 | at the end of this manual.</para></listitem> |
443 | <listitem><para><emphasis>Build the image</emphasis>: The Yocto Project uses the BitBake | 448 | <listitem><para><emphasis>Build the image</emphasis>: The Yocto Project |
449 | build system Poky uses the BitBake | ||
444 | tool to build images based on the type of image you want to create. | 450 | tool to build images based on the type of image you want to create. |
445 | You can find more information on BitBake | 451 | You can find more information on BitBake |
446 | <ulink url='http://bitbake.berlios.de/manual/'>here</ulink>.</para> | 452 | <ulink url='http://bitbake.berlios.de/manual/'>here</ulink>.</para> |
447 | <para>The build process supports several types of images to satisfy different needs. | 453 | <para>The build process supports several types of images to satisfy different needs. |
448 | See | 454 | See the appendix |
449 | <ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html#ref-images'> | 455 | "<ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html#ref-images'>Reference: Images</ulink>" in the |
450 | Reference: Images</ulink> in the | ||
451 | <ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html'> | 456 | <ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html'> |
452 | Yocto Project Reference Manual</ulink> for information on supported | 457 | Yocto Project Reference Manual</ulink> for information on supported |
453 | images.</para></listitem> | 458 | images.</para></listitem> |
454 | <listitem><para><emphasis>Make your configuration changes available | 459 | <listitem><para><emphasis>Make your configuration changes available |
455 | in the kernel layer</emphasis>: Up to this point all the configuration changes to the | 460 | in the kernel layer</emphasis>: Up to this point, all the configuration changes to the |
456 | kernel have been done and tested iteratively. | 461 | kernel have been done and tested iteratively. |
457 | Once they are tested and ready to go you can move them into the kernel layer, | 462 | Once they are tested and ready to go, you can move them into the kernel layer, |
458 | which allows you to distribute the layer. | 463 | which allows you to distribute the layer.</para></listitem> |
459 | [WRITER'S NOTE: Not sure if the layer is meta-kernel-dev or if it would be | 464 | <listitem><para><emphasis>If applicable, share your in-tree changes</emphasis>: |
460 | a new layer copied from the work done there.]</para></listitem> | 465 | If the changes you made |
461 | <listitem><para><emphasis>Push your configuration and recipe changes upstream to the | 466 | are suited for all Linux Yocto users, you might want to push the changes to a |
462 | linux Yocto Git repository (in-tree changes)</emphasis>: If the changes you made | 467 | contribution area for the Linux Yocto Git repository. |
463 | are suited for all Linux Yocto users you might want to push the changes up into | 468 | Once the changes are pushed, you can request that they |
464 | the Linux Yocto Git repository so that they become part of the kernel tree | 469 | be pulled into the master branch of the kernel tree. |
465 | and available to everyone using the kernel.</para></listitem> | 470 | Doing so makes them available to everyone using the kernel.</para></listitem> |
466 | </orderedlist> | 471 | </orderedlist> |
467 | </para> | 472 | </para> |
468 | </section> | 473 | </section> |
diff --git a/documentation/dev-manual/figures/kernel-dev-flow.png b/documentation/dev-manual/figures/kernel-dev-flow.png index d33334fb5d..11fdda5eaa 100644 --- a/documentation/dev-manual/figures/kernel-dev-flow.png +++ b/documentation/dev-manual/figures/kernel-dev-flow.png | |||
Binary files differ | |||