diff options
| author | Scott Rifenbark <scott.m.rifenbark@intel.com> | 2010-11-24 15:30:07 -0800 |
|---|---|---|
| committer | Saul Wold <Saul.Wold@intel.com> | 2010-12-10 22:01:12 -0800 |
| commit | b89a971761d0b07fa24cafff44f3716b81bc2e78 (patch) | |
| tree | 07d90fa814a4c805e144c62e6e13a619b2533b29 /documentation/kernel-manual | |
| parent | 7dbdd91eb997fa215a99eb51b1c4c39d8f29c099 (diff) | |
| download | poky-b89a971761d0b07fa24cafff44f3716b81bc2e78.tar.gz | |
documentation/kernel-manual/yocto-project-kernel-manual.xml: Added a new section called "BSP: Creating:
this section is based on an email that Bruce Ashfield sent me. It replaces
what was in there in the form of sub-sections for creating a new BSP,
cloning one and bsp bootstrapping.
Diffstat (limited to 'documentation/kernel-manual')
| -rw-r--r-- | documentation/kernel-manual/yocto-project-kernel-manual.xml | 151 |
1 files changed, 142 insertions, 9 deletions
diff --git a/documentation/kernel-manual/yocto-project-kernel-manual.xml b/documentation/kernel-manual/yocto-project-kernel-manual.xml index 6d93975019..1c247bcd74 100644 --- a/documentation/kernel-manual/yocto-project-kernel-manual.xml +++ b/documentation/kernel-manual/yocto-project-kernel-manual.xml | |||
| @@ -360,7 +360,7 @@ kernel toolkit: | |||
| 360 | </section> --> | 360 | </section> --> |
| 361 | 361 | ||
| 362 | <section id='actions'> | 362 | <section id='actions'> |
| 363 | <title>How to get things accomplished with the kernel</title> | 363 | <title>How to Get Things Accomplished with the Kernel</title> |
| 364 | <para> | 364 | <para> |
| 365 | This section describes how to accomplish tasks involving the kernel's tree structure. | 365 | This section describes how to accomplish tasks involving the kernel's tree structure. |
| 366 | The information covers the following: | 366 | The information covers the following: |
| @@ -1163,7 +1163,7 @@ The following example illustrates one variant of this workflow: | |||
| 1163 | </literallayout> | 1163 | </literallayout> |
| 1164 | </para> --> | 1164 | </para> --> |
| 1165 | </section> | 1165 | </section> |
| 1166 | </section> | 1166 | </section> |
| 1167 | 1167 | ||
| 1168 | <!-- <section id='bsp-template-migration-from-2'> | 1168 | <!-- <section id='bsp-template-migration-from-2'> |
| 1169 | <title>BSP: Template Migration from 2.0</title> | 1169 | <title>BSP: Template Migration from 2.0</title> |
| @@ -1240,7 +1240,140 @@ That's it. Configure and build. | |||
| 1240 | </para> | 1240 | </para> |
| 1241 | </section> --> | 1241 | </section> --> |
| 1242 | 1242 | ||
| 1243 | <section id='bsp-creating-a-new-bsp'> | 1243 | |
| 1244 | |||
| 1245 | <section id='bsp-creating'> | ||
| 1246 | <title>BSP: Creating</title> | ||
| 1247 | <para> | ||
| 1248 | This section provides an example for creating a BSP based on an existing, and hopefully, | ||
| 1249 | similar one. | ||
| 1250 | Follow these steps and keep in mind your particular situation and differences: | ||
| 1251 | <orderedlist> | ||
| 1252 | <listitem><para>Get a machine configuration file that matches your machine.</para> | ||
| 1253 | <para>You can start with something in <filename>meta/conf/machine</filename>. | ||
| 1254 | Or, <filename>meta-emenlow/conf/machine</filename> has an example in its own layer.</para> | ||
| 1255 | <para>The most up-to-date machines that are probably most similar to yours and that you might want | ||
| 1256 | to look at are <filename>meta/conf/machine/atom-pc.conf</filename> and | ||
| 1257 | <filename>meta-emenlow/conf/machine/emenlow.conf</filename>. | ||
| 1258 | Both of these were either just added or upgraded to use the Yocto Project kernel | ||
| 1259 | at <ulink url='http://git.pokylinux.org/cgit/cgit.cgi/linux-2.6-windriver/'></ulink>. | ||
| 1260 | The main difference between them is that "emenlow" is in its own layer. | ||
| 1261 | It is in its own layer because it needs extra machine-specific packages such as its | ||
| 1262 | own video driver and other supporting packages. | ||
| 1263 | The "atom-pc" is simpler and does not need any special packages - everything it needs can | ||
| 1264 | be specified in the configuration file. | ||
| 1265 | The "atom-pc" machine also supports all of Asus eee901, Acer Aspire One, Toshiba NB305, | ||
| 1266 | and the Intel® Embedded Development Board 1-N450 with no changes.</para> | ||
| 1267 | <para>If you want to make minor changes to support a slightly different machine, you can | ||
| 1268 | create a new configuration file for it and add it alongside the others. | ||
| 1269 | You might consider keeping the common stuff separate and including it.</para> | ||
| 1270 | <para>Similarly, you can also use multiple configuration files for different machines even | ||
| 1271 | if you do it as a separate layer like meta-emenlow.</para> | ||
| 1272 | <para>As an example consider this: | ||
| 1273 | <itemizedlist> | ||
| 1274 | <listitem><para>Copy meta-emenlow</para></listitem> | ||
| 1275 | <listitem><para>Fix or remove anything you do not need. | ||
| 1276 | For this example the only thing left was the kernel directory with a linux-yocto_git.bbappend | ||
| 1277 | file (linux-yocto is the kernel listed in | ||
| 1278 | <filename>meta-crownbay/conf/machine/crownbay.conf</filename>. | ||
| 1279 | Finally, a new entry to the <filename>build/donf/bblayers.conf</filename> was added so the | ||
| 1280 | new layer could be found by Bitbake.</para></listitem> | ||
| 1281 | </itemizedlist> | ||
| 1282 | </para></listitem> | ||
| 1283 | <listitem><para>Get an image with a working kernel built.</para> | ||
| 1284 | <para>For the kernel to compile successfully, you need to create a branch in the git repository | ||
| 1285 | specifically named for your machine. | ||
| 1286 | So first create a bare clone of the Yocto Project git repository, and then create a | ||
| 1287 | local clone of that: | ||
| 1288 | <literallayout class='monospaced'> | ||
| 1289 | $ git clone ‐‐bare git://git.pokylinux.org/linux-2.6-windriver.git | ||
| 1290 | linux-2.6-windriver.git | ||
| 1291 | $ git clone linux-2.6-windriver.git linux-2.6-windriver | ||
| 1292 | </literallayout> | ||
| 1293 | </para> | ||
| 1294 | <para>Now create a branch in the local clone and push it to the bare clone: | ||
| 1295 | <literallayout class='monospaced'> | ||
| 1296 | $ git checkout -b crownbay-standard origin/standard $ git push origin crownbay-standard:crownbay-standard | ||
| 1297 | </literallayout> | ||
| 1298 | </para> | ||
| 1299 | <para>At this point, your git tree should be set up well enough to compile.</para></listitem> | ||
| 1300 | <listitem><para>Point the build at the new kernel git tree.</para> | ||
| 1301 | <para>You can do this by commenting out the SRC_URI variable in | ||
| 1302 | <filename>meta/recipes-kernel/linux/linux-yocto_git.bb</filename> and using a SRC_URI | ||
| 1303 | that points to your new bare git tree. | ||
| 1304 | You should also be able to do this in <filename>linux-yocto_git.bbappend</filename> in the layer: | ||
| 1305 | <literallayout class='monospaced'> | ||
| 1306 | # To use a staged, on-disk bare clone of a Wind River Kernel, use a variant of the | ||
| 1307 | # below SRC_URI = "git://///path/to/kernel/default_kernel.git;fullclone=1" | ||
| 1308 | # | ||
| 1309 | SRC_URI = "git://git.pokylinux.org/linux-2.6-windriver.git;protocol=git;fullclone=1;branch=${KBRANCH};name=machine | ||
| 1310 | \ | ||
| 1311 | git://git.pokylinux.org/linux-2.6-windriver.git;protocol=git;noclone=1;branch=wrs_meta;name=meta" | ||
| 1312 | </literallayout> | ||
| 1313 | </para> | ||
| 1314 | <para>After doing that, select the machine in <filename>build/conf/local.conf</filename>: | ||
| 1315 | <literallayout class='monospaced'> | ||
| 1316 | # | ||
| 1317 | MACHINE ?= "crownbay" | ||
| 1318 | # | ||
| 1319 | </literallayout> | ||
| 1320 | </para> | ||
| 1321 | <para>You should now be able to build and boot an image with the new kernel: | ||
| 1322 | <literallayout class='monospaced'> | ||
| 1323 | $ bitbake poky-image-sato-live | ||
| 1324 | </literallayout> | ||
| 1325 | </para> | ||
| 1326 | <para>Of course, that will give you a kernel with the default config, which is probably | ||
| 1327 | not what you want. | ||
| 1328 | If you just want to set some kernel config options, you can do that by putting them in a files. | ||
| 1329 | For example inserting the following into some <filename>.cfg</filename> file: | ||
| 1330 | <literallayout class='monospaced'> | ||
| 1331 | CONFIG_NETDEV_1000=y | ||
| 1332 | CONFIG_E1000E=y | ||
| 1333 | </literallayout> | ||
| 1334 | </para> | ||
| 1335 | <para>And, another <filename>.cfg</filename> file would contain: | ||
| 1336 | <literallayout class='monospaced'> | ||
| 1337 | CONFIG_LOG_BUF_SHIFT=18 | ||
| 1338 | |||
| 1339 | http://git.pokylinux.org/cgit/cgit.cgi/linux-2.6-windriver/ | ||
| 1340 | |||
| 1341 | SRC_URI_append_crownbay = " file://some.cfg \ | ||
| 1342 | file://other.cfg \ | ||
| 1343 | " | ||
| 1344 | </literallayout> | ||
| 1345 | </para> | ||
| 1346 | <para>You could also add these directly to the git repo's wrs_meta branch as well. | ||
| 1347 | However, the former method is probably easier.</para></listitem> | ||
| 1348 | <listitem><para>If you're also adding patches to the kernel, you can do the same thing. | ||
| 1349 | Put your patches in the SRC_URI as well (plus .cfg for their kernel config options if needed).</para> | ||
| 1350 | <para>Practically speaking, to generate the patches, you'd go to the source in the build tree: | ||
| 1351 | <literallayout class='monospaced'> | ||
| 1352 | build/tmp/work/crownbay-poky-linux/linux-yocto-2.6.34+git0+d1cd5c80ee97e81e130be8c3de3965b770f320d6_0+ | ||
| 1353 | 0431115c9d720fee5bb105f6a7411efb4f851d26-r13/linux | ||
| 1354 | </literallayout> | ||
| 1355 | </para> | ||
| 1356 | <para>Then, modify the code there, using quilt to save the changes, and recompile | ||
| 1357 | (bitbake -c compile -f) | ||
| 1358 | until it works.</para></listitem> | ||
| 1359 | <listitem><para>Once you have the final patch from quilt, copy it to the | ||
| 1360 | SRC_URI location, and it should be | ||
| 1361 | applied the next time you do a clean build. | ||
| 1362 | Of course, since you have a branch for the BSP in git, it would be better to put it there instead. | ||
| 1363 | For example, in this case, commit the patch to the crownbay-standard branch, and during the | ||
| 1364 | next build it will be applied from there.</para></listitem> | ||
| 1365 | </orderedlist> | ||
| 1366 | </para> | ||
| 1367 | </section> | ||
| 1368 | |||
| 1369 | |||
| 1370 | |||
| 1371 | |||
| 1372 | |||
| 1373 | |||
| 1374 | |||
| 1375 | |||
| 1376 | <!-- <section id='bsp-creating-a-new-bsp'> | ||
| 1244 | <title>BSP: Creating a New BSP</title> | 1377 | <title>BSP: Creating a New BSP</title> |
| 1245 | <para> | 1378 | <para> |
| 1246 | Although it is obvious that the structure of a new BSP uses the migrated | 1379 | Although it is obvious that the structure of a new BSP uses the migrated |
| @@ -1260,7 +1393,7 @@ because the board template files are required to configure a project/build | |||
| 1260 | and create the necessary environment to begin working directly with the | 1393 | and create the necessary environment to begin working directly with the |
| 1261 | kernel. If it is desired to start immediately with kernel development and | 1394 | kernel. If it is desired to start immediately with kernel development and |
| 1262 | then add LDAT bindings, see the "bootstrapping a BSP" section. | 1395 | then add LDAT bindings, see the "bootstrapping a BSP" section. |
| 1263 | </para> | 1396 | </para> |
| 1264 | <section id='creating-from-scratch'> | 1397 | <section id='creating-from-scratch'> |
| 1265 | <title>Creating the BSP from Scratch</title> | 1398 | <title>Creating the BSP from Scratch</title> |
| 1266 | <para> | 1399 | <para> |
| @@ -1324,7 +1457,7 @@ Now you can configure a kernel: | |||
| 1324 | You now have a kernel tree, which is branched and has no patches, ready for | 1457 | You now have a kernel tree, which is branched and has no patches, ready for |
| 1325 | development. | 1458 | development. |
| 1326 | </para> | 1459 | </para> |
| 1327 | </section> | 1460 | </section> --> |
| 1328 | 1461 | ||
| 1329 | <!-- <section id='cloning-an-existing-bsp'> | 1462 | <!-- <section id='cloning-an-existing-bsp'> |
| 1330 | <title>Cloning an Existing BSP</title> | 1463 | <title>Cloning an Existing BSP</title> |
| @@ -1518,8 +1651,8 @@ Make changes, import patches, etc. | |||
| 1518 | the relevant branches and structures and the special build options are no | 1651 | the relevant branches and structures and the special build options are no |
| 1519 | longer required. | 1652 | longer required. |
| 1520 | </para> | 1653 | </para> |
| 1521 | </section> --> | 1654 | </section> |
| 1522 | </section> | 1655 | </section> --> |
| 1523 | 1656 | ||
| 1524 | <!-- <section id='patching'> | 1657 | <!-- <section id='patching'> |
| 1525 | <title>Patching</title> | 1658 | <title>Patching</title> |
| @@ -1992,9 +2125,9 @@ This creates a transition kernel layer to evaluate functionality | |||
| 1992 | of some other kernel with the goal of easing transition to an | 2125 | of some other kernel with the goal of easing transition to an |
| 1993 | integrated and validated Yocto Project kernel. | 2126 | integrated and validated Yocto Project kernel. |
| 1994 | </para> | 2127 | </para> |
| 1995 | <para> | 2128 | <!--<para> |
| 1996 | The next few sections describe the process: | 2129 | The next few sections describe the process: |
| 1997 | </para> | 2130 | </para> --> |
| 1998 | <!-- <section id='creating-a-custom-kernel-layer'> | 2131 | <!-- <section id='creating-a-custom-kernel-layer'> |
| 1999 | <title>Creating a Custom Kernel Layer</title> | 2132 | <title>Creating a Custom Kernel Layer</title> |
| 2000 | <para> | 2133 | <para> |
