[FE training-materials-updates] Boot time slides: improve bootloader section
Michael Opdenacker
michael.opdenacker at free-electrons.com
Mon Apr 21 18:34:45 CEST 2014
Repository : git://git.free-electrons.com/training-materials.git
On branch : master
Link : http://git.free-electrons.com/training-materials/commit/?id=2ace3cf195cb5cc076466d368ec7308042ea0c1b
>---------------------------------------------------------------
commit 2ace3cf195cb5cc076466d368ec7308042ea0c1b
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date: Mon Apr 21 18:32:55 2014 +0200
Boot time slides: improve bootloader section
- Document U-Boot optimization techniques
- Add some subsections for clarity
- Misc improvements
Signed-off-by: Michael Opdenacker <michael.opdenacker at free-electrons.com>
>---------------------------------------------------------------
2ace3cf195cb5cc076466d368ec7308042ea0c1b
slides/boottime-bootloader/boottime-bootloader.tex | 163 +++++++++++--
.../u-boot-kernel-loading-no-memmove.svg | 239 ++++++++++++++++++++
.../boottime-bootloader/u-boot-kernel-loading.svg | 233 +++++++++++++++++++
3 files changed, 614 insertions(+), 21 deletions(-)
diff --git a/slides/boottime-bootloader/boottime-bootloader.tex b/slides/boottime-bootloader/boottime-bootloader.tex
index 7b5f3ae..7c177c3 100644
--- a/slides/boottime-bootloader/boottime-bootloader.tex
+++ b/slides/boottime-bootloader/boottime-bootloader.tex
@@ -1,24 +1,139 @@
\section{Bootloader optimizations}
+
\begin{frame}
\frametitle{Bootloader}
-Usually, bootloaders include many features needed only for
-development.
\begin{itemize}
- \item There may be different bootloaders for your board. Try
- those!
- \item Assess what features you really need. Do you need to
- upgrade from the bootloader?
- \item Remove the boot delay! For \code{u-boot}, then have a look
- at the \code{CONFIG_ZERO_BOOTDELAY_CHECK} option, documented in
- \code{doc/README.autoboot} that will allow you to still enter
- the bootloader shell.
- \item Maybe you can skip the bootloader (AT91 example:
- \url{http://free-electrons.com/blog/starting-linux-directly-from-at91bootstrap3/}).
+
+\item Remove unnecessary functionality.\\
+ Usually, bootloaders include many features needed only for
+ development. Compile your bootloader with less features.
+\item Optimize required functionality.\\
+ Tune your bootloader for fastest performance. \\
+ Switch to another bootloader (if available) \\
+ Skip the bootloader and load the kernel right away.
\end{itemize}
\end{frame}
+\subsection{U-Boot optimizations}
+
\begin{frame}
-\frametitle{Results}
+\frametitle{U-Boot - Remove unnecessary functionality}
+Recompile U-Boot to remove features not needed in production
+\begin{itemize}
+\item Disable as many features as possible
+ in \code{include/configs/<soc>-<board>.h}
+\item Examples: MMC, USB, Ethernet, dhcp, ping, command line edition,
+ command completion...
+\item A smaller and simpler U-Boot is faster to load and faster
+ to initialize.
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{U-Boot - Remove the boot delay}
+\begin{itemize}
+\item Remove the boot delay:\\
+ \code{setenv bootdelay 0}
+\item This usually saves several seconds!
+\item Before you do that, recompile U-Boot with
+ \code{CONFIG_ZERO_BOOTDELAY_CHECK}, documented in
+ \code{doc/README.autoboot}. It allows to stop the autoboot
+ process by hitting a key even if the boot delay is set to
+ \code{0}.
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{U-Boot - Optimize kernel loading}
+\begin{itemize}
+\item After copying the kernel \code{uImage} to RAM,
+ U-Boot always moves it to the load address specified
+ in the \code{uImage} header.
+\item A CRC check is also performed.
+\end{itemize}
+\begin{center}
+ \includegraphics[width=\textwidth]{slides/boottime-bootloader/u-boot-kernel-loading.pdf}
+\end{center}
+\end{frame}
+
+\begin{frame}
+\frametitle{U-Boot - Remove unnecessary memmove (1)}
+\begin{itemize}
+\item You can make U-Boot skip the \code{memmove} operation
+ by directly loading the \code{uImage} at the right
+ address.
+\item Compute this address: \\
+ {\small
+ \code{Addr = Load Address - uImage header size}\\
+ \code{Addr = Load Address - (size(uImage) - size(zImage))}\\
+ \code{Addr = 0x20008000 - 0x40 = 0x20007fc0}\\
+ }
+\end{itemize}
+\begin{center}
+ \includegraphics[width=\textwidth]{slides/boottime-bootloader/u-boot-kernel-loading-no-memmove.pdf}
+\end{center}
+\end{frame}
+
+\begin{frame}
+\frametitle{U-Boot - Remove unnecessary memmove (2)}
+Results on Atmel SAMA5D3 Xplained (ARM), Linux 3.10:
+\newline\newline
+\begin{tabular}{| l || c | c |}
+\hline
+& Time & Diff \\
+\hline
+Default & 1.433 s & \\
+Optimum load address & 0.583 s & -0.85 s\\
+\hline
+\end{tabular}
+\newline\newline
+\small
+Measured between \code{Booting kernel} and \code{Starting kernel ...}
+\end{frame}
+
+\begin{frame}
+\frametitle{U-Boot - Remove kernel CRC check}
+\begin{itemize}
+\item Fine in production when you no longer have data corruption
+ copying the kernel to RAM.
+\item Disable CRC checking with a U-boot environment variable:\\
+ \code{setenv verify no}
+\end{itemize}
+Results on Atmel SAMA5D3 Xplained (ARM), Linux 3.10:
+\newline\newline
+\begin{tabular}{| l || c | c |}
+\hline
+& Time & Diff \\
+\hline
+With CRC check & 583 ms & \\
+Without CRC check & 60 ms & -523 ms \\
+\hline
+\end{tabular}
+\newline\newline
+\small
+Measured between \code{Booting kernel} and \code{Starting kernel ...}
+\end{frame}
+
+\begin{frame}
+\frametitle{Further U-Boot optimizations}
+\begin{itemize}
+\item Silence U-Boot console output. You will need to compile
+ U-Boot with \code{CONFIG_SILENT_CONSOLE} and
+ \code{setenv silent yes}.\\
+ See \code{doc/README.silent} for details.
+\item Ultimate solution: use U-Boot's {\em Falcon} mode.\\
+ U-Boot is split in two parts: the SPL (Secondary Program Loader)
+ and the U-Boot image. U-Boot can then configure to the SPL to load
+ the Linux kernel directly, instead of the U-Boot image.\\
+ See \code{doc/README.falcon} for details.
+\end{itemize}
+\end{frame}
+
+\subsection{Switching to another bootloader}
+
+\begin{frame}
+\frametitle{Switching from U-Boot to Barebox}
+Results with the SAMA5D3x-EK board \\
Before: 5.77s
\begin{center}
\includegraphics[width=\textwidth]{slides/boottime-kernel/timechart-final.pdf}
@@ -99,23 +214,29 @@ After:
Total: 2.57s.
\end{frame}
+\subsection{Skipping the bootloader}
\begin{frame}[fragile]
\frametitle{Removing the bootloader}
-You can also try to boot directly from \code{AT91bootstrap} to the
-Linux kernel,thus removing the second stage. But you will lose the
-main advantages of using \code{barebox}. It is using the CPU caches
-while loading and decompressing the kernel.
-
-It is quite easy with AT91bootstrap3. You just need to configure it
-with one of the \code{linux} or \code{linux_dt} configuration:
+\begin{itemize}
+\item Principle: instead of loading the bootloader and then the kernel,
+ load the kernel right away!
+\item For example, on Atmel AT91, is is easy to implement with
+ \code{at91bootstrap v3}. You just need to configure it
+ with one of the \code{linux} or \code{linux_dt} configurations:
\begin{block}{}
\begin{verbatim}
make at91sama5d3xeknf_linux_dt_defconfig
make
\end{verbatim}
\end{block}
-See \url{http://free-electrons.com/blog/at91bootstrap-linux/}
+ Full details on
+ \url{http://free-electrons.com/blog/starting-linux-directly-from-at91bootstrap3/}
+
+\item In our particular case, though, you will lose the
+ main advantages of using Barebox. It is uses the CPU caches
+ while loading the kernel.
+\end{itemize}
\end{frame}
\begin{frame}
diff --git a/slides/boottime-bootloader/u-boot-kernel-loading-no-memmove.svg b/slides/boottime-bootloader/u-boot-kernel-loading-no-memmove.svg
new file mode 100644
index 0000000..c9b2c89
--- /dev/null
+++ b/slides/boottime-bootloader/u-boot-kernel-loading-no-memmove.svg
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="1923.1428"
+ height="792.63788"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="u-boot-kernel-loading-no-memmove.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path4503"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible">
+ <path
+ id="path4482"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path4485"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-5"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4503-6"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35"
+ inkscape:cx="725.13558"
+ inkscape:cy="258.04162"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ fit-margin-top="0.5"
+ fit-margin-left="0.5"
+ fit-margin-right="0.5"
+ fit-margin-bottom="0.5"
+ inkscape:window-width="1635"
+ inkscape:window-height="911"
+ inkscape:window-x="0"
+ inkscape:window-y="56"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-50.785712,-231.98787)">
+ <rect
+ style="fill:#dcdcdc;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3.34213495;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3909"
+ width="1918.8007"
+ height="635.94354"
+ x="52.956779"
+ y="234.15894"
+ ry="31.097485" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ x="88.571426"
+ y="318.07648"
+ id="text2985"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="318.07648"
+ id="tspan3027"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch">[16.590927 0.003407] ## Booting kernel from Legacy Image at 20007fc0 ...</tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="368.07648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3087">[16.595547 0.004620] Image Name: Linux-3.10.0+</tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="418.07648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3089">[16.598351 0.002804] Image Type: ARM Linux Kernel Image (uncompressed)</tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="468.07648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3091">[16.603228 0.004877] Data Size: 3464112 Bytes = 3.3 MiB</tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="518.07648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3093">[16.606907 0.003679] <tspan
+ style="font-weight:bold;-inkscape-font-specification:Courier 10 Pitch Bold;fill:#ff0000"
+ id="tspan3014">Load Address: 20008000</tspan></tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="568.07648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3095">[16.609256 0.002349] Entry Point: 20008000</tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="618.07648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3097">[16.611619 0.002363] <tspan
+ style="font-weight:bold;-inkscape-font-specification:Courier 10 Pitch Bold;fill:#ff0000"
+ id="tspan3111">Verifying Checksum ... OK</tspan></tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="668.07648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3099">[17.135046 <tspan
+ style="font-weight:bold;-inkscape-font-specification:Courier 10 Pitch Bold;fill:#ff0000"
+ id="tspan3126">0.523427</tspan>] ## Flattened Device Tree blob at 22000000</tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="718.07648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3101">[17.138589 0.003543] Booting using the fdt blob at 0x22000000</tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="768.07648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3103">[17.142575 0.003986] <tspan
+ style="font-weight:bold;-inkscape-font-specification:Courier 10 Pitch Bold;fill:#ff0000"
+ id="tspan3109">XIP Kernel Image ... OK</tspan></tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="818.07648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3105">[17.156358 <tspan
+ style="font-weight:bold;-inkscape-font-specification:Courier 10 Pitch Bold;fill:#ff0000"
+ id="tspan3130">0.013783</tspan>] Loading Device Tree to 2bb12000, end 2bb1a0b6 ... OK</tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="868.07648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3107" /></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ x="614.28571"
+ y="681.43427"
+ id="text4443"
+ sodipodi:linespacing="125%"
+ transform="translate(88.071426,290.69648)"><tspan
+ sodipodi:role="line"
+ id="tspan4445"
+ x="614.28571"
+ y="681.43427">Kernel CRC check time</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ x="702.35712"
+ y="1023.5593"
+ id="text4447"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4449"
+ x="702.35712"
+ y="1023.5593">Kernel <tspan
+ style="-inkscape-font-specification:Courier 10 Pitch;font-family:Courier 10 Pitch;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+ id="tspan3015">memmove</tspan> time (skipped)</tspan></text>
+ <path
+ style="fill:none;stroke:#ff0000;stroke-width:3.9000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="M 679.5,957.84502 636.64285,954.98788 579.49999,683.5593"
+ id="path4476"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#ff0000;stroke-width:3.9000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 693.07314,1013.6532 -171.42858,0 -74.28571,-171.42864"
+ id="path4476-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ </g>
+</svg>
diff --git a/slides/boottime-bootloader/u-boot-kernel-loading.svg b/slides/boottime-bootloader/u-boot-kernel-loading.svg
new file mode 100644
index 0000000..b5c9900
--- /dev/null
+++ b/slides/boottime-bootloader/u-boot-kernel-loading.svg
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="1923.1428"
+ height="792.63788"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="u-boot-kernel-loading.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path4503"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible">
+ <path
+ id="path4482"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path4485"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-5"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4503-6"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35"
+ inkscape:cx="713.707"
+ inkscape:cy="258.04162"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ fit-margin-top="0.5"
+ fit-margin-left="0.5"
+ fit-margin-right="0.5"
+ fit-margin-bottom="0.5"
+ inkscape:window-width="1635"
+ inkscape:window-height="911"
+ inkscape:window-x="0"
+ inkscape:window-y="56"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-50.785712,-231.98787)">
+ <rect
+ style="fill:#dcdcdc;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3.34213495;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3909"
+ width="1918.8007"
+ height="635.94354"
+ x="52.956779"
+ y="234.15894"
+ ry="31.097485" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ x="88.571426"
+ y="318.07648"
+ id="text2985"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2987"
+ x="88.571426"
+ y="318.07648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch">[16.590578 0.003404] ## Booting kernel from Legacy Image at 21000000 ...</tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="368.07648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3330">[16.595204 0.004626] Image Name: Linux-3.10.0+</tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="418.07648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3332">[16.597986 0.002782] Image Type: ARM Linux Kernel Image (uncompressed)</tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="468.07648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3334">[16.602881 0.004895] Data Size: 3464112 Bytes = 3.3 MiB</tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="518.07648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3336">[16.606542 0.003661] Load Address: 20008000</tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="568.07648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3338">[16.608903 0.002361] Entry Point: 20008000</tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="618.78479"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3340">[16.611256 0.002353] <tspan
+ style="font-weight:bold;fill:#ff0000;-inkscape-font-specification:Courier 10 Pitch Bold"
+ id="tspan5504">Verifying Checksum ... OK</tspan></tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="669.90979"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3342">[17.134317 <tspan
+ style="font-weight:bold;fill:#ff0000;-inkscape-font-specification:Courier 10 Pitch Bold"
+ id="tspan4435">0.523061</tspan>] ## Flattened Device Tree blob at 22000000</tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="720.32648"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3344">[17.137695 0.003378] Booting using the fdt blob at 0x22000000</tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="771.03479"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch"
+ id="tspan3346">[17.141707 0.004012] <tspan
+ style="font-weight:bold;fill:#ff0000;-inkscape-font-specification:Courier 10 Pitch Bold"
+ id="tspan5506">Loading Kernel Image ... OK</tspan></tspan><tspan
+ sodipodi:role="line"
+ x="88.571426"
+ y="822.15979"
+ id="tspan3027"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Courier 10 Pitch;-inkscape-font-specification:Courier 10 Pitch">[18.005814 <tspan
+ style="font-weight:bold;fill:#ff0000;-inkscape-font-specification:Courier 10 Pitch Bold"
+ id="tspan4439">0.864107</tspan>] Loading Device Tree to 2bb12000, end 2bb1a0b6 ... OK</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ x="614.28571"
+ y="681.43427"
+ id="text4443"
+ sodipodi:linespacing="125%"
+ transform="translate(88.071426,290.69648)"><tspan
+ sodipodi:role="line"
+ id="tspan4445"
+ x="614.28571"
+ y="681.43427">Kernel CRC check time</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ x="702.35712"
+ y="1023.5593"
+ id="text4447"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4449"
+ x="702.35712"
+ y="1023.5593">Kernel <tspan
+ style="-inkscape-font-specification:Courier 10 Pitch;font-family:Courier 10 Pitch;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+ id="tspan3013">memmove</tspan> time</tspan></text>
+ <path
+ style="fill:none;stroke:#ff0000;stroke-width:3.9000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="M 608.57143,664.2914 560,664.2914 494.28571,392.86282"
+ id="path4476"
+ inkscape:connector-curvature="0"
+ transform="translate(88.071426,290.69648)"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#ff0000;stroke-width:3.9000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 693.07314,1013.6532 -171.42858,0 -74.28571,-171.42864"
+ id="path4476-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ </g>
+</svg>
More information about the training-materials-updates
mailing list