summaryrefslogtreecommitdiffstats
path: root/documentation
diff options
context:
space:
mode:
Diffstat (limited to 'documentation')
-rw-r--r--documentation/kernel-dev/kernel-dev-common.xml64
1 files changed, 33 insertions, 31 deletions
diff --git a/documentation/kernel-dev/kernel-dev-common.xml b/documentation/kernel-dev/kernel-dev-common.xml
index 3ab21e7077..555c8d8903 100644
--- a/documentation/kernel-dev/kernel-dev-common.xml
+++ b/documentation/kernel-dev/kernel-dev-common.xml
@@ -261,7 +261,7 @@
261 261
262<!-- 262<!--
263 <para> 263 <para>
264 <emphasis>AR - Darrren Hart:</emphasis> This section 264 <emphasis>AR - Darren Hart:</emphasis> This section
265 originated from the old Yocto Project Kernel Architecture 265 originated from the old Yocto Project Kernel Architecture
266 and Use Manual. 266 and Use Manual.
267 It was decided we need to put it in this section here. 267 It was decided we need to put it in this section here.
@@ -635,9 +635,9 @@
635 <title>Working with Out-of-Tree Modules</title> 635 <title>Working with Out-of-Tree Modules</title>
636 636
637 <para> 637 <para>
638 This section describes steps you need to take to be able 638 This section describes steps to build out-of-tree modules on
639 to build out-of-tree modules on your target and how to 639 your target and describes how to incorporate out-of-tree modules
640 incorporate out-of-tree modules in the build. 640 in the build.
641 </para> 641 </para>
642 642
643 <section id='building-out-of-tree-modules-on-the-target'> 643 <section id='building-out-of-tree-modules-on-the-target'>
@@ -646,7 +646,7 @@
646 <para> 646 <para>
647 If you want to be able to build out-of-tree modules on 647 If you want to be able to build out-of-tree modules on
648 the target, there are some steps you need to take 648 the target, there are some steps you need to take
649 on the target that has your SDK image running. 649 on the target that is running your SDK image.
650 Briefly, the <filename>kernel-dev</filename> package 650 Briefly, the <filename>kernel-dev</filename> package
651 is installed by default on all 651 is installed by default on all
652 <filename>*.sdk</filename> images. 652 <filename>*.sdk</filename> images.
@@ -657,15 +657,15 @@
657 657
658 <para> 658 <para>
659 Prior to attempting to build the out-of-tree modules, 659 Prior to attempting to build the out-of-tree modules,
660 you need to be on the target as root and change to the 660 you need to be on the target as root and you need to
661 <filename>/usr/src/kernel</filename> directory and 661 change to the <filename>/usr/src/kernel</filename> directory.
662 then <filename>make</filename> the scripts: 662 Next, <filename>make</filename> the scripts:
663 <literallayout class='monospaced'> 663 <literallayout class='monospaced'>
664 # cd /usr/src/kernel 664 # cd /usr/src/kernel
665 # make scripts 665 # make scripts
666 </literallayout> 666 </literallayout>
667 Because all SDK image recipes include 667 Because all SDK image recipes include
668 <filename>dev-pkgs</filename> the 668 <filename>dev-pkgs</filename>, the
669 <filename>kernel-dev</filename> packages will be installed 669 <filename>kernel-dev</filename> packages will be installed
670 as part of the SDK image. 670 as part of the SDK image.
671 The SDK uses the scripts when building out-of-tree 671 The SDK uses the scripts when building out-of-tree
@@ -682,9 +682,9 @@
682 <para> 682 <para>
683 While it is always preferable to work with sources integrated 683 While it is always preferable to work with sources integrated
684 into the Linux kernel sources, if you need an external kernel 684 into the Linux kernel sources, if you need an external kernel
685 module, the <filename>hello-mod.bb</filename> recipe is available 685 module, the <filename>hello-mod.bb</filename> recipe is
686 as a template from which you can create your own out-of-tree 686 available as a template from which you can create your
687 Linux kernel module recipe. 687 own out-of-tree Linux kernel module recipe.
688 </para> 688 </para>
689 689
690 <para> 690 <para>
@@ -700,12 +700,12 @@
700 <para> 700 <para>
701 To get started, copy this recipe to your layer and give it a 701 To get started, copy this recipe to your layer and give it a
702 meaningful name (e.g. <filename>mymodule_1.0.bb</filename>). 702 meaningful name (e.g. <filename>mymodule_1.0.bb</filename>).
703 In the same directory, create a directory named 703 In the same directory, create a new directory named
704 <filename>files</filename> where you can store any source files, 704 <filename>files</filename> where you can store any source files,
705 patches, or other files necessary for building 705 patches, or other files necessary for building
706 the module that do not come with the sources. 706 the module that do not come with the sources.
707 Finally, update the recipe as appropriate for the module. 707 Finally, update the recipe as needed for the module.
708 Typically you will need to set the following variables: 708 Typically, you will need to set the following variables:
709 <itemizedlist> 709 <itemizedlist>
710 <listitem><para><ulink url='&YOCTO_DOCS_REF_URL;#var-DESCRIPTION'><filename>DESCRIPTION</filename></ulink> 710 <listitem><para><ulink url='&YOCTO_DOCS_REF_URL;#var-DESCRIPTION'><filename>DESCRIPTION</filename></ulink>
711 </para></listitem> 711 </para></listitem>
@@ -719,11 +719,11 @@
719 </para> 719 </para>
720 720
721 <para> 721 <para>
722 Depending on the build system used by the module sources, you might 722 Depending on the build system used by the module sources,
723 need to make some adjustments. 723 you might need to make some adjustments.
724 For example, a typical module <filename>Makefile</filename> looks 724 For example, a typical module <filename>Makefile</filename>
725 much like the one provided with the <filename>hello-mod</filename> 725 looks much like the one provided with the
726 template: 726 <filename>hello-mod</filename> template:
727 <literallayout class='monospaced'> 727 <literallayout class='monospaced'>
728 obj-m := hello.o 728 obj-m := hello.o
729 729
@@ -742,27 +742,29 @@
742 The important point to note here is the 742 The important point to note here is the
743 <ulink url='&YOCTO_DOCS_REF_URL;#var-KERNEL_SRC'><filename>KERNEL_SRC</filename></ulink> 743 <ulink url='&YOCTO_DOCS_REF_URL;#var-KERNEL_SRC'><filename>KERNEL_SRC</filename></ulink>
744 variable. 744 variable.
745 The class <filename>module.bbclass</filename> sets this variable, 745 The
746 as well as the 746 <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-module'><filename>module</filename></ulink>
747 class sets this variable and the
747 <ulink url='&YOCTO_DOCS_REF_URL;#var-KERNEL_PATH'><filename>KERNEL_PATH</filename></ulink> 748 <ulink url='&YOCTO_DOCS_REF_URL;#var-KERNEL_PATH'><filename>KERNEL_PATH</filename></ulink>
748 variable to 749 variable to
749 <filename>${<ulink url='&YOCTO_DOCS_REF_URL;#var-STAGING_KERNEL_DIR'><filename>STAGING_KERNEL_DIR</filename></ulink>}</filename> 750 <filename>${<ulink url='&YOCTO_DOCS_REF_URL;#var-STAGING_KERNEL_DIR'><filename>STAGING_KERNEL_DIR</filename></ulink>}</filename>
750 with the necessary Linux kernel build information to build modules. 751 with the necessary Linux kernel build information to build
752 modules.
751 If your module <filename>Makefile</filename> uses a different 753 If your module <filename>Makefile</filename> uses a different
752 variable, you might want to override the 754 variable, you might want to override the
753 <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-compile'><filename>do_compile()</filename></ulink> 755 <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-compile'><filename>do_compile()</filename></ulink>
754 step, or create a patch to 756 step, or create a patch to
755 the <filename>Makefile</filename> to work with the more typical 757 the <filename>Makefile</filename> to work with the more typical
756 <filename>KERNEL_SRC</filename> or <filename>KERNEL_PATH</filename> 758 <filename>KERNEL_SRC</filename> or
757 variables. 759 <filename>KERNEL_PATH</filename> variables.
758 </para> 760 </para>
759 761
760 <para> 762 <para>
761 After you have prepared your recipe, you will likely want to 763 After you have prepared your recipe, you will likely want to
762 include the module in your images. 764 include the module in your images.
763 To do this, see the documentation for the following variables in 765 To do this, see the documentation for the following variables in
764 the Yocto Project Reference Manual and set one of them as 766 the Yocto Project Reference Manual and set one of them
765 appropriate in your machine configuration file: 767 appropriately for your machine configuration file:
766 <itemizedlist> 768 <itemizedlist>
767 <listitem><para><ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_ESSENTIAL_EXTRA_RDEPENDS'><filename>MACHINE_ESSENTIAL_EXTRA_RDEPENDS</filename></ulink> 769 <listitem><para><ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_ESSENTIAL_EXTRA_RDEPENDS'><filename>MACHINE_ESSENTIAL_EXTRA_RDEPENDS</filename></ulink>
768 </para></listitem> 770 </para></listitem>
@@ -776,13 +778,13 @@
776 </para> 778 </para>
777 779
778 <para> 780 <para>
779 modules are often not required for boot and can be excluded from 781 Modules are often not required for boot and can be excluded from
780 certain build configurations. 782 certain build configurations.
781 The following allows for the most flexibility: 783 The following allows for the most flexibility:
782 <literallayout class='monospaced'> 784 <literallayout class='monospaced'>
783 MACHINE_EXTRA_RRECOMMENDS += "kernel-module-mymodule" 785 MACHINE_EXTRA_RRECOMMENDS += "kernel-module-mymodule"
784 </literallayout> 786 </literallayout>
785 Where the value is derived by appending the module filename without 787 The value is derived by appending the module filename without
786 the <filename>.ko</filename> extension to the string 788 the <filename>.ko</filename> extension to the string
787 "kernel-module-". 789 "kernel-module-".
788 </para> 790 </para>
@@ -792,8 +794,8 @@
792 <ulink url='&YOCTO_DOCS_REF_URL;#var-RRECOMMENDS'><filename>RRECOMMENDS</filename></ulink> 794 <ulink url='&YOCTO_DOCS_REF_URL;#var-RRECOMMENDS'><filename>RRECOMMENDS</filename></ulink>
793 and not a 795 and not a
794 <ulink url='&YOCTO_DOCS_REF_URL;#var-RDEPENDS'><filename>RDEPENDS</filename></ulink> 796 <ulink url='&YOCTO_DOCS_REF_URL;#var-RDEPENDS'><filename>RDEPENDS</filename></ulink>
795 variable, the build will not fail if this module is not available 797 variable, the build will not fail if this module is not
796 to include in the image. 798 available to include in the image.
797 </para> 799 </para>
798 </section> 800 </section>
799 </section> 801 </section>