diff options
author | Scott Rifenbark <scott.m.rifenbark@intel.com> | 2011-07-27 13:17:12 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-08-04 15:06:48 +0100 |
commit | 0bea49d340b66a2bf93687c14e5b4aaf36367210 (patch) | |
tree | f48d66d6f434adce241d0d8bbe81a232bbaf2a0e /documentation | |
parent | 93e530c7a5055333629a6298e6d93cdfd9f47db6 (diff) | |
download | ast2050-yocto-poky-0bea49d340b66a2bf93687c14e5b4aaf36367210.zip ast2050-yocto-poky-0bea49d340b66a2bf93687c14e5b4aaf36367210.tar.gz |
documentation/dev-manual/dev-manual-cases.xml: Deleted this file.
No need for this chapter any longer. Re-org has ash-canned it.
(From yocto-docs rev: 085a514133f4326c1da372b95507a3665e8f91ed)
Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation')
-rw-r--r-- | documentation/dev-manual/dev-manual-cases.xml | 446 |
1 files changed, 0 insertions, 446 deletions
diff --git a/documentation/dev-manual/dev-manual-cases.xml b/documentation/dev-manual/dev-manual-cases.xml deleted file mode 100644 index fc93b53..0000000 --- a/documentation/dev-manual/dev-manual-cases.xml +++ /dev/null @@ -1,446 +0,0 @@ -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" -"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> - -<chapter id='dev-manual-cases'> - -<title>Development Cases</title> - - <section id='modifying-a-kernel-kernel-example'> - <title>Modifying a Kernel</title> - - <para> - Kernel modification involves changing or adding configurations to an existing kernel, or - adding recipes to the kernel that are needed to support specific hardware features. - The process is similar to creating a Board Support Package (BSP) except that it does not - involve a BSP layer. - </para> - - <para> - This section presents a brief overview of the kernel structure and then provides a simple - example that shows how to modify the kernel. - </para> - - <section id='yocto-project-kernel'> - <title>Yocto Project Kernel Overview</title> - - <para> - When one thinks of the source files for a kernel they usually think of a fixed structure - of files that contain kernel patches. - The Yocto Project, however, employs mechanisims that in a sense result in a kernel source - generator. - </para> - - <para> - The Yocto Project uses the source code management (SCM) tool Git to manage and track Yocto - Project files. - Git employs branching strategies that effectively produce a tree-like structure whose - branches represent diversions from more general code. - For example, suppose two kernels are basically identical with the exception of a couple - different features in each. - In the Yocto Project source repositories managed by Git a main branch can contain the - common or shared - parts of the kernel source and two branches that diverge from that common branch can - each contain the features specific to the respective kernel. - The result is a managed tree whose "leaves" represent the end of a specific path that yields - a set of kernel source files necessary for a specific piece of hardware and its features. - </para> - - <para> - A big advantage to this scheme is the sharing of common features by keeping them in - "larger" branches that are further up the tree. - This practice eliminates redundant storage of similar features shared among kernels. - </para> - - <para> - When you build the kernel on your development system all files needed for the build - are taken from the Yocto Project source repositories pointed to by the - <filename>SRC_URI</filename> variable and gathered in a temporary work area - where they are subsequently used to create the unique kernel. - Thus, in a sense, the process constructs a local source tree specific to your - kernel to generate the new kernel image - a source generator if you will. - </para> - - <para> - For a complete discussion of the Yocto Project kernel's architcture and its branching strategy, - see the <ulink url='http://www.yoctoproject.org/docs/1.1/kernel-manual/kernel-manual.html'> - The Yocto Project Kernel Architecture and Use Manual</ulink>. - </para> - - <para> - You can find a web interface to the Yocto Project source repository at - <ulink url='http://git.yoctoproject.org/'></ulink>. - Within the interface you will see groups of related source code, each of which can - be cloned using Git to result in a working Git repository on your local system - (referred to as the "local Yocto Project files" in this manual). - The Yocto Project supports four types of kernels in its source repositories at - <ulink url='http://git.yoctoproject.org/'></ulink>: - <itemizedlist> - <listitem><para><emphasis><filename>linux-yocto-2.6.34</filename></emphasis> - The - stable Linux Yocto kernel that is based on the Linux 2.6.34 release.</para></listitem> - <listitem><para><emphasis><filename>linux-yocto-2.6.37</filename></emphasis> - The current - Linux Yocto kernel that is based on the Linux 2.6.37 release.</para></listitem> - <listitem><para><emphasis><filename>linux-yocto-dev</filename></emphasis> - A development - kernel based on the Linux 2.6.39-rc1 release.</para></listitem> - <listitem><para><emphasis><filename>linux-2.6</filename></emphasis> - A kernel based on - minimal Linux mainline tracking. - [WRITER'S NOTE: I don't know which Git repository the user needs to clone to get this - repository on their development system.]</para></listitem> - </itemizedlist> - </para> - </section> - - <section id='modifying-a-kernel-example'> - <title>Modifying a Kernel Example</title> - - <para> - This section presents a simple example that illustrates kernel modification - based on the <filename>linux-yocto-2.6.37</filename> kernel. - The example uses the audio and mixer capabilities supported by the - <ulink url='http://www.alsa-project.org/main/index.php/Main_Page'>Advanced Linux - Sound Architecture (ALSA) Project</ulink>. - As the example progresses you will see how to do the following: - <itemizedlist> - <listitem><para>Iteratively modify a base kernel locally.</para></listitem> - <listitem><para>Provide a recipe-based solution for your modified kernel. - </para></listitem> - <listitem><para>Proved an "in-tree" solution for your modified kernel - (i.e. make the modifcations part of the Yocto Project).</para></listitem> - </itemizedlist> - </para> - - <para> - The example flows as follows: - </para> - - <para> - <itemizedlist> - <listitem><para>Be sure your host development system is set up to support - development using the Yocto Project. - See - <ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#the-linux-distro'> - The Linux Distributions</ulink> section and - <ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#packages'> - The Packages</ulink> section both - in the Yocto Project Quick Start for requirements. - You will also need a release of Yocto Project installed on the host.</para></listitem> - <listitem><para>Set up your environment for optimal local kernel development. - </para></listitem> - <listitem><para>Create a layer to isolate your kernel work.</para></listitem> - <listitem><para>Next item.</para></listitem> - <listitem><para>Next item.</para></listitem> - <listitem><para>Next item.</para></listitem> - <listitem><para>Next item.</para></listitem> - </itemizedlist> - </para> - - <section id='setting-up-yocto-project-kernel-example'> - <title>Setting Up Yocto Project</title> - - <para> - You need to have the Yocto Project files available on your host system. - The process is identical to that described in the - <xref linkend='getting-setup'>"Getting Setup"</xref> section earlier in this - manual. - Be sure to either set up a local Git repository for <filename>poky</filename> - or download and unpack the Yocto Project release tarball. - </para> - </section> - - <section id='create-a-git-repository-of-poky-extras'> - <title>Create a Git Repository of <filename>poky-extras</filename></title> - - <para> - Everytime you change a configuration or add a recipe to the kernel you need to - do a fetch from the Linux Yocto kernel source repositories. - This can get tedious and time consuming if you need to fetch the entire - Linux Yocto 2.6.37 Git repository down from the Internet everytime you make a change - to the kernel. - </para> - - <para> - You can get around this by setting up a <filename>meta-kernel-dev</filename> - area on your local system. - This area contains "append" files for every kernel recipe, which also include - a <filename>KSRC</filename> statement that points to the kernel source files. - You can set up the environment so that the <filename>KSRC</filename> points to the - <filename>meta-kernel-dev</filename>, thus pulling source from a local area. - This setup can speed up development time. - </para> - - <para> - To get set up you need to do two things: create a local Git repository - of the <filename>poky-extras</filename> repository, and create a bare clone of the - Linux Yocto 2.6.37 kernel Git repository. - </para> - - <para> - The following transcript shows how to clone the <filename>poky-extras</filename> - Git repository into the current working directory, which is <filename>poky</filename> - in this example. - The command creates the repository in a directory named <filename>poky-extras</filename>: - <literallayout class='monospaced'> - $ git clone git://git.yoctoproject.org/poky-extras - Initialized empty Git repository in /home/scottrif/poky/poky-extras/.git/ - remote: Counting objects: 532, done. - remote: Compressing objects: 100% (472/472), done. - remote: Total 532 (delta 138), reused 307 (delta 39) - Receiving objects: 100% (532/532), 534.28 KiB | 362 KiB/s, done. - Resolving deltas: 100% (138/138), done. - </literallayout> - </para> - - <para> - This transcript shows how to clone a bare Git repository of the Linux Yocto - 2.6.37 kernel: - <literallayout class='monospaced'> - $ git clone --bare git://git.yoctoproject.org/linux-yocto-2.6.37 - Initialized empty Git repository in /home/scottrif/linux-yocto-2.6.37.git/ - remote: Counting objects: 1886034, done. - remote: Compressing objects: 100% (314326/314326), done. - remote: Total 1886034 (delta 1570202), reused 1870335 (delta 1554798) - Receiving objects: 100% (1886034/1886034), 401.51 MiB | 714 KiB/s, done. - Resolving deltas: 100% (1570202/1570202), done. - </literallayout> - </para> - - <para> - The bare clone of the Linux Yocto 2.6.37 kernel on your local system mirrors - the upstream repository of the kernel. - You can effectively point to this local clone now during development to avoid - having to fetch the entire Linux Yocto 2.6.37 kernel every time you make a - kernel change. - </para> - </section> - - <section id='create-a-layer-for-your-kernel-work'> - <title>Create a Layer for Your Kernel Work</title> - - <para> - It is always good to isolate your work using your own layer. - Doing so allows you to experiment and easily start over should things go wrong. - This example uses a layer named <filename>meta-amixer</filename>. - </para> - - <para> - When you set up a layer for kernel work you should follow the general layout - guidelines as described for BSP layers. - This layout is described in the - <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. - In the standard layout you will notice a suggested structure for recipes and - configuration information. - [WRITER'S NOTE: The <filename>meta-elc</filename> example uses an - <filename>images</filename> directory. - Currently, <filename>images</filename> is not part of the standard BSP layout. - I need to find out from Darren if this directory is required for kernel work.] - </para> - - <para> - [WRITER'S NOTE: I need a paragraph here describing how to set up the layer. - I am not sure if you should copy an existing BSP layer and modify from there. - Or, if you should just look at a BSP layer and then create your own files. - Email to Darren on this but no answer yet.] - </para> - </section> - - <section id='making-changes-to-your-kernel-layer'> - <title>Making Changes to Your Kernel Layer</title> - - <para> - In the standard layer structure you have several areas that you need to examine or - modify. - For this example the layer contains four areas: - <itemizedlist> - <listitem><para><emphasis><filename>conf</filename></emphasis> - Contains the - <filename>layer.conf</filename> that identifies the location of the recipe files. - </para></listitem> - <listitem><para><emphasis><filename>images</filename></emphasis> - Contains the - image recipe file. - This recipe includes the base image you will be using and specifies other - packages the image might need.</para></listitem> - <listitem><para><emphasis><filename>recipes-bsp</filename></emphasis> - Contains - recipes specific to the hardware for which you are developing the kernel. - </para></listitem> - <listitem><para><emphasis><filename>recipes-kernel</filename></emphasis> - Contains the - "append" files that add information to the main recipe kernel. - </para></listitem> - </itemizedlist> - </para> - - <para> - Let's take a look at the <filename>layer.conf</filename> in the - <filename>conf</filename> directory first. - This configuration file enables the Yocto Project build system to locate and - use the information in your new layer. - </para> - - <para> - The variable <filename>BBPATH</filename> needs to include the path to your layer - as follows: - <literallayout class='monospaced'> - BBPATH := "${BBPATH}:${LAYERDIR}" - </literallayout> - And, the variable <filename>BBFILES</filename> needs to be modified to include your - recipe and append files: - <literallayout class='monospaced'> - BBFILES := "${BBFILES} ${LAYERDIR}/images/*.bb \ - ${LAYERDIR}/images/*.bbappend \ - ${LAYERDIR}/recipes-*/*/*.bb \ - ${LAYERDIR}/recipes-*/*/*.bbappend" - </literallayout> - Finally, you need to be sure to use your layer name in these variables at the - end of the file: - <literallayout class='monospaced'> - BBFILE_COLLECTIONS += "elc" - BBFILE_PATTERN_elc := "^${LAYERDIR}/" - BBFILE_PRIORITY_elc = "9" - </literallayout> - </para> - - <para> - The <filename>images</filename> directory contains an append file that helps - further define the image. - In our example, the base image is <filename>core-image-minimal</filename>. - The image does, however, need some additional modules that we are using - for this example. - These modules support the amixer functionality. - Here is the append file: - <literallayout class='monospaced'> - require recipes-core/images/poky-image-minimal.bb - - IMAGE_INSTALL += "dropbear alsa-utils-aplay alsa-utils-alsamixer" - IMAGE_INSTALL_append_qemux86 += " kernel-module-snd-ens1370 \ - kernel-module-snd-rawmidi kernel-module-loop kernel-module-nls-cp437 \ - kernel-module-nls-iso8859-1 qemux86-audio alsa-utils-amixer" - - LICENSE = "MIT" - </literallayout> - </para> - - <para> - While the focus of this example is not on the BSP, it is worth mentioning that the - <filename>recipes-bsp</filename> directory has the recipes and append files for - features that the hardware requires. - In this example, there is a script and a recipe to support the - <filename>amixer</filename> functionality in QEMU. - It is beyond the scope of this manual to go too deeply into the script. - Suffice it to say that the script tests for the presence of the mixer, sets up - default mixer values, enables the mixer, unmutes master and then - sets the volume to 100. - </para> - - <para> - The recipe <filename>qemu86-audio.bb</filename> installs and runs the - <filename>amixer</filename> when the system boots. - Here is the recipe: - <literallayout class='monospaced'> - SUMMARY = "Provide a basic init script to enable audio" - DESCRIPTION = "Set the volume and unmute the Front mixer setting during boot." - SECTION = "base" - LICENSE = "MIT" - LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58" - - PR = "r4" - - inherit update-rc.d - - RDEPENDS = "alsa-utils-amixer" - - SRC_URI = "file://qemux86-audio" - - INITSCRIPT_NAME = "qemux86-audio" - INITSCRIPT_PARAMS = "defaults 90" - - do_install() { - install -d ${D}${sysconfdir} \ - ${D}${sysconfdir}/init.d - install -m 0755 ${WORKDIR}/qemux86-audio ${D}${sysconfdir}/init.d - cat ${WORKDIR}/${INITSCRIPT_NAME} | \ - sed -e 's,/etc,${sysconfdir},g' \ - -e 's,/usr/sbin,${sbindir},g' \ - -e 's,/var,${localstatedir},g' \ - -e 's,/usr/bin,${bindir},g' \ - -e 's,/usr,${prefix},g' > ${D}${sysconfdir}/init.d/${INITSCRIPT_NAME} - chmod 755 ${D}${sysconfdir}/init.d/${INITSCRIPT_NAME} - } - </literallayout> - </para> - - <para> - The last area to look at is <filename>recipes-kernel</filename>. - This area holds configuration fragments and kernel append files. - The append file must have the same name as the kernel recipe, which is - <filename>linux-yocto-2.6.37</filename> in this example. - The file can <filename>SRC_URI</filename> statements to point to configuration - fragments you might have in the layer. - The file can also contain <filename>KERNEL_FEATURES</filename> statements that specify - included kernel configurations that ship with the Yocto Project. - </para> - </section> - </section> - </section> - -</chapter> - - - - - -<!-- - - - <para> - [WRITER'S NOTE: This section is a second example that focuses on just modifying the kernel. - I don't have any information on this yet. - </para> - - <para> - Here are some points to consider though: - <itemizedlist> - <listitem><para>Reference Darren's presentation - <ulink url='http://events.linuxfoundation.org/events/embedded-linux-conference/hart'> - here</ulink></para></listitem> - <listitem><para>Reference <xref linkend='dev-manual-start'>Getting Started with the Yocto Project</xref> - section to get set up at minimum.</para></listitem> - <listitem><para>Are there extra steps I need specific to kernel development to get started?</para></listitem> - <listitem><para>What do I do to get set up? - Is it a matter of just installing YP and having some pieces together? - What are the pieces?</para></listitem> - <listitem><para>Where do I get the base kernel to start with?</para></listitem> - <listitem><para>Do I install the appropriate toolchain?</para></listitem> - <listitem><para>What kernel git repository do I use?</para></listitem> - <listitem><para>What is the conversion script? - What does it do?</para></listitem> - <listitem><para>What do I have to do to integrate the kernel layer?</para></listitem> - <listitem><para>What do I use to integrate the kernel layer? - HOB? - Do I just Bitbake it?</para></listitem> - <listitem><para>Using the System Image Creator.]</para></listitem> - </itemizedlist> - </para> - </section> - </section> -</section> - -<section id='user-application-development'> - <title>User Application Development</title> - - <para> - [WRITER'S NOTE: This section is the second major development case - developing an application. - Here are points to consider: - <itemizedlist> - <listitem><para>User-space Application Development scenario overview.</para></listitem> - <listitem><para>Using the Yocto Eclipse Plug-in.</para></listitem> - <listitem><para>Back-door support.</para></listitem> - <listitem><para>I feel there is more to this area than we have captured during our two - review meetings.]</para></listitem> - </itemizedlist> - </para> -</section> -</chapter> ---> - -<!-- -vim: expandtab tw=80 ts=4 ---> |