diff options
Diffstat (limited to 'doc/book-enea-linux-user-guide/doc')
16 files changed, 4609 insertions, 0 deletions
diff --git a/doc/book-enea-linux-user-guide/doc/application_development.xml b/doc/book-enea-linux-user-guide/doc/application_development.xml new file mode 100644 index 0000000..0e2edf4 --- /dev/null +++ b/doc/book-enea-linux-user-guide/doc/application_development.xml | |||
@@ -0,0 +1,282 @@ | |||
1 | <?xml version="1.0" encoding="ISO-8859-1"?> | ||
2 | <chapter id="app_dev"> | ||
3 | <title>Application Development</title> | ||
4 | |||
5 | <section id="cross_comp_apps"> | ||
6 | <title>Cross-Compiling Applications</title> | ||
7 | |||
8 | <para>Running <command>make</command> cross-compiles your applications | ||
9 | according to the environment settings. By installing a Cross-Compilation | ||
10 | Toolchain for your target, the environment variables are set up for | ||
11 | cross-compilation. For more details, see <xref | ||
12 | linkend="install_el_sdk" />.</para> | ||
13 | |||
14 | <para>Once the cross-compilation environment is set up, you can make your | ||
15 | applications as usual and get them compiled for your target. Below you see | ||
16 | how to cross-compile from the command line. If Eclipse is installed, you | ||
17 | can also cross-compile your code from the Eclipse IDE. For more details, | ||
18 | see <xref linkend="crosscomp" />.</para> | ||
19 | |||
20 | <orderedlist> | ||
21 | <listitem> | ||
22 | <para>Create a Makefile for your application. Example of a simple | ||
23 | Makefile and application:</para> | ||
24 | |||
25 | <programlisting>helloworld:helloworld.o | ||
26 | $(CC) -o helloworld helloworld.o | ||
27 | |||
28 | clean: | ||
29 | rm -f *.o helloworld</programlisting> | ||
30 | |||
31 | <programlisting>#include <stdio.h> | ||
32 | |||
33 | int main(void) { | ||
34 | printf("Hello World\n"); | ||
35 | return 0; | ||
36 | }</programlisting> | ||
37 | </listitem> | ||
38 | |||
39 | <listitem> | ||
40 | <para>Run <command>make</command> to cross-compile your application | ||
41 | according to the environment set up:</para> | ||
42 | |||
43 | <programlisting>$ make</programlisting> | ||
44 | |||
45 | <tip> | ||
46 | <para>If the build fails, check if the GNU Make workaround solves | ||
47 | your problem.</para> | ||
48 | </tip> | ||
49 | </listitem> | ||
50 | |||
51 | <listitem> | ||
52 | <para>Copy the <filename>helloworld</filename> program to your target | ||
53 | and run it:</para> | ||
54 | |||
55 | <programlisting># ./helloworld | ||
56 | Hello World</programlisting> | ||
57 | </listitem> | ||
58 | </orderedlist> | ||
59 | </section> | ||
60 | |||
61 | <section id="cross_comp_kern_mod"> | ||
62 | <title>Cross-Compiling Kernel modules</title> | ||
63 | |||
64 | <para>Running <command>make</command> cross-compiles your kernel modules | ||
65 | according to the environment settings. By installing a Cross-Compilation | ||
66 | Toolchain for your target, the environment variables are set up for | ||
67 | cross-compilation. For more details, see <xref | ||
68 | linkend="install_el_sdk" />.</para> | ||
69 | |||
70 | <para>Before cross-compiling kernel modules, you need to make sure the | ||
71 | installed toolchain includes the kernel source tree, which should be | ||
72 | available at: | ||
73 | <literal><sdkdir>/sysroots/<targetarch>-enea-linux/usr/src/kernel</literal>. | ||
74 | If the kernel source tree is not included in the toolchain, you need to | ||
75 | add the kernel-dev package into the image recipe enea-image-<name> | ||
76 | and build the toolchain again.</para> | ||
77 | |||
78 | <para>Once the cross-compilation environment is set up, you can make your | ||
79 | kernel modules as usual and get them compiled for your target. Below you | ||
80 | see how to cross-compile a kernel module.</para> | ||
81 | |||
82 | <orderedlist> | ||
83 | <listitem> | ||
84 | <para>Create a Makefile for the kernel module. Example of a simple | ||
85 | Makefile and kernel module:</para> | ||
86 | |||
87 | <programlisting>obj-m := hello.o | ||
88 | PWD := $(shell pwd) | ||
89 | |||
90 | KERNEL_SRC := <full path to kernel source tree> | ||
91 | |||
92 | all: scripts | ||
93 | $(MAKE) -C $(KERNEL_SRC) M=$(PWD) LDFLAGS="" modules | ||
94 | scripts: | ||
95 | $(MAKE) -C $(KERNEL_SRC) scripts | ||
96 | clean: | ||
97 | $(MAKE) -C $(KERNEL_SRC) M=$(PWD) LDFLAGS="" clean</programlisting> | ||
98 | |||
99 | <programlisting>#include <linux/module.h> /* Needed by all modules */ | ||
100 | #include <linux/kernel.h> /* Needed for KERN_INFO */ | ||
101 | #include <linux/init.h> /* Needed for the macros */ | ||
102 | |||
103 | static int __init hello_start(void) | ||
104 | { | ||
105 | printk(KERN_INFO "Loading hello module...\n"); | ||
106 | printk(KERN_INFO "Hello, world\n"); | ||
107 | return 0; | ||
108 | } | ||
109 | |||
110 | static void __exit hello_end(void) | ||
111 | { | ||
112 | printk(KERN_INFO "Goodbye, world\n"); | ||
113 | } | ||
114 | |||
115 | module_init(hello_start); | ||
116 | module_exit(hello_end); | ||
117 | |||
118 | MODULE_LICENSE("GPL");</programlisting> | ||
119 | </listitem> | ||
120 | |||
121 | <listitem> | ||
122 | <para>Run <command>make</command> to cross-compile your kernel module | ||
123 | according to the environment set up:</para> | ||
124 | |||
125 | <programlisting>$ make</programlisting> | ||
126 | </listitem> | ||
127 | |||
128 | <listitem> | ||
129 | <para>Copy the kernel module <filename>hello.ko</filename> to your | ||
130 | target and install/remove it:</para> | ||
131 | |||
132 | <programlisting># insmod hello.ko | ||
133 | # rmmod hello.ko | ||
134 | # dmesg | ||
135 | [...] Loading hello module... | ||
136 | [...] Hello, world | ||
137 | [...] Goodbye, world</programlisting> | ||
138 | </listitem> | ||
139 | </orderedlist> | ||
140 | </section> | ||
141 | |||
142 | <section id="use_devtool"> | ||
143 | <title>Add an Application using devtool</title> | ||
144 | |||
145 | <para>As a prerequisite, you need to install the SDK and set up the | ||
146 | environment. For this, see <xref linkend="install_el_sdk" />.</para> | ||
147 | |||
148 | <para>The following section, <ulink | ||
149 | url="http://www.yoctoproject.org/docs/2.5/sdk-manual/sdk-manual.html#sdk-use-devtool-to-add-an-application">Use | ||
150 | devtool add to Add an Application</ulink>, in Yocto Project Software | ||
151 | Development Kit (SDK) Developer's Guide, explains how to use devtool to | ||
152 | generate recipes from existing application code, edit and build recipes, | ||
153 | and deploy the output on target. If needed, replace the Yocto version in | ||
154 | the link.</para> | ||
155 | |||
156 | <para>This example will show how to generate a recipe from the existing | ||
157 | application code and Makefile, edit the recipe in order to provide an | ||
158 | installation path for the application, build the recipe, and deploy the | ||
159 | output on a target, or create a DEB package from the recipe and install | ||
160 | the package.</para> | ||
161 | |||
162 | <orderedlist> | ||
163 | <listitem> | ||
164 | <para>Create a simple application and Makefile in | ||
165 | <literal><workspace_dir>/my_app</literal>:</para> | ||
166 | |||
167 | <para><literal><workspace_dir>/my_app/my_hello_app.c</literal></para> | ||
168 | |||
169 | <programlisting>#include <stdio.h> | ||
170 | |||
171 | int main(void) | ||
172 | { | ||
173 | printf("Hello world!\n"); | ||
174 | return 0; | ||
175 | }</programlisting> | ||
176 | |||
177 | <para><literal><workspace_dir>/my_app/Makefile</literal></para> | ||
178 | |||
179 | <programlisting>my_hello_app:</programlisting> | ||
180 | </listitem> | ||
181 | |||
182 | <listitem> | ||
183 | <para>Generate a recipe (my-hello-recipe) using the source tree of the | ||
184 | application (<literal><workspace_dir>/my_app</literal>):</para> | ||
185 | |||
186 | <programlisting>$ devtool add my-hello-recipe <workspace_dir>/my_app | ||
187 | NOTE: Using source tree as build directory since that would be the default for this | ||
188 | recipe | ||
189 | NOTE: Recipe <SDK_dir>/workspace/recipes/my-hello-recipe/my-hello-recipe.bb has been | ||
190 | automatically created; further editing may be required to make it fully functional</programlisting> | ||
191 | |||
192 | <programlisting>$ cat <SDK_dir>/workspace/recipes/my-hello-recipe/my-hello-recipe.bb | ||
193 | # Recipe created by recipetool | ||
194 | # This is the basis of a recipe and may need further editing in order to be fully | ||
195 | # functional. | ||
196 | # (Feel free to remove these comments when editing.) | ||
197 | # | ||
198 | # Unable to find any files that looked like license statements. Check the | ||
199 | # accompanying documentation and source headers and set LICENSE and | ||
200 | # LIC_FILES_CHKSUM accordingly. | ||
201 | # | ||
202 | # NOTE: LICENSE is being set to "CLOSED" to allow you to at least start building - if | ||
203 | # this is not accurate with respect to the licensing of the software being built (it | ||
204 | # will not be in most cases) you must specify the correct value before using this | ||
205 | # recipe for anything other than initial testing/development! | ||
206 | LICENSE = "CLOSED" | ||
207 | LIC_FILES_CHKSUM = "" | ||
208 | |||
209 | # No information for SRC_URI yet (only an external source tree was specified) | ||
210 | SRC_URI = "" | ||
211 | |||
212 | |||
213 | # NOTE: this is a Makefile-only piece of software, so we cannot generate much of the | ||
214 | # recipe automatically - you will need to examine the Makefile yourself and ensure | ||
215 | # that the appropriate arguments are passed in. | ||
216 | |||
217 | do_configure () { | ||
218 | # Specify any needed configure commands here | ||
219 | : | ||
220 | } | ||
221 | |||
222 | do_compile () { | ||
223 | # You will almost certainly need to add additional arguments here | ||
224 | oe_runmake | ||
225 | } | ||
226 | |||
227 | do_install () { | ||
228 | # NOTE: unable to determine what to put here - there is a Makefile but no | ||
229 | # target named "install", so you will need to define this yourself | ||
230 | : | ||
231 | }</programlisting> | ||
232 | </listitem> | ||
233 | |||
234 | <listitem> | ||
235 | <para>Edit the recipe to provide an installation path for the | ||
236 | application:</para> | ||
237 | |||
238 | <programlisting>$ devtool edit-recipe my-hello-recipe</programlisting> | ||
239 | |||
240 | <programlisting>$ cat <SDK_dir>/workspace/recipes/my-hello-recipe/my-hello-recipe.bb | ||
241 | ... | ||
242 | do_install () { | ||
243 | # NOTE: unable to determine what to put here - there is a Makefile but no | ||
244 | # target named "install", so you will need to define this yourself | ||
245 | install -d ${D}${bindir} | ||
246 | install -m 0777 ${S}/my_hello_app ${D}${bindir} | ||
247 | } | ||
248 | ...</programlisting> | ||
249 | </listitem> | ||
250 | |||
251 | <listitem> | ||
252 | <para>Build the recipe:</para> | ||
253 | |||
254 | <programlisting>$ devtool build my-hello-recipe</programlisting> | ||
255 | |||
256 | <para>The recipe build results can be seen here: | ||
257 | <literal><SDK_dir>/tmp/work/<arch>-enea-linux/my-hello-recipe/1.0-r0/</literal></para> | ||
258 | </listitem> | ||
259 | |||
260 | <listitem> | ||
261 | <para>Deploy the output (in this case, the application) on | ||
262 | target:</para> | ||
263 | |||
264 | <programlisting>$ devtool deploy-target my-hello-recipe root@<target_ip_address> | ||
265 | Parsing recipes..done. | ||
266 | NOTE: Successfully deployed | ||
267 | <SDK_dir>/tmp/work/<arch>-enea-linux/my-hello-recipe/1.0-r0/image</programlisting> | ||
268 | |||
269 | <para>As an alternative you can create a DEB package:</para> | ||
270 | |||
271 | <programlisting>$ devtool package my-hello-recipe | ||
272 | ... | ||
273 | NOTE: Your packages are in <SDK_dir>/tmp/deploy/deb</programlisting> | ||
274 | |||
275 | <para>Then copy the DEB package on the target and install it using | ||
276 | dpkg:</para> | ||
277 | |||
278 | <programlisting># dpkg -i my-hello-recipe-1.0-r0.1.<arch>.deb</programlisting> | ||
279 | </listitem> | ||
280 | </orderedlist> | ||
281 | </section> | ||
282 | </chapter> | ||
diff --git a/doc/book-enea-linux-user-guide/doc/book.xml b/doc/book-enea-linux-user-guide/doc/book.xml new file mode 100644 index 0000000..48747ef --- /dev/null +++ b/doc/book-enea-linux-user-guide/doc/book.xml | |||
@@ -0,0 +1,22 @@ | |||
1 | <?xml version="1.0" encoding="ISO-8859-1"?> | ||
2 | <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" | ||
3 | "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [ | ||
4 | <!ENTITY % local.common.attrib "xml:base CDATA #IMPLIED"> | ||
5 | ]> | ||
6 | <book id="book_enea_linux_user_guide_rt"> | ||
7 | <title><trademark class="registered">Enea</trademark> Linux User's Guide</title> | ||
8 | <subtitle>Release Version | ||
9 | <xi:include href="eltf_params_updated.xml" xpointer="element(EneaLinux_REL_VER/1)" | ||
10 | xmlns:xi="http://www.w3.org/2001/XInclude" /></subtitle> | ||
11 | <!-- OLINKDBPATH_USED_BY_XMLMIND ../../s_docbuild/olinkdb --> | ||
12 | <xi:include href="../../s_docbuild/template/docsrc_common/bookinfo_userdoc.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | ||
13 | <xi:include href="preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | ||
14 | <xi:include href="introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | ||
15 | <xi:include href="prerequisites_and_requirements.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | ||
16 | <xi:include href="getting_enea_linux.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | ||
17 | <xi:include href="using_enea_linux.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | ||
18 | <xi:include href="application_development.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | ||
19 | <xi:include href="using_eclipse.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | ||
20 | <xi:include href="real_time_in_enea_linux.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | ||
21 | <xi:include href="troubleshooting.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | ||
22 | </book> | ||
diff --git a/doc/book-enea-linux-user-guide/doc/eltf_params_template.xml b/doc/book-enea-linux-user-guide/doc/eltf_params_template.xml new file mode 100644 index 0000000..eaa7ebd --- /dev/null +++ b/doc/book-enea-linux-user-guide/doc/eltf_params_template.xml | |||
@@ -0,0 +1,151 @@ | |||
1 | <?xml version="1.0" encoding="ISO-8859-1"?> | ||
2 | <!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" | ||
3 | "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> | ||
4 | <section id="eltf_created_params"> | ||
5 | <title>File with Parameters in the Book Auto-updated by ELFT</title> | ||
6 | |||
7 | <note> | ||
8 | <para>See the <emphasis | ||
9 | role="bold">eltf_params_updated_template_howto_use.txt</emphasis> text | ||
10 | file for description of how to create the final <emphasis | ||
11 | role="bold">eltf_params_updated.xml</emphasis> from this template and for | ||
12 | all <emphasis role="bold">REQUIREMENTS</emphasis>. Use the command | ||
13 | "<emphasis role="bold">make eltf</emphasis>" to extract a full list of all | ||
14 | ELTF variables, which always begins with ELTF_ and don't only rely on the | ||
15 | howto text file list! The plan is that ELTF will auto-update this when | ||
16 | needed.</para> | ||
17 | </note> | ||
18 | |||
19 | <section id="host_prereq"> | ||
20 | <title>Common Parameters</title> | ||
21 | |||
22 | <bridgehead>A programlisting, ID | ||
23 | "eltf-prereq-apt-get-commands-host"</bridgehead> | ||
24 | |||
25 | <para id="eltf-prereq-apt-get-commands-host"><programlisting>ELTF_PL_HOST_PREREQ</programlisting></para> | ||
26 | |||
27 | <bridgehead>A programlisting, ID | ||
28 | "eltf-getting-repo-install-command"</bridgehead> | ||
29 | |||
30 | <para id="eltf-getting-repo-install-command"><programlisting>ELTF_PL_GET_REPO</programlisting></para> | ||
31 | |||
32 | <bridgehead>Several phrase elements, various IDs. Ensure EL_REL_VER is | ||
33 | correct also compared to the "previous" REL VER in pardoc-distro.xml | ||
34 | "prev_baseline".</bridgehead> | ||
35 | |||
36 | <para id="EneaLinux_REL_VER"><phrase>ELTF_EL_REL_VER</phrase></para> | ||
37 | |||
38 | <para id="Yocto_VER"><phrase>ELTF_YOCTO_VER</phrase></para> | ||
39 | |||
40 | <para id="Yocto_NAME"><phrase>ELTF_YOCTO_NAME</phrase></para> | ||
41 | |||
42 | <para id="ULINK_YOCTO_PROJECT_DOWNLOAD"><ulink | ||
43 | url="ELTF_YOCTO_PROJ_DOWNLOAD_URL">ELTF_YOCTO_PROJ_DOWNLOAD_TXTURL</ulink></para> | ||
44 | |||
45 | <para id="ULINK_ENEA_LINUX_URL"><ulink | ||
46 | url="ELTF_EL_DOWNLOAD_URL">ELTF_EL_DOWNLOAD_TXTURL</ulink></para> | ||
47 | |||
48 | <bridgehead>A programlisting, ID "eltf-repo-cloning-enea-linux". Use | ||
49 | $MACHINE/default.xml as parameter, where MACHINE is one of the target | ||
50 | directory names in the manifest.</bridgehead> | ||
51 | |||
52 | <para id="eltf-repo-cloning-enea-linux"><programlisting>ELTF_PL_CLONE_W_REPO</programlisting></para> | ||
53 | |||
54 | <bridgehead>A table with ONE row, only the row with ID | ||
55 | "eltf-eclipse-version-row" is included in the book. MANUALLY BOTH in the | ||
56 | template.xml and in the updated.xml, set condition hidden on the | ||
57 | <row>, if eclipse is not in the release.</bridgehead> | ||
58 | |||
59 | <informaltable> | ||
60 | <tgroup cols="1"> | ||
61 | <tbody> | ||
62 | <row id="eltf-eclipse-version-row"> | ||
63 | <entry>Eclipse version ELTF_ECLIPSE_VERSION plus command line | ||
64 | development tools are included in this Enea NFV Access release.</entry> | ||
65 | </row> | ||
66 | </tbody> | ||
67 | </tgroup> | ||
68 | </informaltable> | ||
69 | |||
70 | <bridgehead>Below is one big section with title "Supported Targets with | ||
71 | Parameters". The entire section is included completely in the book via ID | ||
72 | "eltf-target-tables-section" and shall be LAST in the template. The | ||
73 | template contains ONE target subsection. COPY/APPEND it, if multiple | ||
74 | targets exist in the release and optionally add rows with additional | ||
75 | target parameters in each target subsection table.</bridgehead> | ||
76 | </section> | ||
77 | |||
78 | <section id="eltf-target-tables-section"> | ||
79 | <title>Supported Targets with Parameters</title> | ||
80 | |||
81 | <para>The tables below describes the target(s) supported in this Enea | ||
82 | NFV Access release.</para> | ||
83 | |||
84 | <section id="eltf-target-table-ELTF_T_MANIFEST_DIR"> | ||
85 | <title>MACHINE ELTF_T_MANIFEST_DIR - Information</title> | ||
86 | |||
87 | <para><informaltable> | ||
88 | <tgroup cols="2"> | ||
89 | <colspec colwidth="6*" /> | ||
90 | |||
91 | <colspec colwidth="9*" /> | ||
92 | |||
93 | <tbody> | ||
94 | <row> | ||
95 | <entry>Target official name</entry> | ||
96 | |||
97 | <entry>ELTF_T_NAME</entry> | ||
98 | </row> | ||
99 | |||
100 | <row> | ||
101 | <entry>Architecture and Description</entry> | ||
102 | |||
103 | <entry>ELTF_T_ARC_DESC</entry> | ||
104 | </row> | ||
105 | |||
106 | <row> | ||
107 | <entry>Link to target datasheet</entry> | ||
108 | |||
109 | <entry>See <ulink | ||
110 | url="ELTF_T_DS_URL">ELTF_T_DS_TXTURL</ulink></entry> | ||
111 | </row> | ||
112 | |||
113 | <row> | ||
114 | <entry>Poky version</entry> | ||
115 | |||
116 | <entry>ELTF_T_POKY_VER</entry> | ||
117 | </row> | ||
118 | |||
119 | <row> | ||
120 | <entry>GCC version</entry> | ||
121 | |||
122 | <entry>ELTF_T_GCC_VER</entry> | ||
123 | </row> | ||
124 | |||
125 | <row> | ||
126 | <entry>Linux Kernel Version</entry> | ||
127 | |||
128 | <entry>ELTF_T_KERN_VER</entry> | ||
129 | </row> | ||
130 | |||
131 | <row> | ||
132 | <entry>Supported Drivers</entry> | ||
133 | |||
134 | <entry>ELTF_T_DRIVERS</entry> | ||
135 | </row> | ||
136 | |||
137 | <row> | ||
138 | <entry>Enea rpm folder for downloading RPM packages for this | ||
139 | target</entry> | ||
140 | |||
141 | <entry><ulink | ||
142 | url="ELTF_T_EL_RPM_URL">ELTF_T_EL_RPM_TXTURL</ulink></entry> | ||
143 | </row> | ||
144 | </tbody> | ||
145 | </tgroup> | ||
146 | </informaltable></para> | ||
147 | </section> | ||
148 | |||
149 | <!-- ELTFADD_MORE_TARGET_SECTIONS_BELOW_IF_NEEDED --> | ||
150 | </section> | ||
151 | </section> \ No newline at end of file | ||
diff --git a/doc/book-enea-linux-user-guide/doc/eltf_params_updated.xml b/doc/book-enea-linux-user-guide/doc/eltf_params_updated.xml new file mode 100644 index 0000000..b557335 --- /dev/null +++ b/doc/book-enea-linux-user-guide/doc/eltf_params_updated.xml | |||
@@ -0,0 +1,313 @@ | |||
1 | <?xml version="1.0" encoding="ISO-8859-1"?> | ||
2 | <!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" | ||
3 | "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> | ||
4 | <section id="eltf_created_params"> | ||
5 | <title>File with Parameters in the Book Auto-updated by ELFT</title> | ||
6 | |||
7 | <note> | ||
8 | <para>See the <emphasis | ||
9 | role="bold">eltf_params_updated_template_howto_use.txt</emphasis> text | ||
10 | file for description of how to create the final <emphasis | ||
11 | role="bold">eltf_params_updated.xml</emphasis> from this template and for | ||
12 | all <emphasis role="bold">REQUIREMENTS</emphasis>. Use the command | ||
13 | "<emphasis role="bold">make eltf</emphasis>" to extract a full list of all | ||
14 | ELTF variables, which always begins with ELTF_ and don't only rely on the | ||
15 | howto text file list! The plan is that ELTF will auto-update this when | ||
16 | needed.</para> | ||
17 | </note> | ||
18 | |||
19 | <section id="host_prereq"> | ||
20 | <title>Common Parameters</title> | ||
21 | |||
22 | <bridgehead>A programlisting, ID | ||
23 | "eltf-prereq-apt-get-commands-host"</bridgehead> | ||
24 | |||
25 | <para id="eltf-prereq-apt-get-commands-host"><programlisting># Host Ubuntu 16.04.2 LTS 64bit | ||
26 | sudo apt-get -y update | ||
27 | sudo apt-get -y install sed wget subversion git-core coreutils unzip texi2html \ | ||
28 | texinfo libsdl1.2-dev docbook-utils fop gawk python-pysqlite2 diffstat \ | ||
29 | make gcc build-essential xsltproc g++ desktop-file-utils chrpath \ | ||
30 | libgl1-mesa-dev libglu1-mesa-dev autoconf automake groff libtool xterm \ | ||
31 | libxml-parser-perl</programlisting></para> | ||
32 | |||
33 | <bridgehead>A programlisting, ID | ||
34 | "eltf-getting-repo-install-command"</bridgehead> | ||
35 | |||
36 | <para id="eltf-getting-repo-install-command"><programlisting>mkdir -p ~/bin | ||
37 | curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo | ||
38 | chmod a+x ~/bin/repo | ||
39 | export PATH=~/bin:$PATH</programlisting></para> | ||
40 | |||
41 | <bridgehead>Several phrase elements, various IDs. Ensure EL_REL_VER is | ||
42 | correct also compared to the "previous" REL VER in pardoc-distro.xml | ||
43 | "prev_baseline".</bridgehead> | ||
44 | |||
45 | <para id="EneaLinux_REL_VER"><phrase>8</phrase></para> | ||
46 | |||
47 | <para id="Yocto_VER"><phrase>2.5</phrase></para> | ||
48 | |||
49 | <para id="Yocto_NAME"><phrase>sumo</phrase></para> | ||
50 | |||
51 | <para id="ULINK_YOCTO_PROJECT_DOWNLOAD"><ulink | ||
52 | url="http://www.yoctoproject.org/downloads/core/pyro23">http://www.yoctoproject.org/downloads</ulink></para> | ||
53 | |||
54 | <para id="ULINK_ENEA_LINUX_URL"><ulink | ||
55 | url="http://linux.enea.com/EneaLinux8.0">http://linux.enea.com/EneaLinux8.0</ulink></para> | ||
56 | |||
57 | <bridgehead>A programlisting, ID "eltf-repo-cloning-enea-linux". Use | ||
58 | $MACHINE/default.xml as parameter, where MACHINE is one of the target | ||
59 | directory names in the manifest.</bridgehead> | ||
60 | |||
61 | <para id="eltf-repo-cloning-enea-linux"><programlisting>mkdir enea-linux | ||
62 | cd enea-linux | ||
63 | repo init -u git@git.enea.com:linux/manifests/el_manrtt.git \ | ||
64 | -b refs/tags/Enea_Linux_8.0 -m intel-corei7-64/default.xml | ||
65 | repo sync</programlisting></para> | ||
66 | |||
67 | <bridgehead>A table with ONE row, only the row with ID | ||
68 | "eltf-eclipse-version-row" is included in the book. MANUALLY in book, set | ||
69 | condition hidden if eclipse is not in the release.</bridgehead> | ||
70 | |||
71 | <informaltable> | ||
72 | <tgroup cols="1"> | ||
73 | <tbody> | ||
74 | <row id="eltf-eclipse-version-row"> | ||
75 | <entry>Eclipse version 4.7 (Oxygen) plus command line development | ||
76 | tools are included in this Enea Linux release.</entry> | ||
77 | </row> | ||
78 | </tbody> | ||
79 | </tgroup> | ||
80 | </informaltable> | ||
81 | |||
82 | <bridgehead>Below is one big section with title "Supported Targets with | ||
83 | Parameters". The entire section is included completely in the book via ID | ||
84 | "eltf-target-tables-section" and shall be LAST in the template. The | ||
85 | template contains ONE target subsection. COPY/APPEND it, if multiple | ||
86 | targets exist in the release and optionally add rows with additional | ||
87 | target parameters in each target subsection table.</bridgehead> | ||
88 | </section> | ||
89 | |||
90 | <section id="eltf-machine-tables-section"> | ||
91 | <title>Supported Targets with Parameters</title> | ||
92 | |||
93 | <para>The section(s) below describe the target(s) supported in this Enea | ||
94 | Linux release.</para> | ||
95 | |||
96 | <section id="eltf-target-tables-section"> | ||
97 | <title>MACHINE Information</title> | ||
98 | |||
99 | <para>The table(s) below describes the target(s) supported in this Enea | ||
100 | Linux release.</para> | ||
101 | |||
102 | <table> | ||
103 | <title>MACHINE Information Intel Xeon D</title> | ||
104 | |||
105 | <tgroup cols="2"> | ||
106 | <colspec align="center" /> | ||
107 | |||
108 | <thead> | ||
109 | <row> | ||
110 | <entry align="center">Component</entry> | ||
111 | |||
112 | <entry align="center">Description</entry> | ||
113 | </row> | ||
114 | </thead> | ||
115 | |||
116 | <tbody> | ||
117 | <row> | ||
118 | <entry align="left">Target official name</entry> | ||
119 | |||
120 | <entry>Intel Xeon D</entry> | ||
121 | </row> | ||
122 | |||
123 | <row> | ||
124 | <entry align="left">Architecture and Description</entry> | ||
125 | |||
126 | <entry>x86-64</entry> | ||
127 | </row> | ||
128 | |||
129 | <row> | ||
130 | <entry align="left">Link to target datasheet</entry> | ||
131 | |||
132 | <entry><ulink | ||
133 | url="https://www.intel.com/content/www/us/en/processors/xeon/xeon-d-1500-datasheet-vol-1.html">Intel | ||
134 | Xeon D datasheet</ulink></entry> | ||
135 | </row> | ||
136 | |||
137 | <row> | ||
138 | <entry align="left">Poky version</entry> | ||
139 | |||
140 | <entry>Git-commit-id: TBD</entry> | ||
141 | </row> | ||
142 | |||
143 | <row> | ||
144 | <entry align="left">GCC version</entry> | ||
145 | |||
146 | <entry>7.3</entry> | ||
147 | </row> | ||
148 | |||
149 | <row> | ||
150 | <entry align="left">Linux Kernel Version</entry> | ||
151 | |||
152 | <entry>4.14</entry> | ||
153 | </row> | ||
154 | |||
155 | <row condition="hidden"> | ||
156 | <entry align="left">Supported Drivers</entry> | ||
157 | |||
158 | <entry>Ethernet, RTC, UART</entry> | ||
159 | </row> | ||
160 | |||
161 | <row> | ||
162 | <entry>Enea deb folder for downloading DEB packages for this | ||
163 | target</entry> | ||
164 | |||
165 | <entry><ulink | ||
166 | url="http://linux.enea.com/EneaLinux8.0/deb">http://linux.enea.com/EneaLinux8.0/deb</ulink></entry> | ||
167 | </row> | ||
168 | </tbody> | ||
169 | </tgroup> | ||
170 | </table> | ||
171 | |||
172 | <table> | ||
173 | <title>MACHINE Information Intel Atom C3000</title> | ||
174 | |||
175 | <tgroup cols="2"> | ||
176 | <colspec align="center" /> | ||
177 | |||
178 | <thead> | ||
179 | <row> | ||
180 | <entry align="center">Component</entry> | ||
181 | |||
182 | <entry align="center">Description</entry> | ||
183 | </row> | ||
184 | </thead> | ||
185 | |||
186 | <tbody> | ||
187 | <row> | ||
188 | <entry align="left">Target official name</entry> | ||
189 | |||
190 | <entry>Intel Atom C3000</entry> | ||
191 | </row> | ||
192 | |||
193 | <row> | ||
194 | <entry align="left">Architecture and Description</entry> | ||
195 | |||
196 | <entry>x86-64</entry> | ||
197 | </row> | ||
198 | |||
199 | <row> | ||
200 | <entry align="left">Link to target datasheet</entry> | ||
201 | |||
202 | <entry><ulink | ||
203 | url="https://www.intel.com/content/www/us/en/products/docs/processors/atom/c-series/c3000-family-datasheet.html">Intel | ||
204 | Atom datasheet</ulink></entry> | ||
205 | </row> | ||
206 | |||
207 | <row> | ||
208 | <entry align="left">Poky version</entry> | ||
209 | |||
210 | <entry>Git-commit-id: TBD</entry> | ||
211 | </row> | ||
212 | |||
213 | <row> | ||
214 | <entry align="left">GCC version</entry> | ||
215 | |||
216 | <entry>7.3</entry> | ||
217 | </row> | ||
218 | |||
219 | <row> | ||
220 | <entry align="left">Linux Kernel Version</entry> | ||
221 | |||
222 | <entry>4.14</entry> | ||
223 | </row> | ||
224 | |||
225 | <row condition="hidden"> | ||
226 | <entry align="left">Supported Drivers</entry> | ||
227 | |||
228 | <entry>Ethernet, RTC, UART</entry> | ||
229 | </row> | ||
230 | |||
231 | <row> | ||
232 | <entry>Enea deb folder for downloading DEB packages for this | ||
233 | target</entry> | ||
234 | |||
235 | <entry><ulink | ||
236 | url="http://linux.enea.com/EneaLinux8.0/deb">http://linux.enea.com/EneaLinux8.0/deb</ulink></entry> | ||
237 | </row> | ||
238 | </tbody> | ||
239 | </tgroup> | ||
240 | </table> | ||
241 | |||
242 | <table> | ||
243 | <title>MACHINE Information Intel NUC Kaby Lake</title> | ||
244 | |||
245 | <tgroup cols="2"> | ||
246 | <colspec align="center" /> | ||
247 | |||
248 | <thead> | ||
249 | <row> | ||
250 | <entry align="center">Component</entry> | ||
251 | |||
252 | <entry align="center">Description</entry> | ||
253 | </row> | ||
254 | </thead> | ||
255 | |||
256 | <tbody> | ||
257 | <row> | ||
258 | <entry align="left">Target official name</entry> | ||
259 | |||
260 | <entry>Intel NUC Kaby Lake</entry> | ||
261 | </row> | ||
262 | |||
263 | <row> | ||
264 | <entry align="left">Architecture and Description</entry> | ||
265 | |||
266 | <entry>x86-64</entry> | ||
267 | </row> | ||
268 | |||
269 | <row> | ||
270 | <entry align="left">Link to target datasheet</entry> | ||
271 | |||
272 | <entry><ulink | ||
273 | url="https://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/nuc-kit-nuc7i5bnh-nuc7i5bnk-brief.pdf">Intel | ||
274 | NUC Kaby Lake datasheet</ulink></entry> | ||
275 | </row> | ||
276 | |||
277 | <row> | ||
278 | <entry align="left">Poky version</entry> | ||
279 | |||
280 | <entry>Git-commit-id: TBD</entry> | ||
281 | </row> | ||
282 | |||
283 | <row> | ||
284 | <entry align="left">GCC version</entry> | ||
285 | |||
286 | <entry>7.3</entry> | ||
287 | </row> | ||
288 | |||
289 | <row> | ||
290 | <entry align="left">Linux Kernel Version</entry> | ||
291 | |||
292 | <entry>4.14</entry> | ||
293 | </row> | ||
294 | |||
295 | <row condition="hidden"> | ||
296 | <entry align="left">Supported Drivers</entry> | ||
297 | |||
298 | <entry>Ethernet, RTC, UART</entry> | ||
299 | </row> | ||
300 | |||
301 | <row> | ||
302 | <entry>Enea deb folder for downloading DEB packages for this | ||
303 | target</entry> | ||
304 | |||
305 | <entry><ulink | ||
306 | url="http://linux.enea.com/EneaLinux8.0/deb">http://linux.enea.com/EneaLinux8.0/deb</ulink></entry> | ||
307 | </row> | ||
308 | </tbody> | ||
309 | </tgroup> | ||
310 | </table> | ||
311 | </section> | ||
312 | </section> | ||
313 | </section> | ||
diff --git a/doc/book-enea-linux-user-guide/doc/eltf_params_updated_template_how_to_use.txt b/doc/book-enea-linux-user-guide/doc/eltf_params_updated_template_how_to_use.txt new file mode 100644 index 0000000..62e5d02 --- /dev/null +++ b/doc/book-enea-linux-user-guide/doc/eltf_params_updated_template_how_to_use.txt | |||
@@ -0,0 +1,320 @@ | |||
1 | eltf_params_template_updated_howto_use.txt | ||
2 | |||
3 | This is a way to collect all parameters for an Enea NFV Access release | ||
4 | in one parameter file, easy to automatically update by ELTF regularly. | ||
5 | |||
6 | NOTE: Both the release info AND the open source books use parameters from | ||
7 | here, but the XML file is inside the release info book directory. | ||
8 | |||
9 | NOTE: The manifest_conf.mk, or overridden by the environment variable | ||
10 | MANIFESTHASH, contains the full tag (or hashvalue) for downloading | ||
11 | the manifest when the books are built. The list of target | ||
12 | directories are fetched from the manifest into the book. | ||
13 | The eltf_params_updates.xml can all the time contain | ||
14 | the final next complete tag e.g. refs/tags/EL6 or similar | ||
15 | in the ELTF_PL_CLONE_W_REPO parameter command lines. | ||
16 | |||
17 | The ordinary book XML files use xi:include statements to include elements | ||
18 | from this parameter file. The book XML files can thus be manually edited. | ||
19 | Before editing, you must run "make init". | ||
20 | Any other text in the template or updated.xml file, outside the parts that | ||
21 | are included in the book, are not used but still all must be correct | ||
22 | DocBook XML files. | ||
23 | |||
24 | ELTF work: | ||
25 | template => ELTF replaces ALL ELTF_xxx variables => updated XML file | ||
26 | => push to git only if changed | ||
27 | |||
28 | |||
29 | eltf_params_template.xml (in git) | ||
30 | File used by ELTF to autocreate/update the real parameter | ||
31 | file eltf_params_updated.xml. | ||
32 | |||
33 | eltf_params_updated.xml (in git) | ||
34 | Real parameter file where ELTF has replaced all ELTF_xx variables with | ||
35 | strings, in several cases with multiline strings. | ||
36 | No spaces or linefeed allowed in beginning or end of the variable values! | ||
37 | |||
38 | |||
39 | xi:include: Each parameter is xi:include'ed in various book files, using | ||
40 | the IDs existing in the parameter files. | ||
41 | In most cases the 1:st element inside an element with an ID is included | ||
42 | using a format like eltf-prereq-apt-get-commands-host/1. | ||
43 | In very few cases the element with the ID is included in the book, one | ||
44 | example is the target section which has an ID, but which contains | ||
45 | multiple subsections, one per target. | ||
46 | All IDs in a book must be unique. | ||
47 | |||
48 | DocBook XML: All XML files must be correct DocBook XML files. | ||
49 | |||
50 | Do NOT edit/save the real *updated.xml file with XMLmind to avoid changes | ||
51 | not done by ELTF. But it is OK to open the real file in XMLmind to | ||
52 | check that the format is correct. | ||
53 | |||
54 | ELTF should autocreate a temporary "real" file but only replace | ||
55 | and push the eltf_params_updated.xml if it is changed. | ||
56 | |||
57 | |||
58 | make eltf | ||
59 | This lists all ELTF_xxx variables and some rules how to treat them | ||
60 | |||
61 | DocBook Format: All elements - rules: | ||
62 | Several strict generic XML rules apply for all strings: | ||
63 | 1. No TABs allowed or any other control chr than "linefeed" | ||
64 | 2. Only 7-bit ASCII | ||
65 | 3. Any < > & must be converted to < > and & | ||
66 | Similar for any other non-7-bit-ASCII but avoid those! | ||
67 | 4. No leading spaces or linefeeds when replacing the ELTF_* variable | ||
68 | 5. No trailing spaces or linefeeds when replacing the ELTF_* variable | ||
69 | 6. Note: Keep existing spaces before/efter ELTF_* in a few cases. | ||
70 | |||
71 | DocBook Format: <programlisting> - rules: ELTF*PL* variables | ||
72 | Several strict rules apply for the multiline string in programlisting | ||
73 | in addition to the general XML rules above: | ||
74 | 7. Max line length < 80 char | ||
75 | 8. Use backslash (\) to break longer lines | ||
76 | 9. Use spaces (e.g. 4) to indent continuation lines in programlistings | ||
77 | 10. No trailing spaces on any line | ||
78 | 11. No spaces or linefeed immediately after leading <programlisting> | ||
79 | 12. No spaces or linefeed before trailing </programlisting> | ||
80 | |||
81 | DocBook Format: <ulink> - rules: ELTF_*URL* variables | ||
82 | 13. ELTF_*URL and corresponding ELTF_*TXTURL shall be identical strings | ||
83 | 14. Only if the URL is extremely long, the TXTURL can be a separate string | ||
84 | |||
85 | Each target has one section with target parameters: | ||
86 | <section id="eltf-target-table-ELTF_T_MANIFEST_DIR"> | ||
87 | <title>MACHINE ELTF_T_MANIFEST_DIR - Information</title> | ||
88 | ..... with many ELTF_ variables .... | ||
89 | </section> | ||
90 | |||
91 | 15. If there is only one target. ELTF just replaces ELTF parameters | ||
92 | |||
93 | 16. It there are multiple targets. ELTF copies the section and appends the | ||
94 | section the required number of times. | ||
95 | Each section ID will become unique: eltf-target-table-ELTF_T_MANIFEST_DIR | ||
96 | Each section title will become unique | ||
97 | |||
98 | Tables with target parameters in each target section: | ||
99 | 17. It is possible for ELTF to append more rows with one parameter each | ||
100 | to these tables, because the entire tables are included in the book | ||
101 | |||
102 | Special - NOT YET READY DEFINED how to handle the optionally included | ||
103 | Eclipse and its version, but this is a first suggestion: | ||
104 | 18. Just now ELTF can define ELFT_ECLIPSE_VERSION as a full string | ||
105 | with both version number and name, | ||
106 | 19. MANUALLY if Eclipse is NOT included in the release, | ||
107 | the release manager should manually set condition="hidden" on | ||
108 | the entire section in the book XML about Eclipse | ||
109 | |||
110 | |||
111 | |||
112 | BELOW WE TRY TO EXPLAIN EACH ELTF_* variable, but always check with make eltf | ||
113 | if there are more new variables, missing in this description file. | ||
114 | |||
115 | _____________________________________________________________________________ | ||
116 | ELTF_PL_HOST_PREREQ Multiline list of host prerequisites, e.g. commands | ||
117 | like sudo apt-get install xxxx or similar. | ||
118 | First line = comment with the complete host name! | ||
119 | It is possible to include multiple hosts by just | ||
120 | adding an empty line, comment with host name, etc. | ||
121 | xi:include eltf-prereq-apt-get-commands-host/1 | ||
122 | This is a <programlisting>...</programlisting> | ||
123 | Example: | ||
124 | # Host Ubuntu 14.04.5 LTS 64bit | ||
125 | sudo apt-get update | ||
126 | sudo apt-get install sed wget subversion git-core coreutils unzip texi2html \ | ||
127 | texinfo libsdl1.2-dev docbook-utils fop gawk python-pysqlite2 diffstat \ | ||
128 | make gcc build-essential xsltproc g++ desktop-file-utils chrpath \ | ||
129 | libgl1-mesa-dev libglu1-mesa-dev autoconf automake groff libtool xterm \ | ||
130 | libxml-parser-perl | ||
131 | |||
132 | _____________________________________________________________________________ | ||
133 | ELTF_PL_GET_REPO Multiline commands to download the repo tool | ||
134 | xi:include eltf-getting-repo-install-command/1 | ||
135 | This is a <programlisting>...</programlisting> | ||
136 | Example: | ||
137 | mkdir -p ~/bin | ||
138 | curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo | ||
139 | chmod a+x ~/bin/repo | ||
140 | export PATH=~/bin:$PATH | ||
141 | |||
142 | _____________________________________________________________________________ | ||
143 | ELTF_EL_REL_VER General parameter string: The version of this Enea | ||
144 | NFV Access release. Major version and optional .Minor | ||
145 | Typically created from MAJOR and MINOR in enea.conf | ||
146 | MINOR in enea.conf is empty or contains a dot+minor | ||
147 | xi_include EneaLinux_REL_VER/1 | ||
148 | This is a <phrase>X.x</phrase> used in many places. | ||
149 | Examples: | ||
150 | 6 | ||
151 | or | ||
152 | 6.1 | ||
153 | |||
154 | _____________________________________________________________________________ | ||
155 | ELTF_YOCTO_VER General parameter string: Yocto version, created | ||
156 | from DISTRO in poky.ent | ||
157 | xi:include Yocto_VER/1 | ||
158 | This is a <phrase>X.x</phrase> used in many places. | ||
159 | Example: | ||
160 | 2.1 | ||
161 | |||
162 | _____________________________________________________________________________ | ||
163 | ELTF_YOCTO_NAME General parameter string: Yocto name (branch), created | ||
164 | from DISTRO_NAME_NO_CAP in poky.ent | ||
165 | xi:include Yocto_NAME/1 | ||
166 | This is a <phrase>X.x</phrase> used in many places. | ||
167 | Example: | ||
168 | krogoth | ||
169 | |||
170 | _____________________________________________________________________________ | ||
171 | ELTF_YOCTO_PROJ_DOWNLOAD_TXTURL General parameters. These two are IDENTICAL | ||
172 | ELTF_YOCTO_PROJ_DOWNLOAD_URL strings with correct Yocto version string | ||
173 | at the end, typically without "dot". | ||
174 | xi:include ULINK_YOCTO_PROJECT_DOWNLOAD/1 | ||
175 | This is an <ulink url="...">...</ulink> | ||
176 | Example: | ||
177 | http://www.yoctoproject.org/downloads/core/krogoth/21 | ||
178 | |||
179 | _____________________________________________________________________________ | ||
180 | ELTF_EL_DOWNLOAD_TXTURL General parameters. These two are IDENTICAL strings | ||
181 | ELTF_EL_DOWNLOAD_URL and shall be the http:/..... address where | ||
182 | Enea NFV Access can be downloaded | ||
183 | Often containing same version as in ELTF_EL_REL_VER | ||
184 | xi:include ULINK_ENEA_LINUX_URL/1 | ||
185 | This is an <ulink url="...">...</ulink> | ||
186 | Example: | ||
187 | http://linux.enea.com/6 | ||
188 | |||
189 | _____________________________________________________________________________ | ||
190 | ELTF_PL_CLONE_W_REPO Multiline commands to run repo to clone everything. | ||
191 | Use the variable $MACHINE/default.xml (the text in | ||
192 | the book will list the avaiable values of MACHINE, | ||
193 | taken from the manifest repository) | ||
194 | xi:include eltf-repo-cloning-enea-linux/1 | ||
195 | This is a <programlisting>...</programlisting> | ||
196 | Example: | ||
197 | mkdir enea-linux | ||
198 | cd enea-linux | ||
199 | repo init -u git@git.enea.com:linux/manifests/el_manifests-virtualization.git \ | ||
200 | -b refs/tags/EL6 -m $MACHINE/default.xml | ||
201 | repo sync | ||
202 | |||
203 | _____________________________________________________________________________ | ||
204 | ELTF_ECLIPSE_VERSION Optional general parameter string. | ||
205 | NOT YET READY DEFINED | ||
206 | Just now a release manage must manually set | ||
207 | condition="hidden" on the Eclipse section, | ||
208 | if Eclipse is not included in the release. | ||
209 | ELTF just replaces ELTF_ECLIPSE_VERSION with a full | ||
210 | string with "X.Y (name)" | ||
211 | It includes the ID and can only be ONCE in the book. | ||
212 | xi:include eltf-eclipse-version-row | ||
213 | Example. | ||
214 | 4.5 (Mars) | ||
215 | |||
216 | |||
217 | _____________________________________________________________________________ | ||
218 | ELTF_T_* All these are in each target (MACHINE) and ELTF | ||
219 | must separately replace them with strings for | ||
220 | each target | ||
221 | NOTE: All (except the MANIFEST_DIR) are in rows | ||
222 | in a table and ELTF can select to append | ||
223 | more parameters by adding more rows | ||
224 | |||
225 | _____________________________________________________________________________ | ||
226 | ELTF_T_MANIFEST_DIR This happens to be in two places. Must be exactly | ||
227 | ELTF_T_MANIFEST_DIR the directory name in the manifest, e.g. same | ||
228 | as the MACHINE names in $MACHINE/default.xml. | ||
229 | In book: a) Part of section ID | ||
230 | b) Part of section title | ||
231 | Examples: | ||
232 | p2041rgb | ||
233 | or | ||
234 | ls1021aiot | ||
235 | or | ||
236 | qemuarm | ||
237 | |||
238 | _____________________________________________________________________________ | ||
239 | ELTF_T_NAME Target specific: "Target Official Name" | ||
240 | NOT same as the target directory name in most cases. | ||
241 | In book: An <entry> element in a row | ||
242 | Examples: | ||
243 | P2041RGB | ||
244 | or | ||
245 | LS1021a-IoT | ||
246 | or | ||
247 | qemuarm | ||
248 | |||
249 | _____________________________________________________________________________ | ||
250 | ELTF_T_ARC_DESC Target specific: "Architecture and Description" | ||
251 | It can be a short identification string or | ||
252 | it can be a longer descriptive sentence. | ||
253 | In book: An <entry> element in a row | ||
254 | Examples: | ||
255 | Power, e500mc | ||
256 | or | ||
257 | ARM Cortex-A7 | ||
258 | |||
259 | _____________________________________________________________________________ | ||
260 | ELTF_T_DS_TXTURL Target specific: "Link to target datasheet. These | ||
261 | ELTF_T_DS_URL two usually are IDENTICAL strings with correct | ||
262 | hyperlink to the target's official datasheet. | ||
263 | In book: an <ulink url="...">...</ulink> | ||
264 | Only if the link is VERY LONG, the text part shall | ||
265 | instead be a descriptive string (see 2:nd example). | ||
266 | NOTE: Also here no spaces or line-feeds! | ||
267 | Examples: | ||
268 | url="http://wiki.qemu.org">http://wiki.qemu.org | ||
269 | or | ||
270 | url="http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/qoriq-arm-processors/qoriq-ls1021a-iot-gateway-reference-design:LS1021A-IoT">link to NXP's datasheet | ||
271 | |||
272 | _____________________________________________________________________________ | ||
273 | ELTF_T_POKY_VER Target specific: "Poky version" created either | ||
274 | from POKYVERSION in poky.ent | ||
275 | or using a hashvalue with a leading string, in | ||
276 | which case it may be different per target. | ||
277 | In book: An <entry> in a row | ||
278 | Examples: | ||
279 | 15.0.0 | ||
280 | or | ||
281 | Git commit id: 75ca53211488a3e268037a44ee2a7ac5c7181bd2 | ||
282 | |||
283 | _____________________________________________________________________________ | ||
284 | ELTF_T_GCC_VER Target specific: "GCC Version". Should be in poky | ||
285 | but not easy to find among various parameters. | ||
286 | ELTF would extract it from build logs building SDK | ||
287 | and it is possibly different per target. | ||
288 | In book: An <entry> in a row | ||
289 | Example: | ||
290 | 5.3 | ||
291 | |||
292 | _____________________________________________________________________________ | ||
293 | ELTF_T_KERN_VER Target specific: "Linux Kernel Version". Often | ||
294 | different per target. | ||
295 | In book: An <entry> in a row | ||
296 | Example: | ||
297 | 3.12 | ||
298 | |||
299 | _____________________________________________________________________________ | ||
300 | ELTF_T_DRIVERS Target specific: "Supported Drivers". This is a | ||
301 | comma-separated list of driver names. | ||
302 | ELTF should create the list in same order for each | ||
303 | target, e.g. alphabetic migth be OK. | ||
304 | In book: An <entry> in a row | ||
305 | Example: | ||
306 | Ethernet, I2C, SPI, PCI, USB, SD/SDHC/SDXC | ||
307 | |||
308 | |||
309 | _____________________________________________________________________________ | ||
310 | ELTF_T_EL_RPM_TXTURL Target specific: "Enea rpm folder for downloading | ||
311 | ELTF_T_EL_RPM_URL RPM packages for this target". These two are | ||
312 | INDENTICAL strings with hyperlink to the web site | ||
313 | at Enea where the customer can download RPMs | ||
314 | Note: Often the ELFT_EL_REL_VER value and | ||
315 | the ELTF_T_MANIFEST_DIR are used in the link. | ||
316 | In book: an <ulink url="...">...</ulink> | ||
317 | Example: | ||
318 | url="https://linux.enea.com/6/ls1021aiot/rpm">https://linux.enea.com/6/ls1021aiot/rpm | ||
319 | |||
320 | _____________________________________________________________________________ | ||
diff --git a/doc/book-enea-linux-user-guide/doc/getting_enea_linux.xml b/doc/book-enea-linux-user-guide/doc/getting_enea_linux.xml new file mode 100644 index 0000000..e58726e --- /dev/null +++ b/doc/book-enea-linux-user-guide/doc/getting_enea_linux.xml | |||
@@ -0,0 +1,145 @@ | |||
1 | <?xml version="1.0" encoding="ISO-8859-1"?> | ||
2 | <chapter id="getting_el"> | ||
3 | <title>Getting Enea Linux</title> | ||
4 | |||
5 | <para>Enea Linux is available as both pre-built binary images and source | ||
6 | code. Both serve a specific purpose and each have their advantages. However, | ||
7 | using the pre-built binary images allows for getting up and running faster. | ||
8 | Please refer to the sections below for details on how to get Enea Linux as | ||
9 | pre-built binary images or source code.</para> | ||
10 | |||
11 | <section id="get_prebuilt_bin"> | ||
12 | <title>Getting Pre-Built Binaries</title> | ||
13 | |||
14 | <para>Enea Linux pre-built binaries are available for download on <ulink | ||
15 | url="https://portal.enea.com/login/?redirect_to=https%3A%2F%2Fportal.enea.com%2F">Enea | ||
16 | Download Portal</ulink>. Log in using the credentials provided. Using the | ||
17 | menu, browse to the <emphasis role="bold">Linux</emphasis> section. You | ||
18 | will now have access to the <emphasis role="bold">Files</emphasis> section | ||
19 | and the <emphasis role="bold">Online Documentation</emphasis> | ||
20 | section.</para> | ||
21 | |||
22 | <para>The Files section lists each Enea Linux distribution, one for each | ||
23 | version and profile, as a separate download package. Clicking on the name | ||
24 | of the distribution will open a new page, which presents further details | ||
25 | about the content of the release and a list of downloadable archives, one | ||
26 | for each hardware target included in the release. Each archive provides | ||
27 | the following content:</para> | ||
28 | |||
29 | <itemizedlist> | ||
30 | <listitem> | ||
31 | <para><emphasis>images</emphasis> directory - this directory includes | ||
32 | the binary image files needed to boot the target with Enea Linux. This | ||
33 | includes the kernel, the root file system, device tree, etc.</para> | ||
34 | </listitem> | ||
35 | |||
36 | <listitem> | ||
37 | <para><emphasis>sdk</emphasis> directory - this directory includes the | ||
38 | installer for the SDK.</para> | ||
39 | </listitem> | ||
40 | |||
41 | <listitem> | ||
42 | <para><emphasis>deb</emphasis> directory - this directory contains all | ||
43 | the packages included in the distribution in deb format, which can be | ||
44 | installed using the package manager.</para> | ||
45 | </listitem> | ||
46 | </itemizedlist> | ||
47 | |||
48 | <para>For faster downloads, each archive is mirrored in several places, | ||
49 | geographically. Choose the archive in the region closest to you.</para> | ||
50 | |||
51 | <para>The Documentation section lists all the documents delivered with the | ||
52 | release.</para> | ||
53 | </section> | ||
54 | |||
55 | <section id="getting_sources"> | ||
56 | <title>Getting the Sources</title> | ||
57 | |||
58 | <para>Enea Linux sources are available for cloning from a set of Git | ||
59 | repositories on <ulink url="https://git.enea.com">git.enea.com</ulink>. | ||
60 | Since Enea Linux requires multiple repositories, Google Repo tool is used | ||
61 | in order to manage configurations and make the cloning step simpler. | ||
62 | Google Repo tool uses files, known as manifests, which store a list of | ||
63 | tuples (repository URL, version). The Repo tool is then used to traverse | ||
64 | the list of tuples in the manifest file and clone the specified versions | ||
65 | of each repository. See <ulink | ||
66 | url="https://code.google.com/p/git-repo/">https://code.google.com/p/git-repo/</ulink> | ||
67 | for more info.</para> | ||
68 | |||
69 | <section id="get_sourcecode_stepone"> | ||
70 | <title>Get access to git.enea.com</title> | ||
71 | |||
72 | <para>In order to get access to git.enea.com, a ssh key is required for | ||
73 | Git authentication. If you don't already have such a key, follow the | ||
74 | steps below to generate one:</para> | ||
75 | |||
76 | <orderedlist> | ||
77 | <listitem> | ||
78 | <para>Generate the ssh key pair:</para> | ||
79 | |||
80 | <programlisting>$ ssh-keygen -t rsa</programlisting> | ||
81 | |||
82 | <para>When asked for a password, just press Enter. This will create | ||
83 | two files in the .ssh directory in your home directory.</para> | ||
84 | |||
85 | <programlisting>id_rsa | ||
86 | id_rsa.pub</programlisting> | ||
87 | </listitem> | ||
88 | |||
89 | <listitem> | ||
90 | <para>Copy the public key into an authorized_keys file:</para> | ||
91 | |||
92 | <programlisting>$ cat id_rsa.pub >> authorized_keys</programlisting> | ||
93 | </listitem> | ||
94 | </orderedlist> | ||
95 | |||
96 | <para>Once these steps are done and you have a valid ssh key pair, send | ||
97 | the public key, <emphasis>id_rsa.pub</emphasis>, via email to | ||
98 | <email>mailto:git_support@list.enea.se</email> in order to get access to | ||
99 | <ulink url="https://git.enea.com">git.enea.com</ulink>.</para> | ||
100 | </section> | ||
101 | |||
102 | <section id="get_sourcecode_steptwo"> | ||
103 | <title>Get Sources</title> | ||
104 | |||
105 | <para>To use the Repo tool to download the sources for Enea Linux, do | ||
106 | the following:</para> | ||
107 | |||
108 | <orderedlist> | ||
109 | <listitem> | ||
110 | <para>Make sure that the repo tool is installed. If not, do the | ||
111 | following: <remark>Below is include of ID | ||
112 | "eltf-getting-repo-install-command" from | ||
113 | eltf_params_updated.xml</remark></para> | ||
114 | |||
115 | <xi:include href="../../book-enea-linux-release-info/doc/eltf_params_updated.xml" | ||
116 | xmlns:xi="http://www.w3.org/2001/XInclude" | ||
117 | xpointer="element(eltf-getting-repo-install-command/1)" /> | ||
118 | </listitem> | ||
119 | |||
120 | <listitem> | ||
121 | <para>Then use the repo command below:</para> | ||
122 | |||
123 | <xi:include href="../../book-enea-linux-release-info/doc/eltf_params_updated.xml" | ||
124 | xmlns:xi="http://www.w3.org/2001/XInclude" | ||
125 | xpointer="element(eltf-repo-cloning-enea-linux/1)" /> | ||
126 | </listitem> | ||
127 | </orderedlist> | ||
128 | |||
129 | <para>Once the source code is downloaded, the current directory will | ||
130 | contain a <filename>README</filename> file with instructions on how to | ||
131 | build the distro and boot the machine you choose. .</para> | ||
132 | |||
133 | <para>It's not necessary to explicitly clone the manifest repository | ||
134 | since that is done automatically by the repo tool. To see the current | ||
135 | manifest, use the following command:</para> | ||
136 | |||
137 | <programlisting>$ repo manifest</programlisting> | ||
138 | |||
139 | <remark>The UG should be updated with instructions on how to add | ||
140 | customizations. That section should also contain more info about the | ||
141 | manifest: the manifest templates, using a branch instead of the tag EL6, | ||
142 | etc. When this is done a reference from here should be added.</remark> | ||
143 | </section> | ||
144 | </section> | ||
145 | </chapter> | ||
diff --git a/doc/book-enea-linux-user-guide/doc/getting_started.xml b/doc/book-enea-linux-user-guide/doc/getting_started.xml new file mode 100644 index 0000000..61ffea5 --- /dev/null +++ b/doc/book-enea-linux-user-guide/doc/getting_started.xml | |||
@@ -0,0 +1,108 @@ | |||
1 | <?xml version="1.0" encoding="ISO-8859-1"?> | ||
2 | <chapter id="getting_started"> | ||
3 | <title>Getting Started</title> | ||
4 | |||
5 | <section id="use_enealinux"> | ||
6 | <title>Using Enea Linux</title> | ||
7 | |||
8 | <para></para> | ||
9 | |||
10 | <section id="sys_req"> | ||
11 | <title>System Requirements</title> | ||
12 | |||
13 | <para></para> | ||
14 | </section> | ||
15 | |||
16 | <section id="install_el"> | ||
17 | <title>Installing Enea Linux</title> | ||
18 | |||
19 | <para>(downloading prebuit artifacts, brief description of files | ||
20 | etc.)</para> | ||
21 | </section> | ||
22 | |||
23 | <section id="install_el_sdk"> | ||
24 | <title>Installing Enea Linux SDK</title> | ||
25 | |||
26 | <para></para> | ||
27 | </section> | ||
28 | |||
29 | <section id="boot_images"> | ||
30 | <title>Booting the images (RAM, SD Card)</title> | ||
31 | |||
32 | <para></para> | ||
33 | </section> | ||
34 | |||
35 | <section id="pkg_mg"> | ||
36 | <title>Package Management</title> | ||
37 | |||
38 | <para></para> | ||
39 | </section> | ||
40 | </section> | ||
41 | |||
42 | <section id="build_enealinux"> | ||
43 | <title>Building Enea Linux</title> | ||
44 | |||
45 | <para></para> | ||
46 | |||
47 | <section id="build_sys_req"> | ||
48 | <title>System Requirements</title> | ||
49 | |||
50 | <para>(covers shell configurations, required host packages, etc.)</para> | ||
51 | </section> | ||
52 | |||
53 | <section id="getting_sources"> | ||
54 | <title>Getting Enea Linux sources</title> | ||
55 | |||
56 | <para>(covers repo tool basic info, instructions how to clone repos, | ||
57 | etc.)</para> | ||
58 | </section> | ||
59 | |||
60 | <section id="setup_buildenv"> | ||
61 | <title>Set up the build environment</title> | ||
62 | |||
63 | <para></para> | ||
64 | </section> | ||
65 | |||
66 | <section id="build_elimages_sources"> | ||
67 | <title>Build Enea Linux Images from sources</title> | ||
68 | |||
69 | <para></para> | ||
70 | </section> | ||
71 | |||
72 | <section id="build_crosscomp_tc"> | ||
73 | <title>Build Cross-Compilation Toolchain</title> | ||
74 | |||
75 | <para></para> | ||
76 | </section> | ||
77 | </section> | ||
78 | |||
79 | <section id="custom_enealinux"> | ||
80 | <title>Customizing Enea Linux</title> | ||
81 | |||
82 | <para></para> | ||
83 | |||
84 | <section id="layers_adaptations"> | ||
85 | <title>Layers and Adaptations</title> | ||
86 | |||
87 | <para>(covers building with a new layer etc.)</para> | ||
88 | </section> | ||
89 | |||
90 | <section id="add_recipe"> | ||
91 | <title>Adding a Recipe</title> | ||
92 | |||
93 | <para></para> | ||
94 | </section> | ||
95 | |||
96 | <section id="config_pkg_recipes"> | ||
97 | <title>Configuring Packages via Recipes</title> | ||
98 | |||
99 | <para></para> | ||
100 | </section> | ||
101 | |||
102 | <section id="build_com_licenses"> | ||
103 | <title>Building with Commercial Licenses</title> | ||
104 | |||
105 | <para></para> | ||
106 | </section> | ||
107 | </section> | ||
108 | </chapter> \ No newline at end of file | ||
diff --git a/doc/book-enea-linux-user-guide/doc/images/install_new_sw.png b/doc/book-enea-linux-user-guide/doc/images/install_new_sw.png new file mode 100644 index 0000000..fe1ccd9 --- /dev/null +++ b/doc/book-enea-linux-user-guide/doc/images/install_new_sw.png | |||
Binary files differ | |||
diff --git a/doc/book-enea-linux-user-guide/doc/images/install_new_sw.svg b/doc/book-enea-linux-user-guide/doc/images/install_new_sw.svg new file mode 100644 index 0000000..d73f03d --- /dev/null +++ b/doc/book-enea-linux-user-guide/doc/images/install_new_sw.svg | |||
@@ -0,0 +1,888 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
3 | |||
4 | <svg | ||
5 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
6 | xmlns:cc="http://creativecommons.org/ns#" | ||
7 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
8 | xmlns:svg="http://www.w3.org/2000/svg" | ||
9 | xmlns="http://www.w3.org/2000/svg" | ||
10 | xmlns:xlink="http://www.w3.org/1999/xlink" | ||
11 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
12 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
13 | id="svg2985" | ||
14 | version="1.1" | ||
15 | inkscape:version="0.48.4 r9939" | ||
16 | width="635" | ||
17 | height="536" | ||
18 | sodipodi:docname="install_new_sw.png"> | ||
19 | <metadata | ||
20 | id="metadata2991"> | ||
21 | <rdf:RDF> | ||
22 | <cc:Work | ||
23 | rdf:about=""> | ||
24 | <dc:format>image/svg+xml</dc:format> | ||
25 | <dc:type | ||
26 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||
27 | <dc:title></dc:title> | ||
28 | </cc:Work> | ||
29 | </rdf:RDF> | ||
30 | </metadata> | ||
31 | <defs | ||
32 | id="defs2989" /> | ||
33 | <sodipodi:namedview | ||
34 | pagecolor="#ffffff" | ||
35 | bordercolor="#666666" | ||
36 | borderopacity="1" | ||
37 | objecttolerance="10" | ||
38 | gridtolerance="10" | ||
39 | guidetolerance="10" | ||
40 | inkscape:pageopacity="0" | ||
41 | inkscape:pageshadow="2" | ||
42 | inkscape:window-width="1618" | ||
43 | inkscape:window-height="1027" | ||
44 | id="namedview2987" | ||
45 | showgrid="false" | ||
46 | inkscape:zoom="1.5671642" | ||
47 | inkscape:cx="317.5" | ||
48 | inkscape:cy="268" | ||
49 | inkscape:window-x="1358" | ||
50 | inkscape:window-y="-8" | ||
51 | inkscape:window-maximized="1" | ||
52 | inkscape:current-layer="svg2985" | ||
53 | showborder="false" | ||
54 | inkscape:showpageshadow="false" | ||
55 | fit-margin-top="0" | ||
56 | fit-margin-left="0" | ||
57 | fit-margin-right="0" | ||
58 | fit-margin-bottom="0" /> | ||
59 | <image | ||
60 | width="635" | ||
61 | height="536" | ||
62 | xlink:href="data:image/png;base64,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 | ||
884 | " | ||
885 | id="image2993" | ||
886 | x="0" | ||
887 | y="0" /> | ||
888 | </svg> | ||
diff --git a/doc/book-enea-linux-user-guide/doc/introduction.xml b/doc/book-enea-linux-user-guide/doc/introduction.xml new file mode 100644 index 0000000..ccbdb0a --- /dev/null +++ b/doc/book-enea-linux-user-guide/doc/introduction.xml | |||
@@ -0,0 +1,55 @@ | |||
1 | <?xml version="1.0" encoding="ISO-8859-1"?> | ||
2 | <chapter id="intro"> | ||
3 | <title>Introduction</title> | ||
4 | |||
5 | <para>Welcome to Enea<trademark class="registered"></trademark> Linux</para> | ||
6 | |||
7 | <para>Enea<trademark class="registered"></trademark> Linux is based on the | ||
8 | open source configuration system Yocto which is becoming the de facto | ||
9 | standard for building and configuring embedded Linux. Yocto development is | ||
10 | coordinated by the Yocto Project which was initiated by the Linux | ||
11 | Foundation.</para> | ||
12 | |||
13 | <para>The Yocto-based development environment of Enea Linux allows you to | ||
14 | build embedded Linux kernels and tool chains on a Linux host. It aids you in | ||
15 | customizing embedded Linux kernels for a specific hardware architecture, and | ||
16 | in building and troubleshooting embedded Linux applications on targets or | ||
17 | emulated in QEMU.</para> | ||
18 | |||
19 | <para>Enea Linux also provides verified and easily installed board support | ||
20 | packages (BSP) for a number of hardware architectures. Each BSP includes a | ||
21 | Linux kernel and a root filesystem (rootfs), plus a number of packages that | ||
22 | can be extended on request.</para> | ||
23 | |||
24 | <para>Providing true open source Linux with customer interests in mind, is | ||
25 | the cornerstone for Enea when supplying Enea Linux. We provide:</para> | ||
26 | |||
27 | <itemizedlist> | ||
28 | <listitem> | ||
29 | <para>A Yocto compatible environment, familiar for those who have used | ||
30 | Yocto from any other distribution.</para> | ||
31 | </listitem> | ||
32 | |||
33 | <listitem> | ||
34 | <para>The Enea Linux environment is fully independent from hardware | ||
35 | vendor leverage and does not push for a particular hardware | ||
36 | architecture.</para> | ||
37 | </listitem> | ||
38 | |||
39 | <listitem> | ||
40 | <para>Enea has initiated and contributes the ptest package test | ||
41 | framework to the Yocto Project. Enea also uses ptest to verify the | ||
42 | packages on target.</para> | ||
43 | </listitem> | ||
44 | </itemizedlist> | ||
45 | |||
46 | <para>By using, testing Yocto and sharing Linux patches with upstream | ||
47 | projects, Enea assists the open source community in providing mature | ||
48 | software in less time. As an Enea Linux user, you are welcome to contribute | ||
49 | to the global development of Linux by propagating your Linux patches through | ||
50 | Enea.</para> | ||
51 | |||
52 | <para>Enea can also assist a customer by analyzing source code and producing | ||
53 | valid open source reports, as required by the community when open source | ||
54 | components are used.</para> | ||
55 | </chapter> \ No newline at end of file | ||
diff --git a/doc/book-enea-linux-user-guide/doc/preface.xml b/doc/book-enea-linux-user-guide/doc/preface.xml new file mode 100644 index 0000000..1752ff5 --- /dev/null +++ b/doc/book-enea-linux-user-guide/doc/preface.xml | |||
@@ -0,0 +1,157 @@ | |||
1 | <?xml version="1.0" encoding="ISO-8859-1"?> | ||
2 | <chapter id="preface"> | ||
3 | <title>Preface</title> | ||
4 | |||
5 | <section id="guide_purpose"> | ||
6 | <title>The Purpose of this Guide</title> | ||
7 | |||
8 | <para>This guide is intended for all Enea Linux developers who want to | ||
9 | configure and build customized Linux kernel images for embedded system | ||
10 | targets, but also for developers who want to build and run applications in | ||
11 | Enea Linux.</para> | ||
12 | |||
13 | <note> | ||
14 | <para>Always read the README files and the Release Information before | ||
15 | this User's Guide.</para> | ||
16 | </note> | ||
17 | |||
18 | <para>The recommended order of operations for developers are:</para> | ||
19 | |||
20 | <orderedlist> | ||
21 | <listitem> | ||
22 | <para>Receive information from Enea and read the initial documentation | ||
23 | online.</para> | ||
24 | </listitem> | ||
25 | |||
26 | <listitem> | ||
27 | <para>Update the development host with the needed packages, then | ||
28 | download and install Enea Linux.</para> | ||
29 | </listitem> | ||
30 | |||
31 | <listitem> | ||
32 | <para>Download and install the Cross-Compilation Toolchain.</para> | ||
33 | </listitem> | ||
34 | |||
35 | <listitem> | ||
36 | <para>Start developing your own Enea Linux applications or building | ||
37 | your own Enea Linux images.</para> | ||
38 | </listitem> | ||
39 | </orderedlist> | ||
40 | |||
41 | <para>It is assumed that the reader of this User's Guide has a deep | ||
42 | knowledge about Linux, how to configure the Linux kernel, and knows how to | ||
43 | use the Yocto build system. The variety of information provided in this | ||
44 | guide can serve as a quick start introduction to the standards and best | ||
45 | practices we share with the Linux community. In this spirit, Enea provides | ||
46 | <ulink url="http://www.enea.com/training">training courses</ulink>.</para> | ||
47 | |||
48 | <para>With this Enea Linux release you have a verified and easy to install | ||
49 | board support package for a number of supported hardware types. The board | ||
50 | support package includes a set of prebuilt utilities, accessible and setup | ||
51 | to rapidly reach your objectives as a developer. In this regard, the | ||
52 | support package contains a Linux kernel and root file system, a Software | ||
53 | Development Kit (SDK) which includes the cross-compilation toolchain, a | ||
54 | variety of tools and scripts for development and customization, and if | ||
55 | opted for, a user-friendly Eclipse version with an integrated development | ||
56 | environment.</para> | ||
57 | |||
58 | <para>The documentation for Enea Linux consists of generic and | ||
59 | distribution-specific documents. The generic documents are common for | ||
60 | several Enea Linux distributions. The main documents are:</para> | ||
61 | |||
62 | <table> | ||
63 | <tgroup cols="2"> | ||
64 | <tbody> | ||
65 | <row> | ||
66 | <entry>Enea Linux Release Information</entry> | ||
67 | |||
68 | <entry>A distribution specific document detailing what the current | ||
69 | release contains, including supported features, references to | ||
70 | other documentation, known problems and limitations, and Enea | ||
71 | support contact information.</entry> | ||
72 | </row> | ||
73 | |||
74 | <row> | ||
75 | <entry>README files for the distribution</entry> | ||
76 | |||
77 | <entry>Distribution specific documents that serve as an | ||
78 | introduction and how-to for this release, where you also find | ||
79 | target specific commands and parameters, replacing the generic | ||
80 | examples in the User's Guide. These files also point to Build, | ||
81 | Boot, and Configuration information details for this | ||
82 | distribution.</entry> | ||
83 | </row> | ||
84 | |||
85 | <row> | ||
86 | <entry>Enea Linux User's Guide</entry> | ||
87 | |||
88 | <entry>The generic manual for developers who build Linux kernels | ||
89 | for embedded systems or use prebuilt Linux kernels.</entry> | ||
90 | </row> | ||
91 | |||
92 | <row> | ||
93 | <entry>Enea Linux Open Source Report</entry> | ||
94 | |||
95 | <entry>The distribution specific list of software packages with | ||
96 | corresponding Open Source Licenses, that are included in the Enea | ||
97 | Linux distribution.</entry> | ||
98 | </row> | ||
99 | |||
100 | <row> | ||
101 | <entry>Enea Linux Security Report</entry> | ||
102 | |||
103 | <entry>The release specific document listing the CVEs affecting | ||
104 | this distribuition.</entry> | ||
105 | </row> | ||
106 | </tbody> | ||
107 | </tgroup> | ||
108 | </table> | ||
109 | |||
110 | <para>See also the following generic documentation related to the Yocto | ||
111 | project, which actually is based on OpenEmbedded.</para> | ||
112 | |||
113 | <itemizedlist> | ||
114 | <listitem> | ||
115 | <para><ulink | ||
116 | url="https://www.yoctoproject.org/documentation/archived">https://www.yoctoproject.org/documentation/archived</ulink> | ||
117 | - Yocto project documentation. Search for the Yocto version included | ||
118 | in your Enea Linux distribution.</para> | ||
119 | </listitem> | ||
120 | </itemizedlist> | ||
121 | |||
122 | <itemizedlist> | ||
123 | <listitem> | ||
124 | <para><ulink | ||
125 | url="http://docs.openembedded.org">http://docs.openembedded.org</ulink> | ||
126 | - OpenEmbedded documentation, useful since Yocto is based on | ||
127 | OpenEmbedded.</para> | ||
128 | </listitem> | ||
129 | </itemizedlist> | ||
130 | |||
131 | <itemizedlist> | ||
132 | <listitem> | ||
133 | <para><ulink | ||
134 | url="https://wiki.yoctoproject.org/wiki">https://wiki.yoctoproject.org/wiki | ||
135 | </ulink>- Yocto Wiki, useful information for Yocto users</para> | ||
136 | </listitem> | ||
137 | </itemizedlist> | ||
138 | |||
139 | <itemizedlist> | ||
140 | <listitem> | ||
141 | <para><ulink | ||
142 | url="https://wiki.yoctoproject.org/wiki/Ptest">https://wiki.yoctoproject.org/wiki/Ptest</ulink> | ||
143 | - Ptest wiki. Ptest was initiated by Enea, for building, installing | ||
144 | and running package test suites</para> | ||
145 | </listitem> | ||
146 | </itemizedlist> | ||
147 | |||
148 | <itemizedlist> | ||
149 | <listitem> | ||
150 | <para><ulink | ||
151 | url="http://www.crashcourse.ca/wiki/index.php/Poky_Variable_Glossary">http://www.crashcourse.ca/wiki/index.php/Poky_Variable_Glossary</ulink> | ||
152 | - Explanation of some Yocto/Poky variables used in the build | ||
153 | configuration files.</para> | ||
154 | </listitem> | ||
155 | </itemizedlist> | ||
156 | </section> | ||
157 | </chapter> \ No newline at end of file | ||
diff --git a/doc/book-enea-linux-user-guide/doc/prerequisites_and_requirements.xml b/doc/book-enea-linux-user-guide/doc/prerequisites_and_requirements.xml new file mode 100644 index 0000000..2215ba8 --- /dev/null +++ b/doc/book-enea-linux-user-guide/doc/prerequisites_and_requirements.xml | |||
@@ -0,0 +1,101 @@ | |||
1 | <?xml version="1.0" encoding="ISO-8859-1"?> | ||
2 | <chapter id="prereq_reqs"> | ||
3 | <title>Prerequisites and Requirements</title> | ||
4 | |||
5 | <para>Building Enea Linux or compiling applications requires that your git | ||
6 | environment be setup properly and for certain packages to be installed on | ||
7 | your Linux development host. The following chapter details the | ||
8 | configurations needed on the build environment in order to properly use Enea | ||
9 | Linux.</para> | ||
10 | |||
11 | <section id="gitconfig"> | ||
12 | <title>Git Configuration</title> | ||
13 | |||
14 | <para>If you intend to get Enea Linux sources and build Enea Linux | ||
15 | yourself, you will need Git installed in your build environemtn. Please | ||
16 | refer to <ulink | ||
17 | url="https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup">Getting | ||
18 | Started - First-Time Git Setup</ulink>, for more details on how to set up | ||
19 | your git environment correctly, including how to set your identity using | ||
20 | the following commands:</para> | ||
21 | |||
22 | <programlisting>$ git config --global user.name "John Doe" | ||
23 | $ git config --global user.email johndoe@example.com</programlisting> | ||
24 | </section> | ||
25 | |||
26 | <section id="hostpackages"> | ||
27 | <title>Host Packages</title> | ||
28 | |||
29 | <para>In order to work with Enea Linux, you need a set of tools installed | ||
30 | on the build machine, depending on the scenario you use. The following | ||
31 | chapters will describe what tools to install on the build machine.</para> | ||
32 | |||
33 | <section id="prebuiltprereq"> | ||
34 | <title>Using Pre-Build Binaries</title> | ||
35 | |||
36 | <para>Using the pre-built binaries, you can get up and running more | ||
37 | quickly. Since building is not required, there are not a lot of packaes | ||
38 | and tools that need to be installed but a few are still required:</para> | ||
39 | |||
40 | <itemizedlist> | ||
41 | <listitem> | ||
42 | <para>wget - for downloading the Enea Linux binaries</para> | ||
43 | </listitem> | ||
44 | |||
45 | <listitem> | ||
46 | <para>tar - for decompressing the Enea Linux release</para> | ||
47 | </listitem> | ||
48 | |||
49 | <listitem> | ||
50 | <para>tftpboot server - for deploying Enea Linux on target</para> | ||
51 | </listitem> | ||
52 | |||
53 | <listitem> | ||
54 | <para>NFS server - in case you want to mount the root file system | ||
55 | over NFS</para> | ||
56 | </listitem> | ||
57 | </itemizedlist> | ||
58 | </section> | ||
59 | |||
60 | <section id="hostprereqpackages"> | ||
61 | <title>Required Packages for the Host Development System</title> | ||
62 | |||
63 | <para>Building Enea Linux requires a set of packages to be installed on | ||
64 | your Linux development host. The list of required packages is described | ||
65 | in the <ulink | ||
66 | url="https://www.yoctoproject.org/docs/2.5/ref-manual/ref-manual.html#required-packages-for-the-host-development-system">Yocto | ||
67 | Project reference manual</ulink>.</para> | ||
68 | </section> | ||
69 | </section> | ||
70 | |||
71 | <section id="sysshell_config"> | ||
72 | <title>Default Shell Configuration</title> | ||
73 | |||
74 | <para>Before installing Enea Linux, make sure that | ||
75 | <filename>bash</filename> is the default shell.</para> | ||
76 | |||
77 | <para><emphasis role="bold">To verify the default system | ||
78 | shell</emphasis></para> | ||
79 | |||
80 | <itemizedlist> | ||
81 | <listitem> | ||
82 | <para>If your system runs Ubuntu, use list to verify if | ||
83 | <filename>/usr/bin</filename> is a symbolic link to <emphasis | ||
84 | role="bold">bash</emphasis>:</para> | ||
85 | |||
86 | <programlisting># ls -l /bin/sh | ||
87 | lrwxrwxrwx 1 root root 4 2012-03-02 11:53 /bin/sh -> bash</programlisting> | ||
88 | </listitem> | ||
89 | |||
90 | <listitem> | ||
91 | <para>Optionally, in case the link points to <literal>dash</literal>, | ||
92 | change it through the following steps:</para> | ||
93 | |||
94 | <programlisting># ls -l /bin/sh | ||
95 | lrwxrwxrwx 1 root root 4 2012-03-02 11:53 /bin/sh -> dash | ||
96 | # sudo dpkg-reconfigure dash | ||
97 | Use dash as the default system shell (/bin/sh)? No</programlisting> | ||
98 | </listitem> | ||
99 | </itemizedlist> | ||
100 | </section> | ||
101 | </chapter> | ||
diff --git a/doc/book-enea-linux-user-guide/doc/real_time_in_enea_linux.xml b/doc/book-enea-linux-user-guide/doc/real_time_in_enea_linux.xml new file mode 100644 index 0000000..8f3ada0 --- /dev/null +++ b/doc/book-enea-linux-user-guide/doc/real_time_in_enea_linux.xml | |||
@@ -0,0 +1,26 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <chapter id="real_time"> | ||
3 | <title>Real-Time in Enea Linux</title> | ||
4 | |||
5 | <para>Additional packages providded by RT profile:</para> | ||
6 | |||
7 | <itemizedlist> | ||
8 | <listitem> | ||
9 | <para>bitcalc, 1.0-r0.0</para> | ||
10 | </listitem> | ||
11 | |||
12 | <listitem> | ||
13 | <para>count-ticks, 1.1-r1.0</para> | ||
14 | </listitem> | ||
15 | |||
16 | <listitem> | ||
17 | <para>partrt, 1.1-r0.0</para> | ||
18 | </listitem> | ||
19 | </itemizedlist> | ||
20 | |||
21 | <section id="Benchmark"> | ||
22 | <title>Benchmark</title> | ||
23 | |||
24 | <para>TBD.</para> | ||
25 | </section> | ||
26 | </chapter> \ No newline at end of file | ||
diff --git a/doc/book-enea-linux-user-guide/doc/troubleshooting.xml b/doc/book-enea-linux-user-guide/doc/troubleshooting.xml new file mode 100644 index 0000000..298bdd9 --- /dev/null +++ b/doc/book-enea-linux-user-guide/doc/troubleshooting.xml | |||
@@ -0,0 +1,10 @@ | |||
1 | <?xml version="1.0" encoding="ISO-8859-1"?> | ||
2 | <chapter condition="hidden" id="troubleshooting"> | ||
3 | <title>Troubleshooting</title> | ||
4 | |||
5 | <section id="placeholder_id"> | ||
6 | <title></title> | ||
7 | |||
8 | <para></para> | ||
9 | </section> | ||
10 | </chapter> \ No newline at end of file | ||
diff --git a/doc/book-enea-linux-user-guide/doc/using_eclipse.xml b/doc/book-enea-linux-user-guide/doc/using_eclipse.xml new file mode 100644 index 0000000..f6c7759 --- /dev/null +++ b/doc/book-enea-linux-user-guide/doc/using_eclipse.xml | |||
@@ -0,0 +1,1225 @@ | |||
1 | <?xml version="1.0" encoding="ISO-8859-1"?> | ||
2 | <chapter id="use_eclipse"> | ||
3 | <title>Using Eclipse</title> | ||
4 | |||
5 | <section id="install_eclipse"> | ||
6 | <title>Installing Eclipse</title> | ||
7 | |||
8 | <para>For instructions on how to install Eclipse Oxygen, please refer to | ||
9 | the <ulink | ||
10 | url="http://www.yoctoproject.org/docs/2.5/sdk-manual/sdk-manual.html#adt-eclipse">Yocto | ||
11 | Project Software Development Kit (SDK) Developer's Guide</ulink>, chapter | ||
12 | 4.3.2.1. Although the instructions listed there currently, refer to the | ||
13 | Neon release of Eclipse, the same steps still apply to the Oxygen release, | ||
14 | with some small differences:</para> | ||
15 | |||
16 | <itemizedlist> | ||
17 | <listitem> | ||
18 | <para>In <emphasis role="bold">step 1</emphasis> from chapter | ||
19 | 4.3.2.1.1, the URL for downloading Eclipse should be <ulink | ||
20 | url="http://www.eclipse.org/oxygen">http://www.eclipse.org/oxygen</ulink> | ||
21 | instead.</para> | ||
22 | </listitem> | ||
23 | |||
24 | <listitem> | ||
25 | <para>In <emphasis role="bold">step 3</emphasis> from chapter | ||
26 | 4.3.2.1.2, the correct option in the drop-down menu should look like: | ||
27 | <emphasis>Oxygen - | ||
28 | http://download.eclipse.org/releases/oxygen</emphasis>.</para> | ||
29 | </listitem> | ||
30 | |||
31 | <listitem> | ||
32 | <para>In <emphasis role="bold">step 5</emphasis> from chapter | ||
33 | 4.3.2.1.2, under the category <emphasis role="bold">Mobile and Device | ||
34 | Development</emphasis>, select <emphasis role="bold">C/C++ GDB | ||
35 | Hardware Debugging</emphasis> as well.</para> | ||
36 | </listitem> | ||
37 | </itemizedlist> | ||
38 | </section> | ||
39 | |||
40 | <section id="install_yocto"> | ||
41 | <title>Installing Yocto Plug-ins</title> | ||
42 | |||
43 | <para>Retrieve the archive containing the Yocto Plug-ins from the Enea | ||
44 | Linux release location and save it on your local machine. The archive file | ||
45 | has the following format: | ||
46 | <filename>org.yocto.sdk-<release>-<date>-archive.zip</filename>.</para> | ||
47 | |||
48 | <para>To install the Yocto Plugins in Eclipse, follow the instructions in | ||
49 | <ulink | ||
50 | url="http://www.yoctoproject.org/docs/2.5/sdk-manual/sdk-manual.html#adt-eclipse">chapter | ||
51 | 4.3.2.1.3.2</ulink>. of the Yocto Manual, starting with <emphasis | ||
52 | role="bold">step 8</emphasis>. In <emphasis role="bold">step 12</emphasis> | ||
53 | use the local archive that you downloaded previously.</para> | ||
54 | |||
55 | <para>To make sure that all required packages have been installed, go to | ||
56 | the menu <emphasis role="bold">Help > Install New Software > Eclipse | ||
57 | version</emphasis>, and select the version you use (e.g. Oxygen), to add | ||
58 | any missing packages. You can also check what packages are currently | ||
59 | installed by pressing the <emphasis role="bold">What is Already | ||
60 | Installed?</emphasis> link, as seen below.</para> | ||
61 | |||
62 | <mediaobject> | ||
63 | <imageobject role="fo"> | ||
64 | <imagedata align="center" contentwidth="600" | ||
65 | fileref="images/install_new_sw.svg" /> | ||
66 | </imageobject> | ||
67 | |||
68 | <imageobject role="html"> | ||
69 | <imagedata align="center" fileref="images/install_new_sw.png" /> | ||
70 | </imageobject> | ||
71 | </mediaobject> | ||
72 | </section> | ||
73 | |||
74 | <section id="eclipse_remote_connection"> | ||
75 | <title>Setting up a TCF Connection from Eclipse</title> | ||
76 | |||
77 | <para>Eclipse supports several types of remote connections to reference | ||
78 | boards. Among these is the Target Communication Framework (TCF) type of | ||
79 | connection. This information will be referenced throughout this guide, as | ||
80 | it is used by several features.</para> | ||
81 | |||
82 | <para><emphasis role="bold">How to set up a TCF connection to the target | ||
83 | to be used later on</emphasis><remark>Should we add images to this | ||
84 | procedure to make it easier to understand?</remark></para> | ||
85 | |||
86 | <orderedlist> | ||
87 | <listitem> | ||
88 | <para>Make sure the <literal>tcf-agent</literal> is running on the | ||
89 | target:</para> | ||
90 | |||
91 | <programlisting>ps aux | grep tcf-agent | ||
92 | root 329 0.0 0.2 1864824 2600 ? Ssl 12:47 0:08 /usr/sbin/tcf-agent -d -L- -l0</programlisting> | ||
93 | </listitem> | ||
94 | |||
95 | <listitem> | ||
96 | <para>Open the Target Explorer perspective from <emphasis | ||
97 | role="bold">Window > Perspective > Open Perspective > | ||
98 | Other... > Target Explorer</emphasis>.</para> | ||
99 | |||
100 | <para>This will open a new perspective, containing the <emphasis | ||
101 | role="bold">System Management</emphasis> view.</para> | ||
102 | </listitem> | ||
103 | |||
104 | <listitem> | ||
105 | <para>The <emphasis role="bold">System Management</emphasis> window | ||
106 | displays all existing TCF connections and allows you to manage them. | ||
107 | To create a new connection, go to <emphasis role="bold">Connections | ||
108 | > Create New Connection...</emphasis></para> | ||
109 | </listitem> | ||
110 | |||
111 | <listitem> | ||
112 | <para>Type in an appropriate name in the <emphasis | ||
113 | role="bold">Connection Name</emphasis> field.</para> | ||
114 | </listitem> | ||
115 | |||
116 | <listitem> | ||
117 | <para>Select <literal>TCP</literal> in the <emphasis | ||
118 | role="bold">Transport Type</emphasis> section.</para> | ||
119 | </listitem> | ||
120 | |||
121 | <listitem> | ||
122 | <para>Fill in the target's IP address and leave the <emphasis | ||
123 | role="bold">Port</emphasis> as it is (1534).</para> | ||
124 | </listitem> | ||
125 | |||
126 | <listitem> | ||
127 | <para>Check the <emphasis role="bold">Connect on finish</emphasis> | ||
128 | checkbox and click <emphasis role="bold">Finish</emphasis>.</para> | ||
129 | </listitem> | ||
130 | </orderedlist> | ||
131 | |||
132 | <para>The connections created will be persistent and accessible from the | ||
133 | <emphasis role="bold">Debug Configurations</emphasis> plugins.</para> | ||
134 | </section> | ||
135 | |||
136 | <section id="eclipse_devapps"> | ||
137 | <title>Developing Applications in Eclipse</title> | ||
138 | |||
139 | <section id="crosscomp"> | ||
140 | <title>Cross-Compiling from Eclipse</title> | ||
141 | |||
142 | <tip> | ||
143 | <para>Watch Enea's video about <ulink | ||
144 | url="https://www.youtube.com/watch?v=i6KaMrhVOw8&list=PLF6PIT9GsZ19sUvQOCQnfgoWkQTc5CvGS">Cross-compiling | ||
145 | and Remote Debugging of Applications</ulink>.</para> | ||
146 | </tip> | ||
147 | |||
148 | <para>In order to use Eclipse to compile an application for a certain | ||
149 | target architecture, you need to first install a cross-compilation | ||
150 | toolchain<indexterm> | ||
151 | <primary>cross-compilation toolchain</primary> | ||
152 | </indexterm><indexterm> | ||
153 | <primary>toolchain</primary> | ||
154 | |||
155 | <secondary>cross-compilation</secondary> | ||
156 | </indexterm> (SDK<indexterm> | ||
157 | <primary>SDK</primary> | ||
158 | </indexterm>), configure the cross-compiler in Eclipse, and then | ||
159 | create a <emphasis>Yocto ADT Autotools project</emphasis> , which uses | ||
160 | the Yocto SDK.<remark>INFO: This project type is still called ADT in | ||
161 | Eclipse even though Yocto talks about standard and extentible | ||
162 | SDK</remark></para> | ||
163 | |||
164 | <para>Installing the cross-compilation toolchain is pretty | ||
165 | straightforward. All you have to do is to run the shell script provided | ||
166 | with the release and follow the instructions, see <link | ||
167 | linkend="install_el_sdk">Installing a Cross-Compilation Toolchain | ||
168 | (SDK)</link>.</para> | ||
169 | |||
170 | <para>Before creating the project, you must first configure the | ||
171 | cross-compiler<indexterm> | ||
172 | <primary>cross-compiler</primary> | ||
173 | </indexterm> in Eclipse:<remark>Should images be added to the | ||
174 | procedure below for ease of understanding?</remark></para> | ||
175 | |||
176 | <orderedlist> | ||
177 | <listitem> | ||
178 | <para>Select <emphasis role="bold">Window > Preferences > | ||
179 | Yocto Project ADT</emphasis> to open a dialog.<remark>INFO: This | ||
180 | project type is still called ADT in Eclipse even though Yocto talks | ||
181 | about standard and extentible SDK</remark></para> | ||
182 | </listitem> | ||
183 | |||
184 | <listitem> | ||
185 | <para>Choose a <emphasis role="bold">Stand-alone pre-built | ||
186 | toolchain</emphasis>.</para> | ||
187 | </listitem> | ||
188 | |||
189 | <listitem> | ||
190 | <para>For the <emphasis role="bold">Toolchain Root | ||
191 | Location</emphasis> option, specify the path to the | ||
192 | cross-compilation toolchain, e.g. | ||
193 | <filename>/opt/enea/<sdkversion></filename>.</para> | ||
194 | </listitem> | ||
195 | |||
196 | <listitem> | ||
197 | <para>For the <emphasis role="bold">Sysroot Location</emphasis> | ||
198 | option, specify the path to the target sysroot directory inside the | ||
199 | toolchain root location e.g. | ||
200 | <literal><extsdkdir>/tmp/sysroots/corei7-64-enea-linux/</literal></para> | ||
201 | </listitem> | ||
202 | |||
203 | <listitem> | ||
204 | <para>If multiple architectures are supported by the SDK, select the | ||
205 | desired target architecture from the drop-down list.</para> | ||
206 | |||
207 | <tip> | ||
208 | <para>You can save different profiles with different | ||
209 | configurations. This makes it easy to compile the same code for | ||
210 | different architectures by simply choosing the desired development | ||
211 | profile.</para> | ||
212 | </tip> | ||
213 | </listitem> | ||
214 | |||
215 | <listitem> | ||
216 | <para>In <emphasis role="bold">Target Options</emphasis>, select the | ||
217 | <emphasis role="bold">External HW</emphasis> option.</para> | ||
218 | </listitem> | ||
219 | </orderedlist> | ||
220 | |||
221 | <tip> | ||
222 | <para>More details on how to configure the cross-compiler can be found | ||
223 | in the <ulink | ||
224 | url="http://www.yoctoproject.org/docs/2.5/sdk-manual/sdk-manual.html"><emphasis>Yocto | ||
225 | Project Software Development Kit (SDK) Developer's Guide | ||
226 | 2.5</emphasis></ulink>. Change the Yocto version in the link if | ||
227 | needed.</para> | ||
228 | |||
229 | <para>There is also a good cheat sheet available in Eclipse, under | ||
230 | <emphasis role="bold">Help > Cheat Sheets > Yocto Project > | ||
231 | Creating a Hello World ANSI C or C++ Autotools Project</emphasis>. | ||
232 | This cheat sheet covers all the steps up to building the | ||
233 | project.</para> | ||
234 | </tip> | ||
235 | |||
236 | <para>Once you have configured the default options for the | ||
237 | cross-compiler you can create a project:</para> | ||
238 | |||
239 | <orderedlist> | ||
240 | <listitem> | ||
241 | <para>Follow the steps in the wizard to create the project:</para> | ||
242 | |||
243 | <orderedlist numeration="loweralpha" spacing="compact"> | ||
244 | <listitem> | ||
245 | <para>Select <emphasis role="bold">File > New > Project | ||
246 | > C Project</emphasis> and click <emphasis | ||
247 | role="bold">Next</emphasis>.</para> | ||
248 | </listitem> | ||
249 | |||
250 | <listitem> | ||
251 | <para>Select <emphasis role="bold">Yocto Project ADT Autotools | ||
252 | Project > Hello World ANSI C Autotools Project</emphasis>, | ||
253 | and give the project a <emphasis role="bold">Project | ||
254 | name</emphasis> before clicking <emphasis | ||
255 | role="bold">Next</emphasis>.<note> | ||
256 | <para>Having a hyphen character '<literal>-</literal>' in | ||
257 | the name can cause configuration errors.</para> | ||
258 | </note></para> | ||
259 | </listitem> | ||
260 | |||
261 | <listitem> | ||
262 | <para>Enter the <emphasis role="bold">Author</emphasis> and | ||
263 | click <emphasis role="bold">Finish</emphasis>.</para> | ||
264 | </listitem> | ||
265 | </orderedlist> | ||
266 | |||
267 | <para>This will automatically generate all the files needed, | ||
268 | creating all necessary configurations for cross-compiling. For more | ||
269 | on how to create a project, watch <ulink | ||
270 | url="https://www.youtube.com/watch?v=2qxWae7srzE&list=PLF6PIT9GsZ19sUvQOCQnfgoWkQTc5CvGS">Enea's | ||
271 | video about setting up an ADT project</ulink>.</para> | ||
272 | </listitem> | ||
273 | |||
274 | <listitem> | ||
275 | <para>Optionally, if you want to have specific options for | ||
276 | cross-compiling this project, select <emphasis role="bold">Project | ||
277 | > Change Yocto Project Settings</emphasis> and modify the options | ||
278 | for this project only.</para> | ||
279 | </listitem> | ||
280 | |||
281 | <listitem> | ||
282 | <para>Right-click on the project from the Project Explorer and | ||
283 | choose <emphasis role="bold">Reconfigure Project</emphasis>. This | ||
284 | will generate the necessary makefiles to build the project.</para> | ||
285 | </listitem> | ||
286 | |||
287 | <listitem> | ||
288 | <para>Finally, build the project from <emphasis role="bold">Project | ||
289 | > Build Project</emphasis>, or by right-clicking on the project | ||
290 | in the Project Explorer and selecting <emphasis role="bold">Build | ||
291 | Project</emphasis>. A binary file for the target architecture is | ||
292 | created in the project directory.</para> | ||
293 | </listitem> | ||
294 | </orderedlist> | ||
295 | |||
296 | <tip> | ||
297 | <para>If you need to add more files or compiler flags or parameters to | ||
298 | the Makefile, edit <filename>Makefile.am</filename> accordingly and | ||
299 | then reconfigure the project.</para> | ||
300 | </tip> | ||
301 | |||
302 | <note> | ||
303 | <para>Eclipse displays the results from building a project in one | ||
304 | Eclipse console, and reconfiguring a project in another one. Switching | ||
305 | between the two consoles is necessary to view both outputs.</para> | ||
306 | </note> | ||
307 | </section> | ||
308 | |||
309 | <section id="eclipse_debug"> | ||
310 | <title>Debugging Applications from Eclipse</title> | ||
311 | |||
312 | <tip> | ||
313 | <para>Watch Enea's video about <ulink | ||
314 | url="https://www.youtube.com/watch?v=i6KaMrhVOw8&list=PLF6PIT9GsZ19sUvQOCQnfgoWkQTc5CvGS">Cross-compiling | ||
315 | and Remote Debugging of Applications</ulink>.</para> | ||
316 | </tip> | ||
317 | |||
318 | <para>Using Eclipse you can build an application, deploy it on the | ||
319 | target, and debug <indexterm> | ||
320 | <primary>debug</primary> | ||
321 | </indexterm>the source code remotely, all with a single mouse click. | ||
322 | However, in order to achieve this you need to make certain | ||
323 | configurations.</para> | ||
324 | |||
325 | <para>When setting the cross-compiler options for a target, a run/debug | ||
326 | configuration is created as a <emphasis role="bold">C/C++ Remote | ||
327 | Application</emphasis> instance. The configuration is named according to | ||
328 | this syntax <literal><project>_gdb_-<suffix></literal>, for | ||
329 | example: <filename>hello_gdb_aarch64-enea-linux</filename>.</para> | ||
330 | |||
331 | <note> | ||
332 | <para>If a run/debug configuration is not created when setting the | ||
333 | cross-compiler options, perform the steps in <link | ||
334 | linkend="troubleshoot_build_debug_config">Run/Debug Configuration Not | ||
335 | Created</link>.</para> | ||
336 | </note> | ||
337 | |||
338 | <para>The instructions below describes how to use Eclipse to debug | ||
339 | single-process applications on a target. For information on how to debug | ||
340 | multi-process applications, see <link | ||
341 | linkend="eclipse_multi_debug">Debugging Multi-Process Applications from | ||
342 | Eclipse</link>.</para> | ||
343 | |||
344 | <para>Use the run/debug configuration to connect the Eclipse GDB | ||
345 | interface to the remote target, by doing the following:</para> | ||
346 | |||
347 | <remark>Should we add images for the procedure below as well?</remark> | ||
348 | |||
349 | <orderedlist> | ||
350 | <listitem> | ||
351 | <para>Select <emphasis role="bold">Run > Debug Configurations | ||
352 | > C/C++ Remote application</emphasis> from the menu and choose | ||
353 | the run/debug configuration from the instances under <literal>C/C++ | ||
354 | Remote Application</literal> in the left pane. You can rename, | ||
355 | duplicate or remove the configuration as needed.</para> | ||
356 | </listitem> | ||
357 | |||
358 | <listitem> | ||
359 | <para>In the <emphasis role="bold">Main</emphasis> tab, do the | ||
360 | following:</para> | ||
361 | |||
362 | <orderedlist spacing="compact"> | ||
363 | <listitem> | ||
364 | <para>Select an existing <emphasis | ||
365 | role="bold">Connection</emphasis> from the drop-down list, or | ||
366 | create a new one following the steps below:</para> | ||
367 | |||
368 | <orderedlist> | ||
369 | <listitem> | ||
370 | <para>To create a new connection, click the <emphasis | ||
371 | role="bold">New...</emphasis> button and select a connection | ||
372 | type. For debugging applications an <emphasis | ||
373 | role="bold">SSH</emphasis> connection is recommended.</para> | ||
374 | </listitem> | ||
375 | |||
376 | <listitem> | ||
377 | <para>Choose a connection name and fill in the <emphasis | ||
378 | role="bold">Host information</emphasis> section with the | ||
379 | target's IP and the username.</para> | ||
380 | |||
381 | <note> | ||
382 | <para>For Enea Linux, the default username is <emphasis | ||
383 | role="bold">root</emphasis> and there is no password | ||
384 | set.</para> | ||
385 | </note> | ||
386 | </listitem> | ||
387 | |||
388 | <listitem> | ||
389 | <para>Depending on your network setup, select either | ||
390 | <emphasis role="bold">Public key</emphasis> or <emphasis | ||
391 | role="bold">Password-based authentication</emphasis>. If | ||
392 | using Password-based authentication, leave the field empty | ||
393 | when using the default <emphasis role="bold">root</emphasis> | ||
394 | username.</para> | ||
395 | </listitem> | ||
396 | |||
397 | <listitem> | ||
398 | <para>Click Finish. The new connection should now be | ||
399 | available in the dropdown menu. This connection will be | ||
400 | persist through all Run/Debug configurations.</para> | ||
401 | |||
402 | <para>You can manage your saved connections in the <emphasis | ||
403 | role="bold">Connections </emphasis>view from <emphasis | ||
404 | role="bold">Window -> Show View -> Other... -> | ||
405 | Connections</emphasis>.</para> | ||
406 | </listitem> | ||
407 | </orderedlist> | ||
408 | </listitem> | ||
409 | |||
410 | <listitem> | ||
411 | <para>Select the binary <emphasis role="bold">C/C++ | ||
412 | Application</emphasis> you want to deploy.</para> | ||
413 | |||
414 | <para>If you click the <emphasis role="bold">Search | ||
415 | Project</emphasis> button, Eclipse will parse the project and | ||
416 | provide a list of all compiled binaries to choose from. | ||
417 | Alternatively, you can <emphasis role="bold">Browse</emphasis> | ||
418 | the file system for a binary, or use <emphasis | ||
419 | role="bold">Variables</emphasis> to manually define the | ||
420 | path.</para> | ||
421 | </listitem> | ||
422 | |||
423 | <listitem> | ||
424 | <para>The <emphasis role="bold">Remote Absolute File | ||
425 | Path</emphasis> is the path to which the binary on the target | ||
426 | shall be deployed. Type it directly or click the <emphasis | ||
427 | role="bold">Browse</emphasis> button and select a location on | ||
428 | the remote target. Note that you need to specify the path | ||
429 | including the filename.</para> | ||
430 | </listitem> | ||
431 | |||
432 | <listitem> | ||
433 | <para>Optionally, you may choose not to download the application | ||
434 | to the target, but instead debug an already downloaded | ||
435 | application.</para> | ||
436 | </listitem> | ||
437 | |||
438 | <listitem> | ||
439 | <para>You can also configure Eclipse to execute commands prior | ||
440 | to launching the application, by specifying the commands in the | ||
441 | corresponding field.</para> | ||
442 | </listitem> | ||
443 | </orderedlist> | ||
444 | </listitem> | ||
445 | |||
446 | <listitem> | ||
447 | <para>In the <emphasis role="bold">Arguments</emphasis> tab you can | ||
448 | specify various arguments to be passed to your application at | ||
449 | launch-time.</para> | ||
450 | </listitem> | ||
451 | |||
452 | <listitem> | ||
453 | <para>The <emphasis role="bold">Debugger</emphasis> tab deals with | ||
454 | GDB specific configurations. This is automatically populated when | ||
455 | configuring the cross-compiler. You may optionally choose | ||
456 | additionally useful options as with any Eclipse GDB interface, e.g. | ||
457 | whether to break at entering the main function or uploading shared | ||
458 | libraries.</para> | ||
459 | </listitem> | ||
460 | |||
461 | <listitem> | ||
462 | <para>To enable debugging with shared libraries, do the | ||
463 | following:</para> | ||
464 | |||
465 | <itemizedlist> | ||
466 | <listitem> | ||
467 | <para>Retrieve the debug sources from the target, and store them | ||
468 | in a dedicated folder on the local host. They are found in | ||
469 | <literal>/usr/src/debug</literal> in the target rootfs.</para> | ||
470 | </listitem> | ||
471 | |||
472 | <listitem> | ||
473 | <para>Set a path mapping your debug configuration. In the | ||
474 | <emphasis role="bold">Source</emphasis> tab, click <emphasis | ||
475 | role="bold">Add</emphasis>, select <emphasis role="bold">Path | ||
476 | Mapping</emphasis>, and assign paths to the mapping:</para> | ||
477 | |||
478 | <simplelist> | ||
479 | <member><emphasis role="bold">Compilation path</emphasis>: | ||
480 | <filename>/usr/src/debug</filename></member> | ||
481 | |||
482 | <member><emphasis role="bold">Local file system | ||
483 | path</emphasis> (path to the debug sources retrieved from the | ||
484 | target):<filename> | ||
485 | <path_to_chosen_folder>/usr/src/debug</filename></member> | ||
486 | </simplelist> | ||
487 | </listitem> | ||
488 | |||
489 | <listitem> | ||
490 | <para>In the <emphasis role="bold">Debugger/Shared | ||
491 | Libraries</emphasis> tab, select option <emphasis | ||
492 | role="bold">Load shared library symbols automatically</emphasis> | ||
493 | and set the path to the shared library. The path depends on the | ||
494 | processor architecture of your target.</para> | ||
495 | |||
496 | <para>For <emphasis role="bold">32-bit</emphasis> targets: | ||
497 | <filename><extsdkdir>/sysroots/<arch>-enea-linux/lib/.debug | ||
498 | </filename></para> | ||
499 | |||
500 | <para>For <emphasis role="bold">64-bit</emphasis> targets: | ||
501 | <filename><extsdkdir>/sysroots/<arch>-enea-linux/lib64/.debug</filename></para> | ||
502 | |||
503 | <para>Note that inside Eclipse you must load the shared | ||
504 | libraries with debug information (not stripped). Shared | ||
505 | libraries that get built into the rootfs of the target image | ||
506 | have debug information stripped off, for size and speed | ||
507 | optimizations.</para> | ||
508 | </listitem> | ||
509 | |||
510 | <listitem> | ||
511 | <para>To debug applications that depend on shared libraries | ||
512 | built outside the rootfs of the target image, the same procedure | ||
513 | applies, with the exception that you must upload the required | ||
514 | shared libraries to the target prior to starting the debugging | ||
515 | session.</para> | ||
516 | |||
517 | <para>If you upload them to <literal>/lib</literal> or | ||
518 | <literal>/lib64</literal> (depending on the target architecture) | ||
519 | they get loaded by default. Otherwise, you must correctly update | ||
520 | the <emphasis role="bold"><literal> | ||
521 | LD_LIBRARY_PATH</literal></emphasis> environment variable to | ||
522 | match their look-up path. In Eclipse, you can automatically | ||
523 | update this variable by setting the <emphasis | ||
524 | role="bold">Commands to execute before application</emphasis> | ||
525 | field to: <emphasis role="bold">export | ||
526 | <literal>LD_LIBRARY_PATH=<path to uploaded shared | ||
527 | libs></literal> </emphasis></para> | ||
528 | </listitem> | ||
529 | </itemizedlist> | ||
530 | </listitem> | ||
531 | |||
532 | <listitem> | ||
533 | <para>Once you have set up all the debug configurations, click | ||
534 | <emphasis role="bold">Apply</emphasis> and <emphasis | ||
535 | role="bold">Debug</emphasis>. This will launch the GDB on the target | ||
536 | and open the <literal>Debug perspective</literal>. This is the | ||
537 | standard Eclipse GDB interface when debugging a remote target. You | ||
538 | can use all GDB features, such as setting breakpoints, stepping | ||
539 | through code, reading variable values, reading registers, viewing | ||
540 | memory, etc.</para> | ||
541 | </listitem> | ||
542 | </orderedlist> | ||
543 | |||
544 | <para>When the debugger starts, Eclipse opens three consoles:</para> | ||
545 | |||
546 | <orderedlist numeration="upperalpha" spacing="compact"> | ||
547 | <listitem> | ||
548 | <para>The <emphasis role="bold">Remote Shell</emphasis> - used to | ||
549 | launch the application and display its output.</para> | ||
550 | </listitem> | ||
551 | |||
552 | <listitem> | ||
553 | <para>The <emphasis role="bold">GDB console</emphasis> - named as | ||
554 | the path to its GDB binary. You can use this console to control the | ||
555 | GDB from the command line.</para> | ||
556 | </listitem> | ||
557 | |||
558 | <listitem> | ||
559 | <para>The third console is named as the path of the binary on the | ||
560 | local machine, and is in fact an artifact that must be | ||
561 | ignored.</para> | ||
562 | </listitem> | ||
563 | </orderedlist> | ||
564 | |||
565 | <para>After having set up the debug configuration once, you can modify | ||
566 | and rebuild your application and then relaunch it by simply clicking the | ||
567 | <emphasis role="bold">Debug</emphasis> icon (the bug symbol) on the | ||
568 | toolbar. You can also select the drop-down list for more configurations, | ||
569 | and even add your configuration to the <emphasis | ||
570 | role="bold">Favorites</emphasis> to easily retrieve it next time.</para> | ||
571 | |||
572 | <para>If you only want to deploy and run the application, without | ||
573 | debugging, you can use the same configuration as the one set up for | ||
574 | debugging, but simply click the <emphasis role="bold">Run</emphasis> | ||
575 | icon (the Play button symbol) from the toolbar menu, or select <emphasis | ||
576 | role="bold">Run > Run Configurations</emphasis> and Run the chosen | ||
577 | configuration.</para> | ||
578 | </section> | ||
579 | |||
580 | <section id="eclipse_multi_debug"> | ||
581 | <title>Debugging Multi-Process Applications from Eclipse</title> | ||
582 | |||
583 | <para>In Eclipse, remote debugging of an application that uses multiple | ||
584 | processes<indexterm> | ||
585 | <primary>multiple processes</primary> | ||
586 | </indexterm> is slightly different compared to debugging a single | ||
587 | process application as described in <link | ||
588 | linkend="eclipse_debug">Debugging Applications from | ||
589 | Eclipse</link>.</para> | ||
590 | |||
591 | <para>The following limitations exist for multi-process | ||
592 | debugging:</para> | ||
593 | |||
594 | <itemizedlist spacing="compact"> | ||
595 | <listitem> | ||
596 | <para>All debugged processes must share the same binary.</para> | ||
597 | </listitem> | ||
598 | |||
599 | <listitem> | ||
600 | <para>Debugging only works in non-stop mode, i.e. stopping at a | ||
601 | breakpoint only stops the current thread while other threads | ||
602 | continue to execute.</para> | ||
603 | </listitem> | ||
604 | </itemizedlist> | ||
605 | |||
606 | <note> | ||
607 | <para>When using the GDB to debug multiple instances of the same | ||
608 | process or thread, using the same symbols file, breakpoints will be | ||
609 | common to all instances. That is, when setting a breakpoint in the | ||
610 | code, all instances will stop there, and there is no way to filter | ||
611 | them. The current thread filter in Eclipse is ineffective.</para> | ||
612 | </note> | ||
613 | |||
614 | <para><emphasis role="bold">Use the run/debug configuration to connect | ||
615 | the Eclipse GDB client to the remote target</emphasis>:</para> | ||
616 | |||
617 | <orderedlist> | ||
618 | <listitem> | ||
619 | <para>Go to <emphasis role="bold">Window > Preferences > | ||
620 | Run/Debug > Launching > Default Launchers</emphasis>. Under | ||
621 | <emphasis role="bold">C/C++ Attach to Applicaton > | ||
622 | Debug</emphasis> select the checkbox <emphasis role="bold">GDB (DSF) | ||
623 | Attach to Process via TCF/TE Launcher</emphasis>.</para> | ||
624 | </listitem> | ||
625 | |||
626 | <listitem> | ||
627 | <para>Select <emphasis role="bold">Run > Debug Configurations... | ||
628 | </emphasis> from the menu and choose the run/debug configuration | ||
629 | from the instances under <literal>C/C++ Attach to | ||
630 | Application</literal> in the left pane. You can create, rename, | ||
631 | duplicate, or remove the configurations as needed.</para> | ||
632 | </listitem> | ||
633 | |||
634 | <listitem> | ||
635 | <para>If you followed <emphasis role="bold">step 1</emphasis>, in | ||
636 | the lower part of the dialog you will see that <emphasis | ||
637 | role="bold">Using GDB (DSF) Attach to Process via TCF/TE | ||
638 | Launcher</emphasis> is selected. If not, redo <emphasis | ||
639 | role="bold">step 1</emphasis> or click the <emphasis | ||
640 | role="bold">Select Other...</emphasis> link, and use configuration | ||
641 | specific settings by selecting the checkbox <emphasis | ||
642 | role="bold">GDB (DSF) Attach to Process via TCF/TE | ||
643 | Launcher</emphasis>.</para> | ||
644 | </listitem> | ||
645 | |||
646 | <listitem> | ||
647 | <para>In the <emphasis role="bold">Main</emphasis> tab, do the | ||
648 | following:</para> | ||
649 | |||
650 | <orderedlist spacing="compact"> | ||
651 | <listitem> | ||
652 | <para>Select the binary <emphasis role="bold">C/C++ | ||
653 | Application</emphasis> you want to deploy. If you click the | ||
654 | <emphasis role="bold">Search Project</emphasis> button, Eclipse | ||
655 | will parse the project and provide a list of all compiled | ||
656 | binaries to choose from. Alternatively, you can <emphasis | ||
657 | role="bold">Browse</emphasis> the file system for a binary, or | ||
658 | use <emphasis role="bold">Variables</emphasis> to manually | ||
659 | define the path.</para> | ||
660 | </listitem> | ||
661 | |||
662 | <listitem> | ||
663 | <para>Select an existing <emphasis | ||
664 | role="bold">Connection</emphasis> from the drop-down list. If a | ||
665 | connection is not available, create a new one following the | ||
666 | steps in <link linkend="eclipse_remote_connection">Setting up a | ||
667 | TCF Connection from Eclipse</link>.</para> | ||
668 | </listitem> | ||
669 | |||
670 | <listitem> | ||
671 | <para>The <emphasis role="bold">Remote Absolute File | ||
672 | Path</emphasis> is the path to the binary of the process you are | ||
673 | planning to debug. Type it directly or click the <emphasis | ||
674 | role="bold">Browse</emphasis> button and select a location on | ||
675 | the remote target. You need an active TCF connection to the | ||
676 | target for the <emphasis role="bold">Browse</emphasis> button to | ||
677 | work (see chapter <emphasis role="bold">Setting up a TCF | ||
678 | Connection from Eclipse</emphasis>). Note that you need to | ||
679 | specify the path including the filename.</para> | ||
680 | </listitem> | ||
681 | |||
682 | <listitem> | ||
683 | <para>Specify the PID of the remote process you are planning to | ||
684 | attach.</para> | ||
685 | </listitem> | ||
686 | </orderedlist> | ||
687 | </listitem> | ||
688 | |||
689 | <listitem> | ||
690 | <para>The <emphasis role="bold">Debugger</emphasis> tab deals with | ||
691 | GDB specific configurations. Select the <emphasis | ||
692 | role="bold">gdbserver</emphasis> in the Debugger dropdown. You may | ||
693 | also choose other useful options as with any Eclipse GDB interface, | ||
694 | e.g. whether to break at entering the main function or uploading | ||
695 | shared libraries. The following actions are important:</para> | ||
696 | |||
697 | <orderedlist spacing="compact"> | ||
698 | <listitem> | ||
699 | <para>In the <emphasis role="bold">Main</emphasis> tab, enter | ||
700 | the path to the GDB binary in the SDK. For example: | ||
701 | <literal><extsdkdir>/tmp/sysroots/x86_64-linux/usr/bin/<arch>-enea-linux/<arch>-enea-linux-gdb</literal>.</para> | ||
702 | </listitem> | ||
703 | |||
704 | <listitem> | ||
705 | <para>Select option <literal>Non-stop mode</literal>.</para> | ||
706 | </listitem> | ||
707 | </orderedlist> | ||
708 | </listitem> | ||
709 | |||
710 | <listitem> | ||
711 | <para>Once you have set up all the debug configurations, click | ||
712 | <emphasis role="bold">Apply</emphasis> and <emphasis | ||
713 | role="bold">Debug</emphasis>. This will launch the GDB and | ||
714 | optionally open the <literal>Debug perspective</literal> for the | ||
715 | process you selected. This is the standard Eclipse GDB interface | ||
716 | when debugging a remote target. You can use all GDB features, such | ||
717 | as setting breakpoints, stepping through code, reading variable | ||
718 | values, reading registers, viewing memory, etc.</para> | ||
719 | </listitem> | ||
720 | </orderedlist> | ||
721 | |||
722 | <para>Repeat these steps for each process you want to debug. You can | ||
723 | have multiple debug sessions running simultaneously for multiple | ||
724 | processes sharing the same source code.</para> | ||
725 | </section> | ||
726 | |||
727 | <section id="eclipse_postmortem"> | ||
728 | <title>Using the Postmortem Debugger</title> | ||
729 | |||
730 | <para>When a program crashes<indexterm> | ||
731 | <primary>post-mortem debugging</primary> | ||
732 | </indexterm><indexterm> | ||
733 | <primary>core dump</primary> | ||
734 | </indexterm>, it may leave a core dump which can be used to figure out | ||
735 | exactly why the program crashed. Core dumps are disabled by default and | ||
736 | have to be activated before debugging. After retrieving and transferring | ||
737 | a core dump file to a host machine, Eclipse and the SDK tool generated | ||
738 | for the target, can be used to analyze the application state at the time | ||
739 | of the crash.</para> | ||
740 | |||
741 | <para>If deep debugging within Linux libraries is needed, the debug SDK | ||
742 | is required. See <link linkend="install_el_sdk">Installing Enea Linux | ||
743 | SDK</link>.</para> | ||
744 | |||
745 | <para>To enable writing core dump files, two steps need to be performed | ||
746 | on the target: <emphasis>allowing resources for core dumps</emphasis> | ||
747 | and <emphasis>defining a core file name pattern</emphasis>. These | ||
748 | settings are valid until the next reboot, unless made permanent by | ||
749 | configuration changes in the root file system.</para> | ||
750 | |||
751 | <para>Use the <command>ulimit</command> command to allow the system to | ||
752 | use resources for core dumps. The <command>ulimit</command> command | ||
753 | controls the resources available to a process started by the shell, on | ||
754 | systems that allow such control. Type the following to use this | ||
755 | command:</para> | ||
756 | |||
757 | <programlisting>ulimit -c unlimited</programlisting> | ||
758 | |||
759 | <para>To verify the result, type <command>ulimit -a</command> and see if | ||
760 | the core file size is set to <literal>unlimited</literal>. User limits | ||
761 | can also be changed from the application code using the function | ||
762 | <function>setrlimit(...)</function> declared in the | ||
763 | <literal>sys/resource.h</literal> header (see the manual available | ||
764 | through <command>man setrlimit</command>). To make this permanent across | ||
765 | a reboot, adjust the configuration in | ||
766 | <filename>/etc/security/limits.conf</filename>.</para> | ||
767 | |||
768 | <para>The next step is to specify the core pattern which defines the | ||
769 | core dump file pattern name. The core pattern is defined in the | ||
770 | <literal>/proc/sys/kernel/core_pattern</literal>.</para> | ||
771 | |||
772 | <para>The format of a core pattern follows certain rules:</para> | ||
773 | |||
774 | <itemizedlist> | ||
775 | <listitem> | ||
776 | <para>The maximum length is 128 characters</para> | ||
777 | </listitem> | ||
778 | |||
779 | <listitem> | ||
780 | <para>Default core dump name is <filename>core</filename></para> | ||
781 | </listitem> | ||
782 | |||
783 | <listitem> | ||
784 | <para>The string stored in <literal>core_pattern</literal> is used | ||
785 | as a pattern template for the output filename. Certain string | ||
786 | patterns (beginning with <literal>%</literal>) are substituted with | ||
787 | their actual values. The patterns are:</para> | ||
788 | |||
789 | <programlisting>%<NUL> '%' is dropped | ||
790 | %% output one '%' | ||
791 | %p pid | ||
792 | %P global pid (init PID namespace) | ||
793 | %i tid | ||
794 | %I global tid (init PID namespace) | ||
795 | %u uid (in initial user namespace) | ||
796 | %g gid (in initial user namespace) | ||
797 | %d dump mode, matches PR_SET_DUMPABLE and /proc/sys/fs/suid_dumpable | ||
798 | %s signal number | ||
799 | %t UNIX time of dump | ||
800 | %h hostname | ||
801 | %e executable filename (may be shortened) | ||
802 | %E executable path | ||
803 | %<OTHER> both are dropped</programlisting> | ||
804 | </listitem> | ||
805 | |||
806 | <listitem> | ||
807 | <para>If the first character of the pattern is a | ||
808 | '<literal>|</literal>', the kernel will treat the rest of the | ||
809 | pattern as a command to run. The core dump will be written to the | ||
810 | standard input of that program instead of to a file.</para> | ||
811 | </listitem> | ||
812 | |||
813 | <listitem> | ||
814 | <para>By setting the value <literal>core_uses_pid</literal> to | ||
815 | <literal>1</literal>, the core dump filename gets the extension | ||
816 | <filename>.PID</filename>, if the <literal>core_pattern</literal> | ||
817 | does not contain "<literal><literal>%p</literal></literal>".</para> | ||
818 | |||
819 | <para>For example, the default file name <filename>core</filename> | ||
820 | becomes <filename>core.PID</filename> if the | ||
821 | <literal>core_uses_pid</literal> is set, and no | ||
822 | <literal>core_pattern</literal> is defined.</para> | ||
823 | </listitem> | ||
824 | </itemizedlist> | ||
825 | |||
826 | <para>Specify a core pattern by writing it to | ||
827 | <literal>/proc/sys/kernel/core_pattern</literal>. For example: | ||
828 | <programlisting><literal>echo "<suitable_directory>/core.%e.%p.%h.%t" > /proc/sys/kernel/core_pattern</literal></programlisting></para> | ||
829 | |||
830 | <para>To make the core dump file name permanent across a reboot, | ||
831 | configure <filename>/etc/sysctl.conf</filename>. to reflect this choice, | ||
832 | by adding a line like in the following example: | ||
833 | <literal>kernel.core_pattern=<suitable_directory>/core.%e.%p.%h.%t</literal>.</para> | ||
834 | |||
835 | <para>How to use the Eclipse post mortem debug configuration in order to | ||
836 | view the call trace, for the core dump in the Eclipse GDB | ||
837 | interface:</para> | ||
838 | |||
839 | <orderedlist spacing="compact"> | ||
840 | <listitem> | ||
841 | <para>Ensure a core dump can be created on the target, see the | ||
842 | information above. To see the full call stack, the application | ||
843 | object files, compiled with debug information, are needed (the | ||
844 | <literal>-g</literal> option in gcc).</para> | ||
845 | </listitem> | ||
846 | |||
847 | <listitem> | ||
848 | <para>After a core dump has been created, retrieve the core dump | ||
849 | file from the target and store it on the host.</para> | ||
850 | </listitem> | ||
851 | |||
852 | <listitem> | ||
853 | <para>In Eclipse on the host, you need the core dump file, the SDK | ||
854 | for the target, the application executable, and access to the source | ||
855 | code. Once you have those, do the following:<orderedlist | ||
856 | spacing="compact"> | ||
857 | <listitem> | ||
858 | <para>Switch to the <literal>Debug</literal> perspective in | ||
859 | Eclipse.</para> | ||
860 | </listitem> | ||
861 | |||
862 | <listitem> | ||
863 | <para>Select <emphasis role="bold">Run -> Debug | ||
864 | Configurations ...</emphasis> (scroll down if you don't see | ||
865 | the option at first glance) <emphasis role="bold">-> C/C++ | ||
866 | Postmortem Debugger</emphasis>.</para> | ||
867 | </listitem> | ||
868 | |||
869 | <listitem> | ||
870 | <para>Make sure the <literal>C/C++ Application</literal> field | ||
871 | refers to your project executable, and fill in the | ||
872 | <literal>Core file</literal> field with the path to the | ||
873 | downloaded core file.</para> | ||
874 | </listitem> | ||
875 | |||
876 | <listitem> | ||
877 | <para>Under the <emphasis role="bold">Debugger</emphasis> tab, | ||
878 | fill in the <literal>GDB Debugger</literal> field with the | ||
879 | path to the GDB binary from the SDK. Example path: | ||
880 | <filename><extsdkdir>/tmp/sysroots/x86_64-linux/usr/bin/<arch>-enea-linux/<arch>-enea-linux-gdb</filename></para> | ||
881 | </listitem> | ||
882 | |||
883 | <listitem> | ||
884 | <para>Click the <literal>Debug</literal> button. Eclipse | ||
885 | should switch into the <literal>Debug</literal> perspective | ||
886 | (if it hasn't already) and the debugging instance should break | ||
887 | somewhere inside the application. The call stack should be | ||
888 | observable in the console and should show a termination | ||
889 | message.</para> | ||
890 | </listitem> | ||
891 | </orderedlist></para> | ||
892 | </listitem> | ||
893 | </orderedlist> | ||
894 | </section> | ||
895 | </section> | ||
896 | |||
897 | <section id="eclipse_kern_debug"> | ||
898 | <title>Debugging the Linux Kernel in Eclipse</title> | ||
899 | |||
900 | <para>In this section you learn to set up Eclipse for KGDB<indexterm> | ||
901 | <primary>KGDB</primary> | ||
902 | </indexterm> kernel debugging over the serial port, with examples for | ||
903 | the <literal>raspberrypi3</literal> target. This is only given as an | ||
904 | example, your Enea Linux distribution may contain other targets. The | ||
905 | corresponding instruction for debugging outside Eclipse is available in | ||
906 | Debugging the Linux Kernel (KGDB) from Command Line.<remark>LATER: Merge | ||
907 | the two instructions to shrink the amount of text; most of it is the | ||
908 | same.</remark></para> | ||
909 | |||
910 | <para>How to set up Eclipse for KGDB kernel debugging over a serial | ||
911 | port:</para> | ||
912 | |||
913 | <orderedlist> | ||
914 | <listitem> | ||
915 | <para>Make sure that the cross-compilation toolchain<indexterm> | ||
916 | <primary>cross-compilation toolchain</primary> | ||
917 | </indexterm><indexterm> | ||
918 | <primary>toolchain</primary> | ||
919 | |||
920 | <secondary>cross-compilation</secondary> | ||
921 | </indexterm> (SDK<indexterm> | ||
922 | <primary>SDK</primary> | ||
923 | </indexterm>) is installed on the host, see <link | ||
924 | linkend="install_el_sdk">Installing Enea Linux SDK</link>.</para> | ||
925 | </listitem> | ||
926 | |||
927 | <listitem> | ||
928 | <para>Ensure that the kernel debug image | ||
929 | (<literal>vmlinux)</literal>is accessible on the host where you run | ||
930 | Eclipse, and that you have permissions to execute it. You will later | ||
931 | point to it in Eclipse.</para> | ||
932 | |||
933 | <para>If you are using the default kernel delivered with Enea Linux, | ||
934 | you can find it in the rootfs under the <literal>/boot</literal> | ||
935 | folder. If you build your own kernel using bitbake, it should be | ||
936 | available in your build folder. Located in, for example: | ||
937 | <filename><filename>tmp/work/raspberrypi3_64-enea-linux/linux-raspberrypi/1_4.9.59+gitAUTOINC+meta_machine-r0/image/boot/vmlinux-4.9.59</filename></filename></para> | ||
938 | </listitem> | ||
939 | |||
940 | <listitem> | ||
941 | <para>In Eclipse:</para> | ||
942 | |||
943 | <orderedlist> | ||
944 | <listitem> | ||
945 | <para>Optional: The Linux kernel has a considerable amount of | ||
946 | sources, and indexing the whole of it might take a lot of time. | ||
947 | Save time by disabling C/C++ project indexing:<orderedlist | ||
948 | spacing="compact"> | ||
949 | <listitem> | ||
950 | <para>Select <emphasis role="bold">Window > Preferences | ||
951 | > C/C++ > Indexer</emphasis>.</para> | ||
952 | </listitem> | ||
953 | |||
954 | <listitem> | ||
955 | <para>Unselect the <emphasis role="bold">Enable | ||
956 | indexer</emphasis> checkbox.</para> | ||
957 | </listitem> | ||
958 | </orderedlist></para> | ||
959 | </listitem> | ||
960 | |||
961 | <listitem> | ||
962 | <para>Create a project from the kernel tree:</para> | ||
963 | |||
964 | <orderedlist spacing="compact"> | ||
965 | <listitem> | ||
966 | <para>Select <emphasis role="bold">File > New > Project | ||
967 | > C/C++ > C project</emphasis>.</para> | ||
968 | </listitem> | ||
969 | |||
970 | <listitem> | ||
971 | <para>In the left panel, select <emphasis role="bold">Makefile | ||
972 | project > Empty project</emphasis>, and give the project a | ||
973 | name.</para> | ||
974 | </listitem> | ||
975 | |||
976 | <listitem> | ||
977 | <para>Unselect the <emphasis role="bold">Use default | ||
978 | location</emphasis> option.</para> | ||
979 | </listitem> | ||
980 | |||
981 | <listitem> | ||
982 | <para>Click <emphasis role="bold">Browse</emphasis> and | ||
983 | navigate to the location of the kernel sources (git | ||
984 | folder).</para> | ||
985 | </listitem> | ||
986 | |||
987 | <listitem> | ||
988 | <para>Click <emphasis role="bold">Finish</emphasis>.</para> | ||
989 | </listitem> | ||
990 | </orderedlist> | ||
991 | </listitem> | ||
992 | |||
993 | <listitem> | ||
994 | <para>Create a C/C++ GDB Hardware Debugging configuration:</para> | ||
995 | |||
996 | <orderedlist spacing="compact"> | ||
997 | <listitem> | ||
998 | <para>Go to <emphasis role="bold">Run -> Debug | ||
999 | Configurations</emphasis>.</para> | ||
1000 | </listitem> | ||
1001 | |||
1002 | <listitem> | ||
1003 | <para>Double-click <emphasis role="bold">GDB Hardware | ||
1004 | Debugging</emphasis>.</para> | ||
1005 | </listitem> | ||
1006 | </orderedlist> | ||
1007 | |||
1008 | <para>This will create a default configuration named | ||
1009 | <literal>project_name Default</literal>.</para> | ||
1010 | </listitem> | ||
1011 | |||
1012 | <listitem> | ||
1013 | <para>In the <emphasis role="bold">Main</emphasis> tab:</para> | ||
1014 | |||
1015 | <orderedlist spacing="compact"> | ||
1016 | <listitem> | ||
1017 | <para>Browse to the location of the | ||
1018 | <filename>vmlinux</filename> image. As an alternative, you may | ||
1019 | select a different project to debug, but if you followed the | ||
1020 | steps above you should not need to modify this.</para> | ||
1021 | </listitem> | ||
1022 | |||
1023 | <listitem> | ||
1024 | <para>Select the <emphasis role="bold">Disable auto | ||
1025 | build</emphasis> radio button.</para> | ||
1026 | </listitem> | ||
1027 | |||
1028 | <listitem> | ||
1029 | <para>At the bottom of the window, make sure <emphasis | ||
1030 | role="bold">GDB (DSF) Hardware Debugging Launcher</emphasis> | ||
1031 | is selected.</para> | ||
1032 | </listitem> | ||
1033 | </orderedlist> | ||
1034 | </listitem> | ||
1035 | |||
1036 | <listitem> | ||
1037 | <para>In the <emphasis role="bold">Debugger</emphasis> tab for | ||
1038 | <emphasis role="bold">C/C++ Application</emphasis>:</para> | ||
1039 | |||
1040 | <orderedlist spacing="compact"> | ||
1041 | <listitem> | ||
1042 | <para>Browse to the location of the <emphasis role="bold">GDB | ||
1043 | binary</emphasis> installed by the cross-compilation toolchain | ||
1044 | installer, by default: | ||
1045 | <filename><extsdkdir>/tmp/sysroots/x86_64-linux/usr/bin/<arch>-enea-linux/<arch>-enea-linux-gdb</filename>.</para> | ||
1046 | </listitem> | ||
1047 | |||
1048 | <listitem> | ||
1049 | <para>Select option <emphasis role="bold">Use remote | ||
1050 | target</emphasis>.</para> | ||
1051 | </listitem> | ||
1052 | |||
1053 | <listitem> | ||
1054 | <para>In the <emphasis role="bold">JTAG Device</emphasis>, | ||
1055 | select <emphasis role="bold">Generic Serial</emphasis> from | ||
1056 | the dropdown list.</para> | ||
1057 | </listitem> | ||
1058 | |||
1059 | <listitem> | ||
1060 | <para>In the <emphasis role="bold">GDB Connection | ||
1061 | String</emphasis> field, type the host's tty device used for | ||
1062 | the serial connection to the target, e.g. | ||
1063 | <literal>/dev/ttyUSB0</literal>.</para> | ||
1064 | </listitem> | ||
1065 | </orderedlist> | ||
1066 | </listitem> | ||
1067 | |||
1068 | <listitem> | ||
1069 | <para>In the <emphasis role="bold">Startup</emphasis> tab:</para> | ||
1070 | |||
1071 | <orderedlist spacing="compact"> | ||
1072 | <listitem> | ||
1073 | <para>Deselect the <emphasis role="bold">Load image</emphasis> | ||
1074 | option.</para> | ||
1075 | </listitem> | ||
1076 | |||
1077 | <listitem> | ||
1078 | <para>Select the <emphasis role="bold">Load symbols</emphasis> | ||
1079 | option.</para> | ||
1080 | </listitem> | ||
1081 | |||
1082 | <listitem> | ||
1083 | <para>Ensure that the <emphasis role="bold">Use project | ||
1084 | binary</emphasis> option defaults to your | ||
1085 | <literal>vmlinux</literal> image.</para> | ||
1086 | </listitem> | ||
1087 | |||
1088 | <listitem> | ||
1089 | <para>Click <emphasis role="bold">Apply</emphasis> to store | ||
1090 | the configurations above.</para> | ||
1091 | </listitem> | ||
1092 | </orderedlist> | ||
1093 | </listitem> | ||
1094 | </orderedlist> | ||
1095 | </listitem> | ||
1096 | |||
1097 | <listitem> | ||
1098 | <para>Prepare the target for KGDB debugging:</para> | ||
1099 | |||
1100 | <orderedlist> | ||
1101 | <listitem> | ||
1102 | <para>Configure a serial communication on the target, using the | ||
1103 | appropriate device for the target (e.g. <literal>ttyS0</literal> | ||
1104 | for <literal>p2020rdb</literal>, <literal>ttyS2</literal> for | ||
1105 | <literal>pandaboard</literal>, <literal>ttyPS0</literal> for | ||
1106 | <literal>zynq</literal>):</para> | ||
1107 | |||
1108 | <programlisting><command>echo ttyS0,115200 > /sys/module/kgdboc/parameters/kgdboc</command></programlisting> | ||
1109 | </listitem> | ||
1110 | |||
1111 | <listitem> | ||
1112 | <para>Start KGDB on the target SysRq:</para> | ||
1113 | |||
1114 | <programlisting><command>echo g > /proc/sysrq-trigger</command></programlisting> | ||
1115 | </listitem> | ||
1116 | |||
1117 | <listitem> | ||
1118 | <para>Keep the serial connection open, but close the terminal to | ||
1119 | the target.</para> | ||
1120 | </listitem> | ||
1121 | </orderedlist> | ||
1122 | </listitem> | ||
1123 | |||
1124 | <listitem> | ||
1125 | <para>Launch the debug session in Eclipse:</para> | ||
1126 | |||
1127 | <orderedlist spacing="compact"> | ||
1128 | <listitem> | ||
1129 | <para>Select <emphasis role="bold">Run > Debug | ||
1130 | Configurations</emphasis>.</para> | ||
1131 | </listitem> | ||
1132 | |||
1133 | <listitem> | ||
1134 | <para>Select the configuration created above.</para> | ||
1135 | </listitem> | ||
1136 | |||
1137 | <listitem> | ||
1138 | <para>Click the <emphasis role="bold">Debug</emphasis> | ||
1139 | button.</para> | ||
1140 | </listitem> | ||
1141 | </orderedlist> | ||
1142 | |||
1143 | <para>The target halts in function | ||
1144 | <literal>kgdb_breakpoint()</literal>. The GDB view opens in Eclipse, | ||
1145 | and from here you can debug the kernel by giving ordinary GDB commands | ||
1146 | (<command>resume</command>, <command>step</command>, <command>set | ||
1147 | breakpoint,</command> etc.).</para> | ||
1148 | </listitem> | ||
1149 | </orderedlist> | ||
1150 | </section> | ||
1151 | |||
1152 | <section id="workarounds"> | ||
1153 | <title>Workarounds</title> | ||
1154 | |||
1155 | <section id="troubleshoot_build_debug_config"> | ||
1156 | <title>Run/Debug Configuration Not Created</title> | ||
1157 | |||
1158 | <itemizedlist> | ||
1159 | <listitem> | ||
1160 | <para><emphasis role="bold">Description:</emphasis> When setting up | ||
1161 | <link linkend="eclipse_debug">Remote Debugging from Eclipse</link>, | ||
1162 | a run/debug configuration is not created when setting the | ||
1163 | cross-compiler options, thus there is nothing to select under | ||
1164 | <emphasis role="bold">C/C++ Remote Application</emphasis> in the | ||
1165 | first step.</para> | ||
1166 | </listitem> | ||
1167 | |||
1168 | <listitem> | ||
1169 | <para><emphasis role="bold">Solution:</emphasis> Manually create a | ||
1170 | run/debug configuration.</para> | ||
1171 | |||
1172 | <para>Perform the following steps:</para> | ||
1173 | |||
1174 | <orderedlist> | ||
1175 | <listitem> | ||
1176 | <para>Double-click the <emphasis role="bold">C/C++ Remote | ||
1177 | Application</emphasis>. This will create a new debug | ||
1178 | configuration named after your project.</para> | ||
1179 | </listitem> | ||
1180 | |||
1181 | <listitem> | ||
1182 | <para>In the <emphasis role="bold">Debugger</emphasis> tab, | ||
1183 | select a <emphasis role="bold">GDB debugger</emphasis> by | ||
1184 | browsing for and selecting the debugger of your | ||
1185 | cross-compilation toolchain, from your <emphasis | ||
1186 | role="bold">Sysroot Location</emphasis>. Example:</para> | ||
1187 | |||
1188 | <programlisting>$ <extsdkdir>/tmp/sysroots/x86_64-linux/usr/bin/\ | ||
1189 | <arch>-enea-linux/<arch>-enea-linux-gdb</programlisting> | ||
1190 | |||
1191 | <para>where <filename><sdkdir></filename> is e.g. | ||
1192 | <filename>/opt/enea/<sdkversion></filename>.</para> | ||
1193 | </listitem> | ||
1194 | |||
1195 | <listitem> | ||
1196 | <para>Outside Eclipse, create a new file named | ||
1197 | <filename>.gdbinit</filename> within your Eclipse workspace, | ||
1198 | under your project directory, e.g. <filename><path to | ||
1199 | workspace>/<project name>/.gdbinit</filename>, with the | ||
1200 | following command, using your <emphasis role="bold">Sysroot | ||
1201 | Location</emphasis>:</para> | ||
1202 | |||
1203 | <programlisting>$ set sysroot <extsdkdir>/sysroots</programlisting> | ||
1204 | </listitem> | ||
1205 | |||
1206 | <listitem> | ||
1207 | <para>Back in Eclipse in the <emphasis | ||
1208 | role="bold">Debugger</emphasis> tab, browse for the newly | ||
1209 | created <emphasis role="bold">.gdbinit</emphasis> file and | ||
1210 | select it under <emphasis role="bold">GDB command | ||
1211 | file</emphasis>.</para> | ||
1212 | </listitem> | ||
1213 | |||
1214 | <listitem> | ||
1215 | <para>Click <emphasis role="bold">Apply</emphasis>, then go back | ||
1216 | to the <emphasis role="bold">Main</emphasis> tab and continue | ||
1217 | with the remaining steps in the <emphasis role="bold">Remote | ||
1218 | Debugging</emphasis> section.</para> | ||
1219 | </listitem> | ||
1220 | </orderedlist> | ||
1221 | </listitem> | ||
1222 | </itemizedlist> | ||
1223 | </section> | ||
1224 | </section> | ||
1225 | </chapter> | ||
diff --git a/doc/book-enea-linux-user-guide/doc/using_enea_linux.xml b/doc/book-enea-linux-user-guide/doc/using_enea_linux.xml new file mode 100644 index 0000000..f22f6a2 --- /dev/null +++ b/doc/book-enea-linux-user-guide/doc/using_enea_linux.xml | |||
@@ -0,0 +1,806 @@ | |||
1 | <?xml version="1.0" encoding="ISO-8859-1"?> | ||
2 | <chapter id="using_enealinux"> | ||
3 | <title>Using Enea Linux</title> | ||
4 | |||
5 | <section id="build_enealinux"> | ||
6 | <title>Building Enea Linux</title> | ||
7 | |||
8 | <para>Enea Linux is made available as sources, this allows for of building | ||
9 | various Enea Linux artifacts and is detailed in the following | ||
10 | sections:</para> | ||
11 | |||
12 | <section id="build_images"> | ||
13 | <title>Building the images</title> | ||
14 | |||
15 | <para>Build Enea Linux images using the following steps:</para> | ||
16 | |||
17 | <procedure> | ||
18 | <step> | ||
19 | <para>Set the $MACHINE/<machine> variable to the target you | ||
20 | need, e.g. <literal>intel-corei7-64</literal>.</para> | ||
21 | </step> | ||
22 | |||
23 | <step> | ||
24 | <para>Clone Enea Linux sources using Repo tool. Please refer to | ||
25 | <xref linkend="getting_sources" /> for more details.</para> | ||
26 | |||
27 | <programlisting>$ mkdir enea-linux | ||
28 | $ cd enea-linux | ||
29 | $ repo init -u git@git.enea.com:linux/manifests/el_manifests-rt.git \ | ||
30 | -b refs/tags/Enea_Linux_8.0 -m $MACHINE/default.xml | ||
31 | $ repo sync</programlisting> | ||
32 | </step> | ||
33 | |||
34 | <step> | ||
35 | <para>Source the build environment</para> | ||
36 | |||
37 | <programlisting>$ cd poky | ||
38 | $ TEMPLATECONF=meta-el-rt/conf/template.<machine> \ | ||
39 | . ./oe-init-build-env <build_dir></programlisting> | ||
40 | |||
41 | <para>Sourcing the build environment is needed everytime a new shell | ||
42 | is used. However, sourcing using the <literal>TEMPLATECONF</literal> | ||
43 | is only needed the first time around. After the first time, it is | ||
44 | enough to source the build directory created before.</para> | ||
45 | |||
46 | <note> | ||
47 | <para>The build directory may reside on an NFS mount, but the | ||
48 | <literal>TMPDIR</literal> | ||
49 | (<literal><build_dir>/tmp</literal>) may not. Either build | ||
50 | all on a local disk, or update <literal>TMPDIR</literal> in | ||
51 | <literal>conf/local.conf</literal> to point to a local | ||
52 | disk.</para> | ||
53 | </note> | ||
54 | </step> | ||
55 | |||
56 | <step> | ||
57 | <para>Build Enea Linux image</para> | ||
58 | |||
59 | <programlisting># You have already initiated the build environment and are in the <build_dir> | ||
60 | $ bitbake <enea-image-name> | ||
61 | $ cd <build_dir>/tmp/deploy/images/<target>/ # Here are the build binaries</programlisting> | ||
62 | |||
63 | <note> | ||
64 | <para>Some builds have restrictions on the length of the path | ||
65 | name. If you get a build error indicating that the length is too | ||
66 | long, you need to move your build to obtain a shorter path.</para> | ||
67 | </note> | ||
68 | |||
69 | <para>Generated images are by default saved in | ||
70 | <literal><literal><build_dir>/tmp/deploy/images/<target></literal></literal>, | ||
71 | where <literal><build_dir></literal> by default is the current | ||
72 | working directory. Images are created for emulation on host or for | ||
73 | booting a physical target, according to how the build environment | ||
74 | was set up before running bitbake.</para> | ||
75 | |||
76 | <para>Depending on the number of processors and cores, the amount or | ||
77 | RAM, the speed of your Internet connection and other factors, the | ||
78 | build process can take several hours the first time you run it. | ||
79 | Subsequent builds run much faster since parts of the build are | ||
80 | cached.</para> | ||
81 | |||
82 | <note> | ||
83 | <para>Make sure that the user running the build has access to the | ||
84 | Git repositories on git.enea.com. The build process fetches | ||
85 | information from git.enea.com so the user running the build shall | ||
86 | have the ssh key properly configured. Please refer to <xref | ||
87 | linkend="getting_sources" /> for more details on how to get access | ||
88 | to Enea Linux sources.</para> | ||
89 | </note> | ||
90 | </step> | ||
91 | </procedure> | ||
92 | </section> | ||
93 | |||
94 | <section id="build_sdk"> | ||
95 | <title>Building the SDK</title> | ||
96 | |||
97 | <para>If you want to rebuild a cross-compilation toolchain to be used by | ||
98 | in application development, use the following steps:</para> | ||
99 | |||
100 | <procedure> | ||
101 | <step> | ||
102 | <para>Clone Enea Linux sources using Repo tool. Please refer to | ||
103 | <xref linkend="getting_sources" /> for more details on how to do | ||
104 | this.</para> | ||
105 | |||
106 | <programlisting>$ mkdir enea-linux | ||
107 | $ cd enea-linux | ||
108 | $ repo init -u git@git.enea.com:linux/manifests/el_manifests-rt.git \ | ||
109 | -b refs/tags/Enea_Linux_8.0 -m $MACHINE/default.xml | ||
110 | $ repo sync</programlisting> | ||
111 | </step> | ||
112 | |||
113 | <step> | ||
114 | <para>Source the build environment</para> | ||
115 | |||
116 | <programlisting>$ cd poky | ||
117 | $ TEMPLATECONF=meta-el-rt/conf/template.<machine> \ | ||
118 | . ./oe-init-build-env <build_dir></programlisting> | ||
119 | |||
120 | <para>Sourcing the build environment is needed everytime a new shell | ||
121 | is used. However, sourcing using the <literal>TEMPLATECONF</literal> | ||
122 | is only needed the first time around. Afterwards it is enough to | ||
123 | source the build directory created before.</para> | ||
124 | |||
125 | <note> | ||
126 | <para>The build directory may reside on an NFS mount, but the | ||
127 | <literal>TMPDIR</literal> | ||
128 | (<literal><build_dir>/tmp</literal>) may not. Either build | ||
129 | all on a local disk, or update TMPDIR in conf/local.conf to point | ||
130 | to a local disk.</para> | ||
131 | </note> | ||
132 | </step> | ||
133 | |||
134 | <step> | ||
135 | <para>Build Enea Linux SDK</para> | ||
136 | |||
137 | <programlisting># You have already initiated the build environment and are in the <build_dir> | ||
138 | $ bitbake <enea-image-name> -c populate_sdk_ext | ||
139 | $ cd <build_dir>/tmp/deploy/sdk/ # Here is the SDK installer script</programlisting> | ||
140 | |||
141 | <note> | ||
142 | <para>Some builds have restrictions on the length of the path | ||
143 | name. If you get a build error indicating that the length is too | ||
144 | long, you need to move your build to obtain a shorter path.</para> | ||
145 | </note> | ||
146 | |||
147 | <para>Generated SDK installer script is by default saved in | ||
148 | <literal><build_dir>/tmp/deploy/sdk</literal>, where | ||
149 | <literal><build_dir></literal> by default is the current | ||
150 | working directory.</para> | ||
151 | |||
152 | <para>Depending on the number of processors and cores, the amount or | ||
153 | RAM, the speed of your Internet connection and other factors, the | ||
154 | build process can take several hours the first time you run it. | ||
155 | Subsequent builds run much faster since parts of the build are | ||
156 | cached.</para> | ||
157 | |||
158 | <para>For more details on how to install and use the SDK, please | ||
159 | refer to <xref linkend="install_el_sdk" />.</para> | ||
160 | </step> | ||
161 | </procedure> | ||
162 | </section> | ||
163 | </section> | ||
164 | |||
165 | <section id="boot_enealinux"> | ||
166 | <title>Booting Enea Linux</title> | ||
167 | |||
168 | <para>Regardless whether you decide to use the pre-built images or if you | ||
169 | choose to build your own, the end result should be similar. Once you have | ||
170 | the artifacts availalbe, you may proceed to booting Enea Linux on | ||
171 | target.</para> | ||
172 | |||
173 | <para>Enea Linux supports multiple booting methods so those will be | ||
174 | described in the following sections.</para> | ||
175 | |||
176 | <section id="enea-linux-x86-pxe"> | ||
177 | <title>Boot via PXE using DHCP, TFTP, and NFS servers</title> | ||
178 | |||
179 | <para>Below you find an example of how to boot Enea Linux in a target | ||
180 | supporting PXE. The PXE boot is handled by the target BIOS.</para> | ||
181 | |||
182 | <para>This requires the setup of DHCP, TFTP and NFS servers on the host. | ||
183 | The DHCP server contains a configuration for the target, found via the | ||
184 | target MAC address, and refers to the TFTP server for the boot image and | ||
185 | to the NFS server for the root file system.</para> | ||
186 | |||
187 | <para>For the DHCP server, in addition to the general configuration, the | ||
188 | DHCPD configuration should contain an entry for the target with the | ||
189 | following information:</para> | ||
190 | |||
191 | <itemizedlist spacing="compact"> | ||
192 | <listitem> | ||
193 | <para>Host name</para> | ||
194 | </listitem> | ||
195 | |||
196 | <listitem> | ||
197 | <para>MAC hardware ethernet address (also available in the TFTP | ||
198 | configuration)</para> | ||
199 | </listitem> | ||
200 | |||
201 | <listitem> | ||
202 | <para>IP address, (assuming a fixed IP address is used)</para> | ||
203 | </listitem> | ||
204 | |||
205 | <listitem> | ||
206 | <para>The TFTP server shall be defined as | ||
207 | <literal>next-server</literal></para> | ||
208 | </listitem> | ||
209 | |||
210 | <listitem> | ||
211 | <para>The relative path in the TFTP server to the PXE file | ||
212 | <filename><literal>pxelinux.0</literal></filename></para> | ||
213 | </listitem> | ||
214 | |||
215 | <listitem> | ||
216 | <para>The NFS server IP address and the path to the rootfs on the | ||
217 | NFS server, defined as <literal>option root-path</literal></para> | ||
218 | </listitem> | ||
219 | </itemizedlist> | ||
220 | |||
221 | <para>Example of a DHCP server configuration:</para> | ||
222 | |||
223 | <programlisting>host intel-corei7-64_host { | ||
224 | hardware ethernet 01:00:25:90:c8:c5:98; | ||
225 | fixed-address 192.168.1.38; | ||
226 | next-server 192.168.2.10; | ||
227 | filename "intel-corei7-64_tftp/pxelinux.0"; | ||
228 | option root-path "192.168.2.20:/export/intel-corei7-64_rootfs"; | ||
229 | }</programlisting> | ||
230 | |||
231 | <para>For the TFTP server, the TFTP path to the target's pxelinux.0 file | ||
232 | is given in the DHCP Configuration. Examples of files included in the | ||
233 | TFTP subdirectory indicated by the DHCP configuration are:</para> | ||
234 | |||
235 | <programlisting>pxelinux.0 | ||
236 | vesamenu.c32 | ||
237 | boot/device01/bzImage (bootable image file) | ||
238 | pxelinux.cfg/01-00-25-90-c8-c5-98 (Configuration file)</programlisting> | ||
239 | |||
240 | <para>One configuration file has the same name as the target's MAC | ||
241 | address (but with hyphens instead of a colon). This configuration file | ||
242 | contains a pointer to the bootable image and also a list of command line | ||
243 | arguments to append when the image is started. The same NFS path to the | ||
244 | root file system is both in the DHCP and the TFTP configuration.</para> | ||
245 | |||
246 | <para>Example of a configuration file:</para> | ||
247 | |||
248 | <programlisting>default vesamenu.c32 | ||
249 | prompt 0 | ||
250 | timeout 100 | ||
251 | |||
252 | label device01 | ||
253 | menu label ^EneaLinuxNFS | ||
254 | menu default | ||
255 | kernel boot/device01/bzImage | ||
256 | <emphasis role="bold">append</emphasis> root=/dev/nfs nfsmount=192.168.2.20:/export/intel-corei7-64_rootfs ip=dhcp | ||
257 | console=ttyS0,115200</programlisting> | ||
258 | |||
259 | <para><emphasis role="bold">NFS server</emphasis>: The NFS server shall | ||
260 | contain an unpacked root file system in the path indicated both in the | ||
261 | DHCP and in the TFTP configuration.</para> | ||
262 | |||
263 | <para>After configuring the servers, copy files from the build directory | ||
264 | into the correctly configured paths:</para> | ||
265 | |||
266 | <orderedlist spacing="compact"> | ||
267 | <listitem> | ||
268 | <para>Ensure the target is not already running an OS, otherwise the | ||
269 | target might attempt to change files on the root file system while | ||
270 | it is populated with new files.</para> | ||
271 | </listitem> | ||
272 | |||
273 | <listitem> | ||
274 | <para>Copy <filename>pxelinux.0</filename> and | ||
275 | <filename>vesamenu.c32</filename> from the build directory, e.g. | ||
276 | from | ||
277 | <filename><build_dir>tmp/work/corei7-64-enea-linux/syslinux/6.03-r0/image/usr/share/syslinux/</filename>.</para> | ||
278 | </listitem> | ||
279 | |||
280 | <listitem> | ||
281 | <para>Copy <filename>bzImage</filename> from | ||
282 | <filename><build_dir>/tmp/deploy/images/<target>/</filename>.</para> | ||
283 | </listitem> | ||
284 | |||
285 | <listitem> | ||
286 | <para>Populate the root file system in the NFS directory by | ||
287 | unpacking | ||
288 | <filename>enea-image-rt-intel-corei7-64.tar.gz</filename> | ||
289 | found at | ||
290 | <filename><build_dir>/tmp/deploy/images/<target>/</filename>.</para> | ||
291 | </listitem> | ||
292 | </orderedlist> | ||
293 | |||
294 | <para>Boot the target by:</para> | ||
295 | |||
296 | <orderedlist> | ||
297 | <listitem> | ||
298 | <para>Use the BIOS or boot setup to select PXE boot, if not already | ||
299 | selected.</para> | ||
300 | </listitem> | ||
301 | |||
302 | <listitem> | ||
303 | <para>Reboot the target.</para> | ||
304 | </listitem> | ||
305 | </orderedlist> | ||
306 | |||
307 | <para>The boot setup menu is usually launched by pressing F12 or ESC | ||
308 | during BIOS power up tests. Look up the manufacturer's documentation for | ||
309 | your board model to find the appropriate key.</para> | ||
310 | </section> | ||
311 | </section> | ||
312 | |||
313 | <section id="custom_enealinux"> | ||
314 | <title>Customizing Enea Linux</title> | ||
315 | |||
316 | <section id="layers_adaptations"> | ||
317 | <title>Layers and Adaptations</title> | ||
318 | |||
319 | <para>Bitbake allows a modular approach of Metadata, by building images | ||
320 | for the layers listed in the conf/bblayers.conf file from your build | ||
321 | directory.</para> | ||
322 | |||
323 | <para>To avoid polluting the build with unnecessary packages, before | ||
324 | adding a new layer, it is recommended to check if the Metadata you need | ||
325 | is already available in the enabled layers, in which case, for the | ||
326 | intended configuration, it may require less modification.</para> | ||
327 | |||
328 | <para>To ease further use of the layer, try to follow as many best | ||
329 | practices as possible when creating it:</para> | ||
330 | |||
331 | <itemizedlist> | ||
332 | <listitem> | ||
333 | <para>Use names starting with the meta prefix (although this is not | ||
334 | a requirement)</para> | ||
335 | </listitem> | ||
336 | </itemizedlist> | ||
337 | |||
338 | <itemizedlist> | ||
339 | <listitem> | ||
340 | <para>Place your layer under poky</para> | ||
341 | </listitem> | ||
342 | </itemizedlist> | ||
343 | |||
344 | <itemizedlist> | ||
345 | <listitem> | ||
346 | <para>Isolate different customizations by layer</para> | ||
347 | </listitem> | ||
348 | </itemizedlist> | ||
349 | |||
350 | <itemizedlist> | ||
351 | <listitem> | ||
352 | <para>Assign the layer to a repository (to easily have access to | ||
353 | maintenance)</para> | ||
354 | </listitem> | ||
355 | </itemizedlist> | ||
356 | |||
357 | <para>To enable a layer, its top path must be specified in the | ||
358 | <filename>BBLAYERS</filename> variable, as follows:</para> | ||
359 | |||
360 | <programlisting># POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf | ||
361 | # changes incompatibly | ||
362 | POKY_BBLAYERS_CONF_VERSION = "2" | ||
363 | |||
364 | BBPATH = "${TOPDIR}" | ||
365 | BBFILES ?= "" | ||
366 | |||
367 | BBLAYERS ?= " \ | ||
368 | /path/to/poky/meta \ | ||
369 | /path/to/poky/meta-el-common \ | ||
370 | /path/to/poky/meta-el-rt \ | ||
371 | /path/to/poky/meta-enea-bsp-common \ | ||
372 | /path/to/poky/meta-enea-bsp-x86 \ | ||
373 | /path/to/poky/meta-openembedded/meta-oe \ | ||
374 | /path/to/poky/meta-openembedded/meta-networking \ | ||
375 | /path/to/poky/meta-openembedded/meta-filesystems \ | ||
376 | /path/to/poky/meta-openembedded/meta-python \ | ||
377 | /path/to/poky/meta-poky \ | ||
378 | /path/to/poky/meta-<layer> \ | ||
379 | "</programlisting> | ||
380 | |||
381 | <para>Before adding an extra layer, please keep in mind that the order | ||
382 | of layers is important (due to BitBake parsing conf/layer.conf as | ||
383 | specified in <filename>BBLAYERS</filename>). To add an extra layer, you | ||
384 | can modify the <filename>build/conf/bblayers.conf</filename> file in the | ||
385 | source code editor you prefer, as described above, or use one of the | ||
386 | specially designed Yocto tools.</para> | ||
387 | |||
388 | <para>To do such, you can simply modify the build/conf/bblayers.conf | ||
389 | file in the source code editor you prefer, as described above, or use | ||
390 | one of the specially designed Yocto tools.</para> | ||
391 | |||
392 | <para>For instance, in addition to the above, the Yocto Bitbake layers | ||
393 | utility ensures a very useful checking of some basic layer requirements. | ||
394 | Bitbake layers are available, as most of the BitBake tools, when | ||
395 | sourcing oe-init-build-env. Therefore, to enable a custom meta layer, | ||
396 | you should simply run the following from the build directory:</para> | ||
397 | |||
398 | <programlisting>bitbake-layers add-layer <meta-layer></programlisting> | ||
399 | |||
400 | <para>If the specified layer doesn't contain a | ||
401 | <filename>conf/layer.conf</filename> file, you should add one with the | ||
402 | needed configuration. Also, to make sure the layer insertion is done in | ||
403 | the right metadata, the utility looks for the bblayers.conf | ||
404 | configuration file in the corresponding path, which should be satisfied | ||
405 | if running the command from the generated build directory.</para> | ||
406 | |||
407 | <para>For further information on this or on other utilities belonging to | ||
408 | the same suite, run:</para> | ||
409 | |||
410 | <programlisting>bitbake-layers -h</programlisting> | ||
411 | |||
412 | <para>As a result, <filename>BBLAYERS</filename> shall be extended with | ||
413 | the bsp-layer/s layer for your target and any other additional layer/s. | ||
414 | For details on how to do this, see the <ulink | ||
415 | url="http://www.yoctoproject.org/docs/2.5/dev-manual/dev-manual.html#understanding-and-creating-layers">Yocto | ||
416 | 2.5 Dev Manual, section "Understanding and Creating Layers".</ulink> If | ||
417 | needed replace the Yocto version.</para> | ||
418 | |||
419 | <para>Layers can be added when you initialize the build environment. The | ||
420 | layers required for each target are specified in the build commands in | ||
421 | the Enea Linux distribution's Release Information.</para> | ||
422 | |||
423 | <para>Each Enea Linux customer is advised to add a custom layer for | ||
424 | customer-specific additions and customizations, instead of modifying | ||
425 | existing layers.</para> | ||
426 | |||
427 | <para>The recommended way to modify a package is to edit directly in the | ||
428 | recipe file. Utilizing the devshell, <literal>bitbake -c devshell | ||
429 | <image_name></literal>, when constructing or modifying recipes is | ||
430 | really handy when experimenting, but do not forget to make the final | ||
431 | updates directly in the recipe file. It is difficult to keep track of | ||
432 | exactly what in the user environment is "dirty" and not in sync with | ||
433 | current recipes. Therefore, always make sure to <literal>bitbake -c | ||
434 | clean <image_name></literal> after finishing up a devshell | ||
435 | session, and adapt recipes accordingly to ensure a shareable and | ||
436 | repeatable build environment.</para> | ||
437 | </section> | ||
438 | |||
439 | <section id="add_recipe"> | ||
440 | <title>Adding a Recipe</title> | ||
441 | |||
442 | <para>Study the <ulink | ||
443 | url="https://www.yoctoproject.org/docs/2.5/dev-manual/dev-manual.html#new-recipe-single-c-file-package-hello-world"><ulink | ||
444 | url="https://www.yoctoproject.org/docs/2.5/dev-manual/dev-manual.html#new-recipe-single-c-file-package-hello-world">Hello | ||
445 | World recipe</ulink></ulink> in the Yocto Project Development Manual. If | ||
446 | needed replace the example version (2.5) with the Yocto version in your | ||
447 | Enea Linux distribution.</para> | ||
448 | </section> | ||
449 | |||
450 | <section id="config_pkg_recipes"> | ||
451 | <title>Configuring Packages via Recipes</title> | ||
452 | |||
453 | <para>The default configuration produces a standard Linux installation, | ||
454 | but it is often desirable to configure specific packages in more detail. | ||
455 | Different packages implement their configuration in different ways, and | ||
456 | there is no single method that is valid for all packages. As always, in | ||
457 | a collaborative development environment, the developer should make sure | ||
458 | that the recipes in the custom layer are upgraded accordingly when a | ||
459 | reconfiguration of a specific package is done.</para> | ||
460 | |||
461 | <para>In subsequent sections you find examples on how to configure some | ||
462 | common packages.</para> | ||
463 | |||
464 | <section id="linux_kern"> | ||
465 | <title>The Linux Kernel</title> | ||
466 | |||
467 | <para>The Linux kernel provides a vast array of configuration options, | ||
468 | managed using its own configuration system. The kernel package can be | ||
469 | supplied from different providers, and this example uses the | ||
470 | virtual/kernel package name to refer to the kernel used in the | ||
471 | build:</para> | ||
472 | |||
473 | <programlisting>$ bitbake -c menuconfig virtual/kernel</programlisting> | ||
474 | |||
475 | <note> | ||
476 | <para>menuconfig requires Ncurses. If the terminal that pops up | ||
477 | immediately closes instead of showing the menuconfig interface, | ||
478 | check that the Ncurses development library is installed.</para> | ||
479 | </note> | ||
480 | |||
481 | <para>First build the kernel:</para> | ||
482 | |||
483 | <programlisting>$ bitbake -f -c compile -c install -c deploy virtual/kernel</programlisting> | ||
484 | |||
485 | <para>Then build the whole distribution:</para> | ||
486 | |||
487 | <programlisting>$ bitbake enea-image-<name></programlisting> | ||
488 | </section> | ||
489 | |||
490 | <section id="busybox"> | ||
491 | <title>Busybox</title> | ||
492 | |||
493 | <para>Busybox uses the same configuration system as the Linux kernel | ||
494 | and is therefore invoked similarly. In contrast to the kernel, there | ||
495 | is generally only one variant of busybox in a distribution and we can | ||
496 | therefore refer to it by the package name alone:</para> | ||
497 | |||
498 | <programlisting>$ bitbake -c menuconfig busybox</programlisting> | ||
499 | </section> | ||
500 | </section> | ||
501 | |||
502 | <section id="build_com_licenses"> | ||
503 | <title>Building with Commercial Licenses</title> | ||
504 | |||
505 | <note> | ||
506 | <para>Adding commercial-licensed packages might pose distribution | ||
507 | problems due to license agreements or patents.</para> | ||
508 | </note> | ||
509 | |||
510 | <para>Commercial-licensed packages are not provided with Enea Linux. | ||
511 | Depending on your use case, you might need to extend the initial image | ||
512 | with more packages by adding recipes and updating the image definition, | ||
513 | always in accordance with the license conditions. To succeed with | ||
514 | building the customized image, you might need to solve dependencies by | ||
515 | adding even more packages.</para> | ||
516 | |||
517 | <para>Below is an example with steps on how to add a package with a | ||
518 | commercial license. The configuration is updated in two places and the | ||
519 | recipes are selected for the packages and any dependencies.</para> | ||
520 | |||
521 | <note> | ||
522 | <para>This is only an illustrating example, the exact configuration | ||
523 | may differ between different packages. Some packages could require | ||
524 | other defines added to local.conf and some packages might need an | ||
525 | added <filename>DEPENDS</filename> in the *.inc file, or other | ||
526 | particular changes.</para> | ||
527 | </note> | ||
528 | |||
529 | <itemizedlist> | ||
530 | <listitem> | ||
531 | <para>Append the package name to the | ||
532 | <filename>IMAGE_INSTALL</filename> definition, used in the recipe | ||
533 | corresponding to the image you will build, as in one of the examples | ||
534 | below:</para> | ||
535 | |||
536 | <orderedlist> | ||
537 | <listitem> | ||
538 | <para>If you need the package in a set of images, to avoid | ||
539 | defining it in each recipe, add the following line to | ||
540 | <filename>IMAGE_INSTALL</filename> in | ||
541 | <filename>meta-el-common/images/enea-image-common.inc</filename></para> | ||
542 | |||
543 | <programlisting> package_name \</programlisting> | ||
544 | </listitem> | ||
545 | |||
546 | <listitem> | ||
547 | <para>If you have specific images in which you need the package, | ||
548 | add the following line in the corresponding recipes in | ||
549 | meta-el-<profile>/images/enea-image-<profile>.bb</para> | ||
550 | |||
551 | <programlisting> IMAGE_INSTALL += " \ | ||
552 | package_name \ | ||
553 | "</programlisting> | ||
554 | </listitem> | ||
555 | </orderedlist> | ||
556 | </listitem> | ||
557 | |||
558 | <listitem> | ||
559 | <para>Add the required license to the | ||
560 | <filename>LICENSE_FLAGS_WHITELIST</filename> definition. This can be | ||
561 | done by adding script lines in the corresponding | ||
562 | scripts/conf_setup.sh file, which appends | ||
563 | <filename>LICENSE_FLAGS_WHITELIST += | ||
564 | "<suitable-license></filename> to | ||
565 | <filename>conf/local.conf.</filename></para> | ||
566 | </listitem> | ||
567 | |||
568 | <listitem> | ||
569 | <para>To mitigate the build errors caused by packages with | ||
570 | commercial licenses, you might also need to append the generic | ||
571 | license <filename>LICENSE_FLAGS_WHITELIST += "commercial"</filename> | ||
572 | in the same way as above.</para> | ||
573 | </listitem> | ||
574 | |||
575 | <listitem> | ||
576 | <para>Select the needed recipes for the packages and add these to | ||
577 | the build configuration.</para> | ||
578 | </listitem> | ||
579 | |||
580 | <listitem> | ||
581 | <para>Select the needed recipes to resolve dependencies for the new | ||
582 | packages and add these to the build configuration.</para> | ||
583 | </listitem> | ||
584 | </itemizedlist> | ||
585 | |||
586 | <para>More information about recipes can be found here:</para> | ||
587 | |||
588 | <itemizedlist> | ||
589 | <listitem> | ||
590 | <para><ulink | ||
591 | url="http://git.openembedded.org/">http://git.openembedded.org/</ulink></para> | ||
592 | </listitem> | ||
593 | </itemizedlist> | ||
594 | |||
595 | <itemizedlist> | ||
596 | <listitem> | ||
597 | <para><ulink | ||
598 | url="https://wiki.yoctoproject.org/wiki/Building_your_own_recipes_from_first_principles">https://wiki.yoctoproject.org/wiki/Building_your_own_recipes_from_first_principles</ulink></para> | ||
599 | </listitem> | ||
600 | </itemizedlist> | ||
601 | |||
602 | <itemizedlist> | ||
603 | <listitem> | ||
604 | <para><ulink | ||
605 | url="http://www.yoctoproject.org/docs/current/dev-manual/dev-manual.html#new-recipe-writing-a-new-recipe">http://www.yoctoproject.org/docs/current/dev-manual/dev-manual.html#new-recipe-writing-a-new-recipe</ulink></para> | ||
606 | </listitem> | ||
607 | </itemizedlist> | ||
608 | </section> | ||
609 | </section> | ||
610 | |||
611 | <section id="install_el_sdk"> | ||
612 | <title>Installing the Enea Linux SDK</title> | ||
613 | |||
614 | <para>Before cross-compiling applications for your target, you need to | ||
615 | install the Software Development Kit (SDK) - which contains the | ||
616 | cross-compilation toolchain - and set up the cross-compilation environment | ||
617 | on your host. The toolchain for each supported target contains a 64-bit | ||
618 | library for gcc. The toolchain and the environment-setup script are | ||
619 | wrapped together inside a toolchain installer in the form of a shell | ||
620 | script.</para> | ||
621 | |||
622 | <para>The cross-compilation toolchain is packaged as follows:</para> | ||
623 | |||
624 | <itemizedlist> | ||
625 | <listitem> | ||
626 | <para>The <target> toolchain contains the lib64 (64-bit) | ||
627 | library.</para> | ||
628 | </listitem> | ||
629 | |||
630 | <listitem> | ||
631 | <para>The <target> installer has an environment-setup script | ||
632 | which will select the lib64 to be used by gcc. This way, a 64-bit | ||
633 | application can be cross-compiled.</para> | ||
634 | </listitem> | ||
635 | </itemizedlist> | ||
636 | |||
637 | <para>Do as in the example below to install the SDK and set up the | ||
638 | cross-compilation environment:</para> | ||
639 | |||
640 | <orderedlist> | ||
641 | <listitem> | ||
642 | <para>The fastest alternative is to use a precompiled | ||
643 | cross-compilation toolchain installer for your host and target.</para> | ||
644 | |||
645 | <para>Please refer to the Release Information document, in section 1.1 | ||
646 | Provided Contents, for more details on where to find the pre-compiled | ||
647 | SDK installer.</para> | ||
648 | </listitem> | ||
649 | |||
650 | <listitem> | ||
651 | <para>Run the installer to unpack the cross-compilation toolchain and | ||
652 | the environment-setup script:</para> | ||
653 | |||
654 | <programlisting>$ chmod 770 enea-*-toolchain-<version>.sh | ||
655 | $ ./enea-*-toolchain-<version>.sh</programlisting> | ||
656 | |||
657 | <para>When prompted, select to install the SDK in the desired | ||
658 | directory, referred to as <sdkdir>. The default path where the | ||
659 | SDK will be installed, will be shown in the prompt. The installer | ||
660 | unpacks the environment setup script in <sdkdir> and the | ||
661 | toolchain under <sdkdir>/sysroots.</para> | ||
662 | |||
663 | <note> | ||
664 | <para>Choose a unique directory for each toolchain. Installing a | ||
665 | second toolchain of any type (buildtools toolchain or | ||
666 | cross-compilation toolchain) in the same directory as a previously | ||
667 | installed one will break the $PATH variable of the first one.</para> | ||
668 | </note> | ||
669 | </listitem> | ||
670 | |||
671 | <listitem> | ||
672 | <para>Setup the toolchain environment for your target by sourcing the | ||
673 | environment-setup script:</para> | ||
674 | |||
675 | <programlisting>$ . <sdkdir>/environment-setup-<arch>-enea-linux</programlisting> | ||
676 | |||
677 | <para>Example:</para> | ||
678 | |||
679 | <programlisting>$ . /opt/enea/environment-setup-corei7-64-enea-linux</programlisting> | ||
680 | </listitem> | ||
681 | </orderedlist> | ||
682 | |||
683 | <para>Once the cross-compilation toolchain is in place and the environment | ||
684 | set up, you can proceed with Cross-Compiling Applications from Command | ||
685 | Line (4.1) or, if Eclipse is installed, Cross-Compiling from Eclipse | ||
686 | (5.4.1).</para> | ||
687 | </section> | ||
688 | |||
689 | <section id="pkg_mg"> | ||
690 | <title>Using Package Management</title> | ||
691 | |||
692 | <para>A Package Management System (PMS) can be used to customize your | ||
693 | image in a consistent way, e.g. to install, upgrade, or delete packages | ||
694 | considering the dependencies. The package management systems supported by | ||
695 | Enea Linux are described in this section. More information about PMS can | ||
696 | be found in the Yocto 2.5 document <ulink | ||
697 | url="http://www.yoctoproject.org/docs/2.5/mega-manual/mega-manual.html">Yocto | ||
698 | Project Mega Manual</ulink>. If needed replace the Yocto version in the | ||
699 | link.</para> | ||
700 | |||
701 | <section id="apt_pktmgmt"> | ||
702 | <title>APT Package Management (DEB Packages)</title> | ||
703 | |||
704 | <para>Enea Linux provides DEB packages on <ulink | ||
705 | url="http://linux.enea.com/EneaLinux8.0/">linux.enea.com</ulink> site, | ||
706 | in directory | ||
707 | <literal><literal><release>/<target>/deb</literal>/</literal>.</para> | ||
708 | |||
709 | <para>The application for performing runtime package management of DEB | ||
710 | packages on the target is called <filename>apt-get</filename>.</para> | ||
711 | |||
712 | <para>Use the <literal>apt-get</literal> command to install, upgrade, or | ||
713 | remove packages. Before using any apt-get options that require network | ||
714 | access, please check that the network is configured and working | ||
715 | properly.</para> | ||
716 | |||
717 | <para>The <literal>apt-get</literal> command is by default included in | ||
718 | Enea Linux images.</para> | ||
719 | |||
720 | <section id="apt_config"> | ||
721 | <title>Configuring</title> | ||
722 | |||
723 | <para>APT relies on the concept of repositories in order to find | ||
724 | packages and resolve dependencies.</para> | ||
725 | |||
726 | <para>Any number of additional repositories can be added to APT's | ||
727 | configuration files (.list extension) located in sources.list.d | ||
728 | directory (e.g: | ||
729 | <filename>/etc/apt/sources.list.d/repos.list</filename>) and then be | ||
730 | queried by APT.</para> | ||
731 | |||
732 | <programlisting># touch /etc/apt/sources.list.d/repos.list | ||
733 | # echo "deb [trusted=yes] http://server-address/path/to/the/package/directory ./" | \ | ||
734 | tee -a /etc/apt/sources.list.d/repos.list</programlisting> | ||
735 | |||
736 | <para>Run <literal>apt-get update</literal> to fetch information from | ||
737 | the new repository:</para> | ||
738 | |||
739 | <programlisting># apt-get update</programlisting> | ||
740 | </section> | ||
741 | |||
742 | <section id="apt_install"> | ||
743 | <title>Installing</title> | ||
744 | |||
745 | <para>DEB packages typically have file names like | ||
746 | foo-1.0.1-r0.0_arm64.deb The file name includes the package name | ||
747 | (foo), version (1.0.1), revison (r0.0), and architecture (arm64). To | ||
748 | install a package, log in as root and type the following command at a | ||
749 | shell prompt:</para> | ||
750 | |||
751 | <programlisting># apt-get install foo</programlisting> | ||
752 | |||
753 | <para>The <literal>apt-get install</literal> command will install one | ||
754 | or more packages in the system.</para> | ||
755 | </section> | ||
756 | |||
757 | <section id="apt_upgrade"> | ||
758 | <title>Upgrading</title> | ||
759 | |||
760 | <para>The <literal>apt-get upgrade</literal> command will upgrade one | ||
761 | or more packages which are currently installed in the system. If no | ||
762 | packages are given, all installed packages will be checked.</para> | ||
763 | |||
764 | <programlisting># apt-get upgrade foo</programlisting> | ||
765 | </section> | ||
766 | |||
767 | <section id="apt_rm"> | ||
768 | <title>Removing</title> | ||
769 | |||
770 | <para>The <literal>apt-get remove</literal> command will remove one or | ||
771 | more packages which are currently installed in the system. | ||
772 | Example:</para> | ||
773 | |||
774 | <programlisting># apt-get remove ptest-runner | ||
775 | Reading package lists... Done | ||
776 | Building dependency tree | ||
777 | Reading state information... Done | ||
778 | The following packages were automatically installed and are no longer required: | ||
779 | libc6-dbg libc6-dev libc6-extra-nss libc6-thread-db libcidn1 | ||
780 | linux-libc-headers-dev | ||
781 | Use 'apt autoremove' to remove them. | ||
782 | The following packages will be REMOVED: | ||
783 | ptest-runner | ||
784 | 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. | ||
785 | After this operation, 0 B of additional disk space will be used. | ||
786 | Do you want to continue? [Y/n] y | ||
787 | (Reading database ... 5766 files and directories currently installed.) | ||
788 | Removing ptest-runner (2.0.2+git0+6d2872116c-r0.0) ... | ||
789 | </programlisting> | ||
790 | </section> | ||
791 | |||
792 | <section id="pm_searching"> | ||
793 | <title>Searching</title> | ||
794 | |||
795 | <para>The <literal>apt-cache search</literal> allows searching for the | ||
796 | given expressions in the name, summary and description of known | ||
797 | packages. Example:</para> | ||
798 | |||
799 | <programlisting># apt-cache search ptest-runner | ||
800 | ptest-runner - A C program to run all installed ptests | ||
801 | ptest-runner-dbg - A C program to run all installed ptests - Debugging files | ||
802 | ptest-runner-dev - A C program to run all installed ptests - Development files</programlisting> | ||
803 | </section> | ||
804 | </section> | ||
805 | </section> | ||
806 | </chapter> | ||