diff options
| author | John Ogness <john.ogness@linutronix.de> | 2018-04-19 11:03:45 +0200 |
|---|---|---|
| committer | John Ogness <john.ogness@linutronix.de> | 2018-04-19 11:03:45 +0200 |
| commit | ea793b23c98403cefb38670d02a778b843bdf997 (patch) | |
| tree | abef3328bd017512394c315ddff9a3bd4b40a2be | |
| parent | 6c4b8bc457831a351875ec1415d37ccb471bfc20 (diff) | |
replace *all* tabs with spaces
There are times when tabs are allowed and times when they are not.
Let's just simply never use tabs for anything. This makes it easy
to find presentations where tabs were accidentally inserted.
Signed-off-by: John Ogness <john.ogness@linutronix.de>
51 files changed, 860 insertions, 860 deletions
diff --git a/application-devel/app-debugging/handout_app-debugging_de.tex b/application-devel/app-debugging/handout_app-debugging_de.tex index b082790..dca0e76 100644 --- a/application-devel/app-debugging/handout_app-debugging_de.tex +++ b/application-devel/app-debugging/handout_app-debugging_de.tex @@ -10,11 +10,11 @@ des zu tracenden Programms wird einfach strace vorangestellt: $ strace /bin/ls execve("/bin/ls", ["/bin/ls"], [/* 50 vars */]) = 0 brk(0) = 0x2246000 -access("/etc/ld.so.nohwcap", F_OK) = +access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f32457fe000 -access("/etc/ld.so.preload", R_OK) = +access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=110532, ...}) = 0 @@ -45,14 +45,14 @@ der für alle gängigen Prozessorarchitekturen verfügbar ist. GDB bietet ein sehr mächtiges Commandlineinterface. Es existieren diverse grafische Frontends für GDB (z.B. DDD). Eine einfache Debuggingsession stellt sich wie folgt dar: \begin{lstlisting}[language=c] - /* hello.c */ - #include <stdio.h> - - int main (void) - { - printf("Hello world\n"); - return 0; - } + /* hello.c */ + #include <stdio.h> + + int main (void) + { + printf("Hello world\n"); + return 0; + } \end{lstlisting} Übersetzen des Programms mit Debuginformationen: \begin{lstlisting} @@ -62,7 +62,7 @@ Starten der Debugsession: \begin{lstlisting} $ gdb ./hello (gdb) run -Starting program: /home/jan/work/examples/hello +Starting program: /home/jan/work/examples/hello Hello world Program exited normally. @@ -71,13 +71,13 @@ Mit dem Kommando ''list'' kann der zugehörige Quellcode angezeigt werden. Breakpoints werden mit ''break'' gesetzt: \begin{lstlisting} (gdb) list -1 #include <stdio.h> -2 -3 int main (void) -4 { -5 printf("Hello world\n"); -6 return 0; -7 } +1 #include <stdio.h> +2 +3 int main (void) +4 { +5 printf("Hello world\n"); +6 return 0; +7 } (gdb) break 5 Breakpoint 1 at 0x400528: file hello.c, line 5. \end{lstlisting} @@ -85,14 +85,14 @@ Mit ''next'' und ''step'' werden einzelne Codezeilen ausgeführt, während ''next'' einem step-OVER und ''step'' einem step-IN entspricht: \begin{lstlisting} (gdb) run -Starting program: /home/jan/work/examples/hello +Starting program: /home/jan/work/examples/hello Breakpoint 1, main () at hello.c:5 -5 printf("Hello world\n"); +5 printf("Hello world\n"); (gdb) next Hello world -6 return 0; -(gdb) continue +6 return 0; +(gdb) continue Continuing. \end{lstlisting} Folgende Tabelle zeigt eine Übersicht der wichtigsten GDB Kommandos:\\ @@ -162,14 +162,14 @@ können hier verwendet werden: \end{center} Folgendes Beispiel verdeutlicht die Analyse eines core-Files: \begin{lstlisting}[language=c] - /* segfault.c */ - #include <stdio.h> - - int main (void) - { - char *arthur_dent = NULL; - printf("%c\n", *arthur_dent); - return 0; + /* segfault.c */ + #include <stdio.h> + + int main (void) + { + char *arthur_dent = NULL; + printf("%c\n", *arthur_dent); + return 0; } \end{lstlisting} Programm übersetzen: @@ -197,7 +197,7 @@ Loaded symbols for /lib64/ld-linux-x86-64.so.2 Core was generated by `./segfault'. Program terminated with signal 11, Segmentation fault. #0 0x0000000000400538 in main () at segfault.c:6 -6 printf("%c\n", *arthur_dent); +6 printf("%c\n", *arthur_dent); (gdb) bt #0 0x0000000000400538 in main () at segfault.c:6 \end{lstlisting} @@ -351,12 +351,12 @@ int main(void) { int *my_array = (int*) malloc(10 * sizeof(int)); int i = 0; - memset(my_array, 0, 10); + memset(my_array, 0, 10); for(i = 0; i < 11; i++) printf("%d ", my_array[i]); - printf("\n"); + printf("\n"); return 0; } \end{lstlisting} @@ -444,7 +444,7 @@ $ valgrind --leak-check=full ./mem_leak =5764= Using Valgrind-3.6.0.SVN-Debian and LibVEX; rerun with -h for copyright info =5764= Command: ./mem_leak -=5764= +=5764= =5764= HEAP SUMMARY: =5764= in use at exit: 49 bytes in 49 blocks =5764= total heap usage: 50 allocs, 1 frees, @@ -453,7 +453,7 @@ $ valgrind --leak-check=full ./mem_leak =5764= loss record 1 of 1 =5764= at 0x4C274A8: malloc (vg_replace_malloc.c:236) =5764= by 0x40058D: main (mem_leak.c:10) -=5764= +=5764= =5764= LEAK SUMMARY: =5764= definitely lost: 49 bytes in 49 blocks [...] diff --git a/application-devel/app-debugging/pres_app-debugging_de.tex b/application-devel/app-debugging/pres_app-debugging_de.tex index 29e0b9e..7b3a4cc 100644 --- a/application-devel/app-debugging/pres_app-debugging_de.tex +++ b/application-devel/app-debugging/pres_app-debugging_de.tex @@ -74,13 +74,13 @@ Program exited normally. \frametitle{Wichtige GDB Kommandos} \begin{verbatim} (gdb) list -1 #include <stdio.h> -2 -3 int main (void) -4 { -5 printf("Hello world\n"); -6 return 0; -7 } +1 #include <stdio.h> +2 +3 int main (void) +4 { +5 printf("Hello world\n"); +6 return 0; +7 } (gdb) break 5 Breakpoint 1 at 0x400528: file hello.c, line 5. \end{verbatim} @@ -93,10 +93,10 @@ Breakpoint 1 at 0x400528: file hello.c, line 5. Starting program: /home/jan/work/examples/hello Breakpoint 1, main () at hello.c:5 -5 printf("Hello world\n"); +5 printf("Hello world\n"); (gdb) next Hello world -6 return 0; +6 return 0; (gdb) continue Continuing. \end{verbatim} @@ -173,8 +173,8 @@ Loaded symbols for /lib64/ld-linux-x86-64.so.2 Core was generated by `./hello_segfault'. Program terminated with signal 11, Segmentation fault. #0 0x0000000000400538 in main () at hello_crash.c:6 -6 printf("Hello segfaulting world %s\n", - *arthur_dent); +6 printf("Hello segfaulting world %s\n", + *arthur_dent); (gdb) bt #0 0x0000000000400538 in main () at hello_crash.c:6 \end{lstlisting} @@ -376,12 +376,12 @@ int main(void) { int *my_array = (int*) malloc(10 * sizeof(int)); int i = 0; - memset(my_array, 0, 10 * sizeof(int)); + memset(my_array, 0, 10 * sizeof(int)); for(i = 0; i < 11; i++) printf("%d ", my_array[i]); - printf("\n"); + printf("\n"); return 0; } \end{lstlisting} diff --git a/application-devel/c++/pres_c++-c++98_11.tex b/application-devel/c++/pres_c++-c++98_11.tex index 93f44eb..6fc449e 100644 --- a/application-devel/c++/pres_c++-c++98_11.tex +++ b/application-devel/c++/pres_c++-c++98_11.tex @@ -11,7 +11,7 @@ \def\lximg{none} %\begin{frame} -% \tableofcontents +%\tableofcontents %\end{frame} \subsubsection{C++98} diff --git a/application-devel/c++/pres_c++-stl.tex b/application-devel/c++/pres_c++-stl.tex index 6bb6fd6..bca5931 100644 --- a/application-devel/c++/pres_c++-stl.tex +++ b/application-devel/c++/pres_c++-stl.tex @@ -11,7 +11,7 @@ \def\lximg{none} %\begin{frame} -% \tableofcontents +%\tableofcontents %\end{frame} \subsubsection{Standard Library Overview} diff --git a/application-devel/c++/pres_c++-threads.tex b/application-devel/c++/pres_c++-threads.tex index a46717a..bbd9c51 100644 --- a/application-devel/c++/pres_c++-threads.tex +++ b/application-devel/c++/pres_c++-threads.tex @@ -11,7 +11,7 @@ \def\lximg{none} %\begin{frame} -% \tableofcontents +%\tableofcontents %\end{frame} \subsubsection{Threading} diff --git a/application-devel/compile-tools/hints_compile-tools_de.tex b/application-devel/compile-tools/hints_compile-tools_de.tex index 80cad60..51f3038 100644 --- a/application-devel/compile-tools/hints_compile-tools_de.tex +++ b/application-devel/compile-tools/hints_compile-tools_de.tex @@ -10,7 +10,7 @@ \begin{itemize} \item Verstehen, was eine Toolchain ist \item Verstehen der Unterschiede zwischen nativem Kompilieren und - Cross-Compilieren + Cross-Compilieren \item Kennenlernen von gcc, make, autotools \end{itemize} diff --git a/application-devel/debugging-tools/pres_debugging-tools_de.tex b/application-devel/debugging-tools/pres_debugging-tools_de.tex index 8e5feac..a49d9ee 100644 --- a/application-devel/debugging-tools/pres_debugging-tools_de.tex +++ b/application-devel/debugging-tools/pres_debugging-tools_de.tex @@ -324,13 +324,13 @@ Program exited normally. \frametitle{Wichtige GDB Kommandos} \begin{verbatim} (gdb) list -1 #include <stdio.h> -2 -3 int main (void) -4 { -5 printf("Hello world\n"); -6 return 0; -7 } +1 #include <stdio.h> +2 +3 int main (void) +4 { +5 printf("Hello world\n"); +6 return 0; +7 } (gdb) break 5 Breakpoint 1 at 0x400528: file hello.c, line 5. \end{verbatim} @@ -343,10 +343,10 @@ Breakpoint 1 at 0x400528: file hello.c, line 5. Starting program: /home/jan/work/examples/hello Breakpoint 1, main () at hello.c:5 -5 printf("Hello world\n"); +5 printf("Hello world\n"); (gdb) next Hello world -6 return 0; +6 return 0; (gdb) continue Continuing. \end{verbatim} @@ -427,8 +427,8 @@ Loaded symbols for /lib64/ld-linux-x86-64.so.2 Core was generated by `./hello_segfault'. Program terminated with signal 11, Segmentation fault. #0 0x0000000000400538 in main () at hello_crash.c:6 -6 printf("Hello segfaulting world %s\n", - *arthur_dent); +6 printf("Hello segfaulting world %s\n", + *arthur_dent); (gdb) bt #0 0x0000000000400538 in main () at hello_crash.c:6 \end{lstlisting} @@ -757,12 +757,12 @@ int main(void) { int *my_array = (int*) malloc(10 * sizeof(int)); int i = 0; - memset(my_array, 0, 10 * sizeof(int)); + memset(my_array, 0, 10 * sizeof(int)); for(i = 0; i < 11; i++) printf("%d ", my_array[i]); - printf("\n"); + printf("\n"); return 0; } \end{lstlisting} @@ -1236,7 +1236,7 @@ Hardware assisted breakpoint 1 at 0x20011c: file main.c, line 68. (gdb) c Continuing. Breakpoint 1, main () at main.c:68 -68 hw_init(); +68 hw_init(); \end{verbatim} \end{frame} @@ -1247,14 +1247,14 @@ Breakpoint 1, main () at main.c:68 (gdb) c Continuing. Breakpoint 1, main () at main.c:68 -68 hw_init(); +68 hw_init(); (gdb) next -83 load_nandflash(IMG_ADDRESS, IMG_SIZE, JUMP_ADDR); +83 load_nandflash(IMG_ADDRESS, IMG_SIZE, JUMP_ADDR); (gdb) next -84 dbg_print(">NANDflash ready\r\n"); +84 dbg_print(">NANDflash ready\r\n"); (gdb) step dbg_print (ptr=0x200e2c ">NANDflash ready\r\n") at driver/debug.c:90 -90 } +90 } \end{verbatim} \end{frame} diff --git a/application-devel/devel-best-practices/hints_devel-best-practices_de.tex b/application-devel/devel-best-practices/hints_devel-best-practices_de.tex index 3f7a48f..298ead4 100644 --- a/application-devel/devel-best-practices/hints_devel-best-practices_de.tex +++ b/application-devel/devel-best-practices/hints_devel-best-practices_de.tex @@ -9,12 +9,12 @@ \subsection*{Lernziele} \begin{itemize} \item Kennenlernen gängiger Techniken (Versionskontrolle, Code-Review, - Test-Skripte) + Test-Skripte) \item Kennenlernen wichtiger Design-Grundsätze \item Kennenlernen gängiger Probleme bezüglich Plattform-Unabhängigkeit - (32/63-Bit, Endianness, Text- statt Binär-Dateien) + (32/63-Bit, Endianness, Text- statt Binär-Dateien) \item Kennenlernen des Unix-Konzepts, Applikationen in mehrere Programme - aufzuteilen. Trennung Commandline-Programme und GUI. + aufzuteilen. Trennung Commandline-Programme und GUI. \end{itemize} \subsection*{Unterrichts-Ablauf} diff --git a/application-devel/devel-environment/handout_devel-environment_de.tex b/application-devel/devel-environment/handout_devel-environment_de.tex index 1ac1b6f..5ffdcd5 100644 --- a/application-devel/devel-environment/handout_devel-environment_de.tex +++ b/application-devel/devel-environment/handout_devel-environment_de.tex @@ -133,12 +133,12 @@ M\"oglichkeit Plugins von so genannten 'update-sites' nach zu installieren. Freie oder kommerzielle Eclipse Plugins gibt es f\"ur viele Aufgaben: \begin{itemize} - \item Versionskontrolle: cvs, git, svn, \dots - \item Programmiersprachen: java, C, C++, Python, \dots - \item Workflows: UML, Modelling, bugzilla, JIRA, Remote Target Management, - \dots - \item Frameworks: QT, CORBA, Eclipse Plugin Development, \dots - \item \dots +\item Versionskontrolle: cvs, git, svn, \dots +\item Programmiersprachen: java, C, C++, Python, \dots +\item Workflows: UML, Modelling, bugzilla, JIRA, Remote Target Management, +\dots +\item Frameworks: QT, CORBA, Eclipse Plugin Development, \dots +\item \dots \end{itemize} Aus einer Zusammenstellung von Plugins entstehen die sogenannten 'Eclipse @@ -147,19 +147,19 @@ erhaeltlich sind. Freie Eclipse basierte IDEs: \begin{itemize} - \item Eclipse IDE for JAVA Developers (http://www.eclipse.org/downloads) - \item Eclipse IDE for C++ Developers (http://www.eclipse.org/downloads) - \item Eclipse Modeling Tools (http://www.eclipse.org/downloads) - \item Pydev for Python Developers (http://pydev.sourceforge.net) +\item Eclipse IDE for JAVA Developers (http://www.eclipse.org/downloads) +\item Eclipse IDE for C++ Developers (http://www.eclipse.org/downloads) +\item Eclipse Modeling Tools (http://www.eclipse.org/downloads) +\item Pydev for Python Developers (http://pydev.sourceforge.net) \end{itemize} Kommerzielle Eclipse basierte IDEs: \begin{itemize} - \item Windriver Workbench (http://www.windriver.com/products/workbench) - \item IBM Rational/Websphere Suites (http://www.ibm.com) - \item Montavista DevRocket - (http://www.mvista.com/product\_detail\_devrocket.php) - \item SAP Netweaver (http://www.sap.com/platform/netweaver/index.epx) +\item Windriver Workbench (http://www.windriver.com/products/workbench) +\item IBM Rational/Websphere Suites (http://www.ibm.com) +\item Montavista DevRocket + (http://www.mvista.com/product\_detail\_devrocket.php) +\item SAP Netweaver (http://www.sap.com/platform/netweaver/index.epx) \end{itemize} Es besteht auch die M\"oglichkeit, sich eine Eclipse IDE selber zusammen zu @@ -170,39 +170,39 @@ Die hier n\"ahers vorgestellte Eclispe basierte IDE wurde von Linutronix speziell f\"ur die embedded Anwendungsentwicklung zusammengestellt und bietet unterst\"utzung in folgenden Punkten: \begin{itemize} - \item Programmiersprachen: - \begin{itemize} - \item C - \item C++ - \item JAVA / Open JDK 1.6 - \end{itemize} - \item Versionskontrolle: - \begin{itemize} - \item Subversion - \item CVS - \item git - \end{itemize} - \item Profiling mit valgrind: - \begin{itemize} - \item memory leak detection - \item heap analyzation - \end{itemize} - \item QT 4.5 Integration - \item Remote Target Managment - \begin{itemize} - \item Target File Explorer - \item Target Process Viewer - \item Remote Debugging - \item Target Monitoring - \end{itemize} - \item ARM Device Emulation - \item Bugzilla Bugtracking Integration - \item Modelierungswerkzeuge - \begin{itemize} - \item UML2 - \item Eclipse Modeling Framework - \item Graphical Modeling Framework - \end{itemize} +\item Programmiersprachen: +\begin{itemize} +\item C +\item C++ +\item JAVA / Open JDK 1.6 +\end{itemize} +\item Versionskontrolle: +\begin{itemize} +\item Subversion +\item CVS +\item git +\end{itemize} +\item Profiling mit valgrind: +\begin{itemize} +\item memory leak detection +\item heap analyzation +\end{itemize} +\item QT 4.5 Integration +\item Remote Target Managment +\begin{itemize} +\item Target File Explorer +\item Target Process Viewer +\item Remote Debugging +\item Target Monitoring +\end{itemize} +\item ARM Device Emulation +\item Bugzilla Bugtracking Integration +\item Modelierungswerkzeuge +\begin{itemize} +\item UML2 +\item Eclipse Modeling Framework +\item Graphical Modeling Framework +\end{itemize} \end{itemize} \paragraph{Bedienoberf\"ache} diff --git a/application-devel/devel-scenarios/pres_devel_scenarios_de.tex b/application-devel/devel-scenarios/pres_devel_scenarios_de.tex index 2033f5b..de01170 100644 --- a/application-devel/devel-scenarios/pres_devel_scenarios_de.tex +++ b/application-devel/devel-scenarios/pres_devel_scenarios_de.tex @@ -10,7 +10,7 @@ \def\lximg{none} \begin{frame} - \tableofcontents +\tableofcontents \end{frame} \subsection{Enwicklungsszenarien} diff --git a/application-devel/posix-ipc/pres_posix_ipc_de.tex b/application-devel/posix-ipc/pres_posix_ipc_de.tex index 9174c17..3c15d8f 100644 --- a/application-devel/posix-ipc/pres_posix_ipc_de.tex +++ b/application-devel/posix-ipc/pres_posix_ipc_de.tex @@ -11,7 +11,7 @@ \def\lximg{none} \begin{frame} - \tableofcontents +\tableofcontents \end{frame} \subsubsection{Message Queues} @@ -308,17 +308,17 @@ int shm_unlink(const char *name); fd = shm_open("my_shm", O_RDWR | O_CREAT, 0777); if (fd < 0) { - perror("Can't open Shared Memory\n"); - goto out; + perror("Can't open Shared Memory\n"); + goto out; } if (ftruncate(fd, 4096) == -1) { - perror("ltrunc\n"); - goto out; + perror("ltrunc\n"); + goto out; } addr = mmap(0, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (addr == MAP_FAILED) { - perror("mmap() failed\n"); - goto out; + perror("mmap() failed\n"); + goto out; } ret = 0; *addr = 'A'; @@ -337,14 +337,14 @@ out: fd = shm_open("my_shm", O_RDWR, 0777); if (fd < 0) { - perror("Can't open Shared Memory\n"); - goto out; + perror("Can't open Shared Memory\n"); + goto out; } addr = mmap(0, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (addr == MAP_FAILED) { - perror("mmap() failed\n"); - goto out; + perror("mmap() failed\n"); + goto out; } printf("Reading from SHM -> %c\n", *addr); ret = 0; diff --git a/basics/cpu-arch/pres_cpu-arch.tex b/basics/cpu-arch/pres_cpu-arch.tex index 141c194..b57f3f1 100644 --- a/basics/cpu-arch/pres_cpu-arch.tex +++ b/basics/cpu-arch/pres_cpu-arch.tex @@ -27,14 +27,14 @@ Register - Rechenwerk - Befehlsdekoder - Bus - Cache (optional) \begin{description} \item[Befehlsdekoder] - \begin{itemize} - \item FETCH - Befehl (OPCODE) aus RAM / ROM laden - (Prefetch - laden mehrere Befehle in ein Prefetch Register) - \item DECODE - OPCODE in ALU-Schaltinstruktionen wandeln - \item FETCH - Operanden (OPERANDS) aus RAM / ROM laden - \item EXECUTE - \item WRITE BACK - schreiben des Ergebnisses in RAM / ROM (OPCOUNTER++) - \end{itemize} +\begin{itemize} +\item FETCH - Befehl (OPCODE) aus RAM / ROM laden + (Prefetch - laden mehrere Befehle in ein Prefetch Register) +\item DECODE - OPCODE in ALU-Schaltinstruktionen wandeln +\item FETCH - Operanden (OPERANDS) aus RAM / ROM laden +\item EXECUTE +\item WRITE BACK - schreiben des Ergebnisses in RAM / ROM (OPCOUNTER++) +\end{itemize} \item[Bus] Adressbus (zentraler Adressdecoder -> Chip Select), Datenbus \end{description} \end{frame} @@ -45,11 +45,11 @@ Register - Rechenwerk - Befehlsdekoder - Bus - Cache (optional) \begin{description} \item[Cache] beinhaltet zuletzt verwendete Daten - \begin{itemize} - \item L1 im Kern / wenige KB gross / am Schnellsten abrufbar - \item L2 nicht im Kern / wenige MB gross - \item L3 von allen Kernen geteilt / einige MB gross - \end{itemize} +\begin{itemize} +\item L1 im Kern / wenige KB gross / am Schnellsten abrufbar +\item L2 nicht im Kern / wenige MB gross +\item L3 von allen Kernen geteilt / einige MB gross +\end{itemize} \end{description} \end{frame} @@ -86,7 +86,7 @@ SI (Sourceindexregister) wird um den Wert eins inkrementiert. simple.c: int main(int argc, char **argv) { - return argc++; + return argc++; } $ gcc -o simple.c @@ -152,7 +152,7 @@ Nachteil: Speicherbedarf Pointer \item Prozess sieht zusammenh\"angenden, konstanten, virtuellen Speicher \item Kernel programmiert den TLB (Translation Look-aside Buffer) der MMU \item Speicherzugriff auf virtuelle Adresse wird von der MMU in tats\"achliche, - physikalische Adresse \"ubersetzt + physikalische Adresse \"ubersetzt \end{itemize} \end{frame} diff --git a/basics/lx-trainer/pres_lx-trainer-vm.tex b/basics/lx-trainer/pres_lx-trainer-vm.tex index 59e2bc6..e7f09b0 100644 --- a/basics/lx-trainer/pres_lx-trainer-vm.tex +++ b/basics/lx-trainer/pres_lx-trainer-vm.tex @@ -24,7 +24,7 @@ \end{itemize} in case you are not allowed to change the boot order of your system: \begin{itemize} - \item ask me, we can also use sth. like vmWare to boot the image +\item ask me, we can also use sth. like vmWare to boot the image \end{itemize} \end{frame} @@ -32,16 +32,16 @@ in case you are not allowed to change the boot order of your system: \frametitle{Login} Login with the following credentials: \begin{description} - \item[User] devel - \item[Password] devel +\item[User] devel +\item[Password] devel \end{description} don't work as root always, but if needed, use the \begin{description} - \item[Password] root +\item[Password] root \end{description} it's better to use 'sudo' if root rights are required \begin{description} - \item[Password] devel +\item[Password] devel \end{description} \end{frame} @@ -50,12 +50,12 @@ it's better to use 'sudo' if root rights are required The Image is preconfigured with an English Keyboard Layout, if you want to modify this setting: \begin{itemize} - \item 'System', 'Preferences', 'Keyboard' - \item 'Layouts' - \item select '+ Add..', choose your prefered 'Country' and 'Variant' - \item if unsure, select 'Germany' and 'German German (eliminate dead keys)' - \item 'Add' - \item select 'English (US)' and click on '-Remove' +\item 'System', 'Preferences', 'Keyboard' +\item 'Layouts' +\item select '+ Add..', choose your prefered 'Country' and 'Variant' +\item if unsure, select 'Germany' and 'German German (eliminate dead keys)' +\item 'Add' +\item select 'English (US)' and click on '-Remove' \end{itemize} \end{frame} diff --git a/distribution/debian/pres_debian.tex b/distribution/debian/pres_debian.tex index 5736c4e..1771d21 100644 --- a/distribution/debian/pres_debian.tex +++ b/distribution/debian/pres_debian.tex @@ -60,11 +60,11 @@ These standards are backed up by \item automation (wanna\_build, version tracking) \item documentation (http://debian.org/doc/): \begin{itemize} - \item New Maintainer Guide - \item Debian Policies - \item Porting Guide - \item Developer Reference - \item Securing Debian +\item New Maintainer Guide +\item Debian Policies +\item Porting Guide +\item Developer Reference +\item Securing Debian \end{itemize} \end{itemize} All of Debian's key elements are open and visible. diff --git a/distribution/elbe-adk/pres_elbe-adk_en.tex b/distribution/elbe-adk/pres_elbe-adk_en.tex index 4e9fc1a..d077696 100644 --- a/distribution/elbe-adk/pres_elbe-adk_en.tex +++ b/distribution/elbe-adk/pres_elbe-adk_en.tex @@ -31,39 +31,39 @@ $ make run-con \end{frame} \begin{frame}[fragile] - \frametitle{mini.xml} - \begin{lstlisting} - <project> - <name>mini xml</name> - <version>1</version> - <description> - optimal to use as buildenv - </description> - <buildtype>armhf</buildtype> - <mirror> - <primary_host>ftp.debian.org</primary_host> - <primary_path>/debian</primary_path> - <primary_proto>http</primary_proto> - </mirror> - <suite>wheezy</suite> - </project> - \end{lstlisting} + \frametitle{mini.xml} + \begin{lstlisting} + <project> + <name>mini xml</name> + <version>1</version> + <description> + optimal to use as buildenv + </description> + <buildtype>armhf</buildtype> + <mirror> + <primary_host>ftp.debian.org</primary_host> + <primary_path>/debian</primary_path> + <primary_proto>http</primary_proto> + </mirror> + <suite>wheezy</suite> + </project> + \end{lstlisting} \end{frame} \begin{frame}[fragile] - \frametitle{mini.xml} - \begin{lstlisting} - <target> - <hostname>mini</hostname> - <domain>linutronix</domain> - <passwd>foo</passwd> - <finetuning> - </finetuning> - <pkg-list> - <pkg>bash</pkg> - </pkg-list> - </target> - \end{lstlisting} + \frametitle{mini.xml} + \begin{lstlisting} + <target> + <hostname>mini</hostname> + <domain>linutronix</domain> + <passwd>foo</passwd> + <finetuning> + </finetuning> + <pkg-list> + <pkg>bash</pkg> + </pkg-list> + </target> + \end{lstlisting} \end{frame} \begin{frame}[fragile] diff --git a/distribution/elbe-commands/pres_elbe-commands_en.tex b/distribution/elbe-commands/pres_elbe-commands_en.tex index 4a91e4f..f583a26 100644 --- a/distribution/elbe-commands/pres_elbe-commands_en.tex +++ b/distribution/elbe-commands/pres_elbe-commands_en.tex @@ -19,7 +19,7 @@ Create a new project: \begin{verbatim} $ elbe initvm create \ - --directory /home/user/elbe-initvm + --directory /home/user/elbe-initvm \end{verbatim} \end{frame} @@ -70,7 +70,7 @@ validation.txt \item ISO image that contains all used binary debian packages \item it is only created if the --build-bin switch was provided at elbe initvm submit \item a rebuild of the initvm and target image can be done with this cdrom and - without a connection to a debian repository. + without a connection to a debian repository. \end{itemize} \end{frame} diff --git a/distribution/elbe-overview/pres_elbe-overview_en.tex b/distribution/elbe-overview/pres_elbe-overview_en.tex index 6d935e2..0c078f8 100644 --- a/distribution/elbe-overview/pres_elbe-overview_en.tex +++ b/distribution/elbe-overview/pres_elbe-overview_en.tex @@ -1,7 +1,7 @@ \input{configpres} \begin{frame}[fragile] - \includegraphics[width=\textwidth]{images/Dresden_Elbe_Terrassenufer.jpg} +\includegraphics[width=\textwidth]{images/Dresden_Elbe_Terrassenufer.jpg} \end{frame} \title{\includegraphics[width=8cm]{images/elbe-logo.png}} @@ -71,7 +71,7 @@ buildroot \begin{frame}[fragile] \frametitle{what is \includegraphics[height=0.7em]{images/elbe-logo.png}?} - \includegraphics[height=\textheight]{images/elbe-io-chart.png} +\includegraphics[height=\textheight]{images/elbe-io-chart.png} \end{frame} \section{prepare environment} @@ -288,7 +288,7 @@ are used to strip target-images \begin{frame} \center - \includegraphics[width=10cm]{images/tux-chamber.jpg} +\includegraphics[width=10cm]{images/tux-chamber.jpg} \endcenter \end{frame} @@ -302,11 +302,11 @@ are used to strip target-images \item[elbe-updated] for embedded target to apply update packages \item[elbe-daemon] for virtual machine (wsgi server) \item[elbe-soap] for virtual machine - - implements SOAP interface + + implements SOAP interface \item[elbe-control] for host PC - - controls SOAP interface + + controls SOAP interface \end{description} \end{frame} @@ -315,12 +315,12 @@ are used to strip target-images \frametitle{architecture} \begin{block}{technologies} \begin{itemize} - \item python - \item qemu-user - \item python-apt - \item python-mako - \item python-parted - \item sqlalchemy +\item python +\item qemu-user +\item python-apt +\item python-mako +\item python-parted +\item sqlalchemy \end{itemize} \end{block} \end{frame} diff --git a/distribution/yocto-advanced/pres_yocto-advanced.tex b/distribution/yocto-advanced/pres_yocto-advanced.tex index 13b673e..f5e104a 100644 --- a/distribution/yocto-advanced/pres_yocto-advanced.tex +++ b/distribution/yocto-advanced/pres_yocto-advanced.tex @@ -7,10 +7,10 @@ \begin{frame} \frametitle{Agenda} \begin{itemize} - \item Using BSP layers - \item Create layers \& recipes for own applications - \item Define a distribution - \item Integrate own Kernel +\item Using BSP layers +\item Create layers \& recipes for own applications +\item Define a distribution +\item Integrate own Kernel \end{itemize} \end{frame} @@ -50,7 +50,7 @@ TEMPLATECONF=${TEMPLATECONF:-meta-yocto/conf} \input{yocto-resume} \begin{frame} - \frametitle{Application Development Excercise} +\frametitle{Application Development Excercise} \begin{itemize} \item generate a standalone or integrated SDK \item configure the SDK in eclipse diff --git a/distribution/yocto-advanced/yocto-add-simple-application.tex b/distribution/yocto-advanced/yocto-add-simple-application.tex index 18d3130..f5f3ebd 100644 --- a/distribution/yocto-advanced/yocto-add-simple-application.tex +++ b/distribution/yocto-advanced/yocto-add-simple-application.tex @@ -1,9 +1,9 @@ \begin{frame} \frametitle{adding an own application} \begin{itemize} - \item recipe already available? check http://layers.openembedded.org - \item look for a similar recipe - \item proper bbclass available? +\item recipe already available? check http://layers.openembedded.org +\item look for a similar recipe +\item proper bbclass available? \end{itemize} on the next slides, we have a look what is useful for very simple applications, autotools and cmake based projects and qt applications. diff --git a/distribution/yocto-advanced/yocto-distro-definitions.tex b/distribution/yocto-advanced/yocto-distro-definitions.tex index dbd2ec4..bbb5e71 100644 --- a/distribution/yocto-advanced/yocto-distro-definitions.tex +++ b/distribution/yocto-advanced/yocto-distro-definitions.tex @@ -13,10 +13,10 @@ \begin{description} \item[cramfs] CramFS support \item[ext2] tools for supporting for devices with internal HDD/Microdrive - for storing files (instead of Flash only devices) + for storing files (instead of Flash only devices) \item[nfs] NFS client support (for mounting NFS exports on device) \item[smbfs] SMB networks client support - (for mounting Samba/Microsoft Windows shares on device) + (for mounting Samba/Microsoft Windows shares on device) \end{description} \end{frame} @@ -24,7 +24,7 @@ \frametitle{distro features: hardware support} \begin{description} \item[alsa] ALSA/sound support - (OSS compatibility kernel modules installed if available) + (OSS compatibility kernel modules installed if available) \item[bluetooth] bluetooth support (integrated BT only) \item[irda] IrDA support \item[wifi] WiFi support (integrated only). @@ -36,8 +36,8 @@ \frametitle{distro features: grahpics} \begin{description} \item[opengl] the Open Graphics Library, which is a cross-language, - multi-platform application programming interface used for rendering two - and three-dimensional graphics + multi-platform application programming interface used for rendering two + and three-dimensional graphics \item[directfb] DirectFB support \end{description} \end{frame} @@ -58,7 +58,7 @@ \item[pcmcia] PCMCIA/CompactFlash support \item[usbgadget] USB Gadget Device support (for USB networking/serial/storage) \item[usbhost] USB Host support - (allows to connect external keyboard, mouse, storage, network etc) + (allows to connect external keyboard, mouse, storage, network etc) \end{description} \end{frame} @@ -66,10 +66,10 @@ \frametitle{distro features: software} \begin{description} \item[systemd] support for this init manager, which is a full replacement of - for init with parallel starting of services, reduced shell overhead, - and other features. This init manager is used by many distributions + for init with parallel starting of services, reduced shell overhead, + and other features. This init manager is used by many distributions \item[wayland] the Wayland display server protocol - and the library that supports it + and the library that supports it \item[x11] X server and libraries \end{description} \end{frame} diff --git a/distribution/yocto-advanced/yocto-excercise-build-bbb-img.tex b/distribution/yocto-advanced/yocto-excercise-build-bbb-img.tex index b679a79..1ebaba5 100644 --- a/distribution/yocto-advanced/yocto-excercise-build-bbb-img.tex +++ b/distribution/yocto-advanced/yocto-excercise-build-bbb-img.tex @@ -1,12 +1,12 @@ \begin{frame}[fragile] - \frametitle{Excercise} - 1) Add sample configs to the meta-foo/mybsp layers providing a valid - layer configuration and a build configuration that creates a - debug RFS for our self defined machine, by using our distribution. - The configus should Use packages in deb format and the shared - download directory from the poky directory. +\frametitle{Excercise} +1) Add sample configs to the meta-foo/mybsp layers providing a valid +layer configuration and a build configuration that creates a +debug RFS for our self defined machine, by using our distribution. +The configus should Use packages in deb format and the shared +download directory from the poky directory. - 2) create a new build directory, e.g. build-bbb and build our self - defined image. +2) create a new build directory, e.g. build-bbb and build our self +defined image. \end{frame} diff --git a/distribution/yocto-advanced/yocto-img-customization.tex b/distribution/yocto-advanced/yocto-img-customization.tex index 6bebb56..cdbe53f 100644 --- a/distribution/yocto-advanced/yocto-img-customization.tex +++ b/distribution/yocto-advanced/yocto-img-customization.tex @@ -1,13 +1,13 @@ \begin{frame}[fragile] \frametitle{adding a bootscript} \begin{itemize} - \item add 'systemd' to DISTRO\_FEATURES - \item inherit from systemd.bbclass - \item your package needs to set SYSTEMD\_SERVICE variable; e.g. +\item add 'systemd' to DISTRO\_FEATURES +\item inherit from systemd.bbclass +\item your package needs to set SYSTEMD\_SERVICE variable; e.g. \begin{verbatim} SYSTEMD_SERVICE_${PN} = "connman.service" \end{verbatim} - \item to disable the service, set SYSTEMD\_AUTO\_ENABLE to 'disable' +\item to disable the service, set SYSTEMD\_AUTO\_ENABLE to 'disable' \end{itemize} \end{frame} diff --git a/distribution/yocto-advanced/yocto-layers.tex b/distribution/yocto-advanced/yocto-layers.tex index 2bd6286..1feab37 100644 --- a/distribution/yocto-advanced/yocto-layers.tex +++ b/distribution/yocto-advanced/yocto-layers.tex @@ -20,26 +20,26 @@ meta-mylayer \end{frame} \begin{frame}[fragile] - \frametitle{meta-*/conf/layer.conf} - each layer needs a configuration file - \begin{itemize} - \item add conf and class directories to BBPATH - \begin{verbatim}BBPATH =. "${LAYERDIR}"\end{verbatim} - \item add recipe directories to BBFILES - \begin{verbatim}BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ -${LAYERDIR}/recipes-*/*/*.bbappend"\end{verbatim} - \item add layer name to BBFILE\_COLLECTIONS - \begin{verbatim}BBFILE_COLLECTIONS += "mylayer"\end{verbatim} - \item set root of the layer - \begin{verbatim}BBFILE_PATTERN_mylayer = "^${LAYERDIR}/"\end{verbatim} - \item set default priority of the layer - \begin{verbatim}BBFILE_PRIORITY_mylayer = "5"\end{verbatim} - \item set version of layer (only increment if dependencies with other - layers are affected) - \begin{verbatim}LAYERVERSION_mylayer = "2"\end{verbatim} - \item set dependencies to other layers - \begin{verbatim}LAYERDEPENDS_mylayer = "meta-yocto"\end{verbatim} - \end{itemize} +\frametitle{meta-*/conf/layer.conf} +each layer needs a configuration file +\begin{itemize} +\item add conf and class directories to BBPATH +\begin{verbatim}BBPATH =. "${LAYERDIR}"\end{verbatim} +\item add recipe directories to BBFILES +\begin{verbatim}BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend"\end{verbatim} +\item add layer name to BBFILE\_COLLECTIONS +\begin{verbatim}BBFILE_COLLECTIONS += "mylayer"\end{verbatim} +\item set root of the layer +\begin{verbatim}BBFILE_PATTERN_mylayer = "^${LAYERDIR}/"\end{verbatim} +\item set default priority of the layer +\begin{verbatim}BBFILE_PRIORITY_mylayer = "5"\end{verbatim} +\item set version of layer (only increment if dependencies with other + layers are affected) +\begin{verbatim}LAYERVERSION_mylayer = "2"\end{verbatim} +\item set dependencies to other layers +\begin{verbatim}LAYERDEPENDS_mylayer = "meta-yocto"\end{verbatim} +\end{itemize} \end{frame} \begin{frame} @@ -50,20 +50,20 @@ is useful to debug relations between different layers, options are: \item [show-recipes] lists available recipes and the layers that provide them. \item [show-overlayed] lists overlayed recipes \item [show-appends] lists .bbappend files - and the recipe files to which they apply + and the recipe files to which they apply \item [show-cross-depends] lists dependency relationships - between recipes that cross layer boundaries + between recipes that cross layer boundaries \item [flatten] flattens the layer configuration - into a separate output directory. + into a separate output directory. \end{description} \end{frame} \begin{frame} \frametitle{definitions} \begin{itemize} - \item It is possible for a recipe with a lower version number PV in a layer +\item It is possible for a recipe with a lower version number PV in a layer that has a higher priority to take precedence. - \item Also, the layer priority does not currently affect the precedence +\item Also, the layer priority does not currently affect the precedence order of .conf or .bbclass files. Future versions of BitBake might address this. \end{itemize} \end{frame} diff --git a/distribution/yocto-advanced/yocto-local-conf.tex b/distribution/yocto-advanced/yocto-local-conf.tex index 5213a78..ce81abb 100644 --- a/distribution/yocto-advanced/yocto-local-conf.tex +++ b/distribution/yocto-advanced/yocto-local-conf.tex @@ -2,20 +2,20 @@ \frametitle{build configuration} local.conf is used to configure \begin{itemize} - \item the target machine - \item paths - \item the used distribution - \item package formats - \item arch of developer machine - \item additional image features - \item use additional classes - \item enable testing - \item devshell terminal - \item patch resolver - \item disk monitoring - \item sstate mirrors - \item qemu configuration - \item incompatible licenses, e.g. INCOMPATIBLE\_LICENSE = “GPLv3” +\item the target machine +\item paths +\item the used distribution +\item package formats +\item arch of developer machine +\item additional image features +\item use additional classes +\item enable testing +\item devshell terminal +\item patch resolver +\item disk monitoring +\item sstate mirrors +\item qemu configuration +\item incompatible licenses, e.g. INCOMPATIBLE\_LICENSE = “GPLv3” \end{itemize} \end{frame} diff --git a/distribution/yocto-advanced/yocto-resume.tex b/distribution/yocto-advanced/yocto-resume.tex index 1db1e87..3be1e43 100644 --- a/distribution/yocto-advanced/yocto-resume.tex +++ b/distribution/yocto-advanced/yocto-resume.tex @@ -1,10 +1,10 @@ \subsection{Resume} \begin{frame} - \begin{itemize} - \item Yocto is a huge collection of tools - \item Bitbake can be used to describe/build a distribution - \item The quality of the Images depend on the maintainance of the Layers - \item Only build your own distribution if you really need to! - \item Poky can be used as an example / reference. - \end{itemize} +\begin{itemize} +\item Yocto is a huge collection of tools +\item Bitbake can be used to describe/build a distribution +\item The quality of the Images depend on the maintainance of the Layers +\item Only build your own distribution if you really need to! +\item Poky can be used as an example / reference. +\end{itemize} \end{frame} diff --git a/distribution/yocto-advanced/yocto-ti-layer.tex b/distribution/yocto-advanced/yocto-ti-layer.tex index 38861de..4ad0c68 100644 --- a/distribution/yocto-advanced/yocto-ti-layer.tex +++ b/distribution/yocto-advanced/yocto-ti-layer.tex @@ -34,8 +34,8 @@ poky/build-ti % \frametitle{overview} builds are configured using two configuration files \begin{itemize} - \item /home/devel/poky/build-ti/conf/bblayers.conf - \item /home/devel/poky/build-ti/conf/local.conf + \item /home/devel/poky/build-ti/conf/bblayers.conf + \item /home/devel/poky/build-ti/conf/local.conf \end{itemize} \end{frame} diff --git a/distribution/yocto-advanced/yocto-wega-layer.tex b/distribution/yocto-advanced/yocto-wega-layer.tex index 3cf83d4..b7c50c7 100644 --- a/distribution/yocto-advanced/yocto-wega-layer.tex +++ b/distribution/yocto-advanced/yocto-wega-layer.tex @@ -1,23 +1,23 @@ \begin{frame}[fragile] \frametitle{create an own layer for your BSP} this layer typical includes - \begin{itemize} - \item machine configuration - \item kernel - \item bootloader - \item wic configuration - \item other hw specific recipes, or append files - \end{itemize} +\begin{itemize} +\item machine configuration +\item kernel +\item bootloader +\item wic configuration +\item other hw specific recipes, or append files +\end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{yocto-bsp create} - the yocto-bsp command can be used to get a template: + the yocto-bsp command can be used to get a template: \begin{verbatim} poky % yocto-bsp create wega arm poky % cd meta-wega \end{verbatim} - The following files need to be available inside the layer: + The following files need to be available inside the layer: \begin{verbatim} recipes-kernel/linux-phytec/linux-phytec_4.4.52.bb recipes-kernel/linux-phytec/files/wega/defconfig @@ -33,13 +33,13 @@ conf/layer.conf \begin{frame}[fragile] \frametitle{create an own layer for your sw distro} this layer typical includes - \begin{itemize} - \item distro configuration - \item own applications - \item append files to customize standard sw from other layers - \item own classes - \end{itemize} - e.g. to create meta-foo use: +\begin{itemize} +\item distro configuration +\item own applications +\item append files to customize standard sw from other layers +\item own classes +\end{itemize} + e.g. to create meta-foo use: \begin{verbatim} poky % yocto-layer create foo \end{verbatim} @@ -58,8 +58,8 @@ poky/build-wega % \frametitle{overview} builds are configured using two configuration files \begin{itemize} - \item /home/devel/poky/build-ti/conf/bblayers.conf - \item /home/devel/poky/build-ti/conf/local.conf +\item /home/devel/poky/build-ti/conf/bblayers.conf +\item /home/devel/poky/build-ti/conf/local.conf \end{itemize} \end{frame} diff --git a/distribution/yocto-basic/yocto-adt.tex b/distribution/yocto-basic/yocto-adt.tex index 250f6a9..37680d0 100644 --- a/distribution/yocto-basic/yocto-adt.tex +++ b/distribution/yocto-basic/yocto-adt.tex @@ -90,7 +90,7 @@ poky/build % bitbake meta-ide-support %general configuration %\begin{description} %\item[YOCTOADT\_REPO] http repo with rootfs images and ipkg packages. -% Needs to match the layout from 'http://adtrepo.yoctoproject.org' +% Needs to match the layout from 'http://adtrepo.yoctoproject.org' %\item[YOCTOADT\_TARGETS] machine target architectures to setup cross SDKs %\item[YOCTOADT\_QEMU] install qemu? \[Y/N\] %\item[YOCTOADT\_NFS\_UTIL] needed for eclipse \[Y/N\] @@ -105,7 +105,7 @@ poky/build % bitbake meta-ide-support %\item[YOCTOADT\_ROOTFS\_<arch>] rfs images that should be used, e.g. sato-sdk %\item[YOCTOADT\_TARGET\_SYSROOT\_<arch>] needs to match above variable %\item[YOCTOADT\_TARGET\_SYSROOT\_LOC\_<arch>] path where the sysroot will be -% stored +% stored %\end{description} %\end{frame} % @@ -150,39 +150,39 @@ select 'Kepler' as update site and select 'Linux Tools' and \begin{frame} \frametitle{configure Eclipse} \begin{itemize} - \item select 'Window, Preferences, Yocto Project ADT' - \item select 'Standalone pre-built toolchain' - \item set Toolchain Root Location '/home/devel/sdk' - \item set Sysroot Location '/home/devel/sdk/core-image-minimal' - \item use 'native' as 'Target Options' - \item 'Apply' the Settings and close the dialog with 'OK' +\item select 'Window, Preferences, Yocto Project ADT' +\item select 'Standalone pre-built toolchain' +\item set Toolchain Root Location '/home/devel/sdk' +\item set Sysroot Location '/home/devel/sdk/core-image-minimal' +\item use 'native' as 'Target Options' +\item 'Apply' the Settings and close the dialog with 'OK' \end{itemize} \end{frame} \begin{frame} \frametitle{Hello World example} \begin{itemize} - \item select 'File, New, Project\dots' - \item select 'C/C++, C Project' - \item select 'Yocto Project ADT Autotools Project, Hello World ANSI C Project' - \item enter a 'Project name' and select 'Next' - \item enter 'Basic settings' and select 'Finish' - \item if opened, close the 'Welcome' window - \item right click on the root project folder and select 'Reconfigure Project' - \item right click on the root project folder and select 'Build Project' +\item select 'File, New, Project\dots' +\item select 'C/C++, C Project' +\item select 'Yocto Project ADT Autotools Project, Hello World ANSI C Project' +\item enter a 'Project name' and select 'Next' +\item enter 'Basic settings' and select 'Finish' +\item if opened, close the 'Welcome' window +\item right click on the root project folder and select 'Reconfigure Project' +\item right click on the root project folder and select 'Build Project' \end{itemize} \end{frame} \begin{frame} \frametitle{remote execution and debugging} \begin{itemize} - \item switch to 'Remote System Explorer' perspective - \item create a new 'TCF' connection - \item switch to 'C/C++' perspective and select 'Run / Debug Configurations' - \item select the preconfigured 'C/C++ Application' and select the correct - 'Connection' - \item set 'Remote Absolute File Path' to sth. like '/usr/bin/<yourapp>' - \item select 'Apply', 'Debug' - Next time you can use this preconfigured debug - configuration +\item switch to 'Remote System Explorer' perspective +\item create a new 'TCF' connection +\item switch to 'C/C++' perspective and select 'Run / Debug Configurations' +\item select the preconfigured 'C/C++ Application' and select the correct + 'Connection' +\item set 'Remote Absolute File Path' to sth. like '/usr/bin/<yourapp>' +\item select 'Apply', 'Debug' - Next time you can use this preconfigured debug + configuration \end{itemize} \end{frame} diff --git a/distribution/yocto-basic/yocto-imgbuild1.tex b/distribution/yocto-basic/yocto-imgbuild1.tex index 7437ab7..90b1a68 100644 --- a/distribution/yocto-basic/yocto-imgbuild1.tex +++ b/distribution/yocto-basic/yocto-imgbuild1.tex @@ -3,11 +3,11 @@ \frametitle{basics} \begin{itemize} \item images are constructed using the packages built earlier and put into the - Package Feeds + Package Feeds \item decisions of what to install on the image is based on the minimum - defined set of required components in an image recipe + defined set of required components in an image recipe \item this minimum set is then expanded based on dependencies to produce a - package solution + package solution \item variety of formats (tar.bz2, ext2, ext3, jffs, \dots) are supported \end{itemize} \end{frame} diff --git a/distribution/yocto-basic/yocto-workflow.tex b/distribution/yocto-basic/yocto-workflow.tex index 3d9651a..efa3a52 100644 --- a/distribution/yocto-basic/yocto-workflow.tex +++ b/distribution/yocto-basic/yocto-workflow.tex @@ -74,8 +74,8 @@ layers should be grouped by functionality \end{frame} \begin{frame}[fragile] - \frametitle{directory layout} - \begin{verbatim} +\frametitle{directory layout} +\begin{verbatim} poky ├── bitbake ├── documentation @@ -107,8 +107,8 @@ poky VAR = "value" \end{verbatim} \begin{itemize} - \item normal assignment - \item values need to be surrounded by double quotes +\item normal assignment +\item values need to be surrounded by double quotes \end{itemize} \end{frame} @@ -119,8 +119,8 @@ VAR ?= "1" VAR ?= "2" \end{verbatim} \begin{itemize} - \item VAR is set to "1" in this example - \item if there are multiple assignments using ?= the first one is used +\item VAR is set to "1" in this example +\item if there are multiple assignments using ?= the first one is used \end{itemize} \end{frame} @@ -131,8 +131,8 @@ VAR ??= "1" VAR ??= "2" \end{verbatim} \begin{itemize} - \item VAR is set to "2" in this example - \item if there are multiple assignments using ??= the last one is used +\item VAR is set to "2" in this example +\item if there are multiple assignments using ??= the last one is used \end{itemize} \end{frame} @@ -146,8 +146,8 @@ VAR_B ?= "12" VAR_B ??= "34" \end{verbatim} \begin{itemize} - \item VAR\_A contains "34" - \item VAR\_B contains "12" +\item VAR\_A contains "34" +\item VAR\_B contains "12" \end{itemize} \end{frame} @@ -161,7 +161,7 @@ VAR ?= "78" VAR ??= "78" \end{verbatim} \begin{itemize} - \item VAR contains "56" +\item VAR contains "56" \end{itemize} \end{frame} @@ -176,9 +176,9 @@ VAR_A = "33" echo ${VAR_A} ${VAR_B} ${VAR_C} \end{verbatim} \begin{itemize} - \item 33 B:33 C:22 - \item the content of VAR\_C is expanded immediately on assignment - \item the content of VAR\_B is expanded on use +\item 33 B:33 C:22 +\item the content of VAR\_C is expanded immediately on assignment +\item the content of VAR\_B is expanded on use \end{itemize} \end{frame} @@ -191,9 +191,9 @@ VAR_B = "56" VAR_B =+ "78" \end{verbatim} \begin{itemize} - \item VAR\_A contains "12 34" - \item VAR\_B contains "78 56" - \item there are spaces between the appended values +\item VAR\_A contains "12 34" +\item VAR\_B contains "78 56" +\item there are spaces between the appended values \end{itemize} \end{frame} @@ -206,9 +206,9 @@ VAR_B = "56" VAR_B =. "78" \end{verbatim} \begin{itemize} - \item VAR\_A contains "1234" - \item VAR\_B contains "7856" - \item there are no spaces between the appended values +\item VAR\_A contains "1234" +\item VAR\_B contains "7856" +\item there are no spaces between the appended values \end{itemize} \end{frame} @@ -232,8 +232,8 @@ VAR_append = "56" VAR_prepend = "12" \end{verbatim} \begin{itemize} - \item VAR contains "123456" - \item there are no spaces between the appended values +\item VAR contains "123456" +\item there are no spaces between the appended values \end{itemize} \end{frame} @@ -245,7 +245,7 @@ VAR = "foo" VAR_string1 = "bar" \end{verbatim} \begin{itemize} - \item if string1 is listed in OVERRIDES, use "bar" for value of VAR, otherwise use "foo" +\item if string1 is listed in OVERRIDES, use "bar" for value of VAR, otherwise use "foo" \end{itemize} \end{frame} @@ -255,7 +255,7 @@ VAR_string1 = "bar" VAR[some_flag]="foo" \end{verbatim} \begin{itemize} - \item associate a subsidiary flag value to a variable +\item associate a subsidiary flag value to a variable \end{itemize} \end{frame} @@ -268,8 +268,8 @@ B = "2" A2 = "Y" \end{verbatim} \begin{itemize} - \item Key expansion happens just before BitBake expands overrides. - \item A2 contains "X" +\item Key expansion happens just before BitBake expands overrides. +\item A2 contains "X" \end{itemize} \end{frame} @@ -413,8 +413,8 @@ $ bitbake -e <recipe-name> | grep FILESPATH \begin{frame} \frametitle{SRC\_URI patch options} \begin{itemize} - \item patches are applied in the order they appear in SRC\_URI - \item quilt is used to apply the patches +\item patches are applied in the order they appear in SRC\_URI +\item quilt is used to apply the patches \end{itemize} \begin{description} \item[apply=no] apply patch or not; default is yes @@ -497,10 +497,10 @@ Same as include, but returns an error, if include file not found. \begin{frame} \frametitle{basics} \begin{itemize} - \item are typically used to modify or extend the functionality of the base - recipe - \item it's recommended by the Yocto project to use bbappend files instead - of copying and modyfiing a recipe in an own layer +\item are typically used to modify or extend the functionality of the base + recipe +\item it's recommended by the Yocto project to use bbappend files instead + of copying and modyfiing a recipe in an own layer \end{itemize} \end{frame} @@ -516,8 +516,8 @@ an append file must be named after the base package: \begin{frame} \frametitle{basics} \begin{itemize} - \item python can be used to write functions - \item e.g. write your own image generation class +\item python can be used to write functions +\item e.g. write your own image generation class \end{itemize} \end{frame} @@ -525,17 +525,17 @@ an append file must be named after the base package: \begin{frame} \frametitle{basics} \begin{itemize} - \item are defined and ordered in classes - \item can be overridden by classes and recipes +\item are defined and ordered in classes +\item can be overridden by classes and recipes \end{itemize} \end{frame} \begin{frame} - \frametitle{download \& patch} +\frametitle{download \& patch} \begin{description} \item [do\_checkuri] validates the SRC\_URI value \item [do\_checkuriall] validates the SRC\_URI value for all recipes required - to build a target" + to build a target" \item [do\_fetch] fetches the source code \item [do\_fetchall] fetches all remote sources required to build a target \item [do\_unpack] unpacks the source code into a working directory @@ -544,18 +544,18 @@ an append file must be named after the base package: \end{frame} \begin{frame} - \frametitle{configure \& compile} +\frametitle{configure \& compile} \begin{description} \item [do\_configure] configures the source by enabling and disabling any - build-time and configuration options for the software being built + build-time and configuration options for the software being built \item [do\_configure\_ptest\_base] configures the runtime test suite included - in the software being built + in the software being built \item [do\_compile] compiles the source in the compilation directory \item [do\_install] copies files from the compilation directory to a holding - area + area \item [do\_populate\_sysroot] copies a subset of files installed by - do\_install into the sysroot in order to make them available to other - recipes + do\_install into the sysroot in order to make them available to other + recipes \end{description} \end{frame} @@ -563,34 +563,34 @@ an append file must be named after the base package: \frametitle{packaging} \begin{description} \item [do\_packagedata] creates package metadata used by the build system to - generate the final packages + generate the final packages \item [do\_package] analyzes the content of the holding area and splits it - into subsets based on available packages and files + into subsets based on available packages and files \item [do\_package\_write] creates the actual packages and places them in the - Package Feed area + Package Feed area \item [do\_package\_write\_deb] creates the actual DEB packages and places - them in the Package Feed area + them in the Package Feed area \item [do\_package\_write\_ipk] creates the actual IPK packages and places - them in the Package Feed area + them in the Package Feed area \item [do\_package\_write\_rpm] creates the actual RPM packages and places - them in the Package Feed area + them in the Package Feed area \item [do\_package\_write\_tar] creates tar archives for packages and places - them in the Package Feed area + them in the Package Feed area \item [do\_package\_index] creates or updates the index in the Package Feed - area + area \end{description} \end{frame} \begin{frame} - \frametitle{deploy} +\frametitle{deploy} \begin{description} \item [do\_rootfs] creates the root filesystem (file and directory structure) - for an image + for an image \item [do\_vmdkimg] creates a .vmdk image for use with VMware and compatible - virtual machine hosts" + virtual machine hosts" \item [do\_deploy] writes deployable output files to the deploy directory \item [do\_populate\_sdk] creates the file and directory structure for an - installable SDK + installable SDK \end{description} \end{frame} @@ -599,13 +599,13 @@ an append file must be named after the base package: \begin{description} \item [do\_clean] removes all output files for a target \item [do\_cleanall] removes all output files, shared state cache, and - downloaded source files for a target + downloaded source files for a target \item [do\_cleansstate] removes all output files and shared state cache for a - target + target \item [do\_rm\_work] removes work files after the build system has finished - with them + with them \item [do\_rm\_work\_all] top-level task for removing work files after the - build system has finished with them + build system has finished with them \end{description} \end{frame} @@ -613,20 +613,20 @@ an append file must be named after the base package: \frametitle{kernel} \begin{description} \item [do\_kernel\_checkout] checks out source/meta branches for a linux-yocto - style kernel + style kernel \item [do\_validate\_branches] ensures that the source/meta branches are on - the locations specified by their SRCREV values for a linux-yocto style - kernel" + the locations specified by their SRCREV values for a linux-yocto style + kernel" \item [do\_kernel\_configme] assembles the kernel configuration for a - linux-yocto style kernel + linux-yocto style kernel \item [do\_menuconfig] runs 'make menuconfig' for the kernel \item [do\_diffconfig] compares the old and new config files after running - do\_menuconfig for the kernel + do\_menuconfig for the kernel \item [do\_savedefconfig] creates a minimal Linux kernel configuration file \item [do\_kernel\_configcheck] validates the kernel configuration for a - linux-yocto style kernel + linux-yocto style kernel \item [do\_sizecheck] checks the size of the kernel image against - KERNEL\_IMAGE\_MAXSIZE (if set) + KERNEL\_IMAGE\_MAXSIZE (if set) \end{description} \end{frame} @@ -634,12 +634,12 @@ an append file must be named after the base package: \frametitle{kernel} \begin{description} \item [do\_compile\_kernelmodules] compiles loadable modules for the Linux - kernel + kernel \item [do\_strip] strips unneeded sections out of the Linux kernel image \item [do\_kernel\_link\_vmlinux] creates a symbolic link in arch/\$arch/boot - for vmlinux kernel images + for vmlinux kernel images \item [do\_bundle\_initramfs] combines an initial ramdisk image and kernel - together to form a single image + together to form a single image \end{description} \end{frame} @@ -647,9 +647,9 @@ an append file must be named after the base package: \frametitle{licenses} \begin{description} \item [do\_populate\_lic] writes license information for the recipe that is - collected later when the image is constructed + collected later when the image is constructed \item [do\_spdx] a build stage that takes the source code and scans it on a - remote FOSSOLOGY server in order to produce an SPDX document + remote FOSSOLOGY server in order to produce an SPDX document \end{description} \end{frame} @@ -657,11 +657,11 @@ an append file must be named after the base package: \frametitle{special stuff} \begin{description} \item [do\_uboot\_mkimage] creates a uImage file from the kernel for the - U-Boot bootloader + U-Boot bootloader \item [do\_generate\_qt\_config\_file] writes a qt.conf file for building a - Qt-based application + Qt-based application \item [do\_devshell] starts a shell with the environment set up for - development/debugging + development/debugging \item [do\_listtasks] lists all defined tasks for a target \end{description} \end{frame} @@ -671,49 +671,49 @@ an append file must be named after the base package: \frametitle{basics} a machine config is used to describe a board \begin{itemize} - \item machine configs are stored in the layers: conf/machine/* - \item settings can be splitted in different include *.inc files - \item e.g. one include for CPU that is used by the SoC inc file, +\item machine configs are stored in the layers: conf/machine/* +\item settings can be splitted in different include *.inc files +\item e.g. one include for CPU that is used by the SoC inc file, that is used by the Board .conf file - \item the include files can be stored in different layers +\item the include files can be stored in different layers \end{itemize} \end{frame} \begin{frame} - \frametitle{u-boot \& kernel} +\frametitle{u-boot \& kernel} \begin{description} - \item [UBOOT\_MACHINE] value passed on the make command line when building a - U-Boot image - \item [UBOOT\_MAKE\_TARGET] target called in the Makefile - \item [UBOOT\_ENTRYPOINT] entry point for the U-Boot image - \item [PREFERRED\_PROVIDER\_virtual/kernel] default kernel - \item [KERNEL\_DEVICETREE] default devicetree - \item [KERNEL\_IMAGETYPE] type of kernel to build for a device, - defaults to 'zImage' +\item [UBOOT\_MACHINE] value passed on the make command line when building a + U-Boot image +\item [UBOOT\_MAKE\_TARGET] target called in the Makefile +\item [UBOOT\_ENTRYPOINT] entry point for the U-Boot image +\item [PREFERRED\_PROVIDER\_virtual/kernel] default kernel +\item [KERNEL\_DEVICETREE] default devicetree +\item [KERNEL\_IMAGETYPE] type of kernel to build for a device, + defaults to 'zImage' \end{description} \end{frame} \begin{frame} - \frametitle{hardware} +\frametitle{hardware} \begin{description} - \item[SOC\_FAMILY] groups together machines based upon the same family of SOC - (System On Chip) - \item [MACHINEOVERRIDES] lists overrides specific to the current machine. - By default, this list includes the value of MACHINE. This can be used in - recipes; e.g. MACHINEOVERRIDES =. "mymachine" and in the recipe - SRC\_URI\_append\_mymachine = "file://mymachine-quirk.patch" - \item [MACHINE\_FEATURES] list of hardware features the MACHINE supports - \footnote{acpi, alsa, apm, bluetooth, ext2, irda, keyboard, pci, pcmcia, - screen, serial, touchscreen, usbgadget, usbhost, wifi} - \item [MACHINE\_EXTRA\_RRECOMMENDS] list of machine-specific packages to - install as part of the image being built that are not essential for booting - the machine. The image being built has no build dependencies on the packages - in this list. +\item[SOC\_FAMILY] groups together machines based upon the same family of SOC + (System On Chip) +\item [MACHINEOVERRIDES] lists overrides specific to the current machine. + By default, this list includes the value of MACHINE. This can be used in + recipes; e.g. MACHINEOVERRIDES =. "mymachine" and in the recipe + SRC\_URI\_append\_mymachine = "file://mymachine-quirk.patch" +\item [MACHINE\_FEATURES] list of hardware features the MACHINE supports +\footnote{acpi, alsa, apm, bluetooth, ext2, irda, keyboard, pci, pcmcia, + screen, serial, touchscreen, usbgadget, usbhost, wifi} +\item [MACHINE\_EXTRA\_RRECOMMENDS] list of machine-specific packages to + install as part of the image being built that are not essential for booting + the machine. The image being built has no build dependencies on the packages + in this list. \item [SERIAL\_CONSOLE] speed and device for the serial port used to attach - the serial console. This variable is given to the kernel as the 'console' - parameter. After booting occurs, getty is started on that port so remote - login is possible. - \end{description} + the serial console. This variable is given to the kernel as the 'console' + parameter. After booting occurs, getty is started on that port so remote + login is possible. +\end{description} \end{frame} \begin{frame} @@ -733,6 +733,6 @@ that is used by the Board .conf file \item [PREFERRED\_PROVIDER\_virtual/kernel] recommended kernel \item [IMAGE\_FSTYPES] formats for the rootfs, e.g. "ext3 tar.bz2" \item [IMAGE\_CLASSES] list of classes that all images should inherit, default - is image\_types, e.g. to hook in own image generation code + is image\_types, e.g. to hook in own image generation code \end{description} \end{frame} diff --git a/distribution/yocto-intro/pres_yocto-intro.tex b/distribution/yocto-intro/pres_yocto-intro.tex index dfc7b5e..8b18ead 100644 --- a/distribution/yocto-intro/pres_yocto-intro.tex +++ b/distribution/yocto-intro/pres_yocto-intro.tex @@ -7,26 +7,26 @@ \begin{frame} \frametitle{Agenda} \begin{itemize} - \item Intro - \begin{itemize} - \item What is Yocto? - \item History - \item Yocto compared with other methods - \end{itemize} - \item Basics - \begin{itemize} - \item Understand the workflow - \item Build predefined images - \item Using ADT - \end{itemize} - \item Advanced - \begin{itemize} - \item Using BSP layers - \item Create layers \& recipes for own applications - \item Define a distribution - \item Create a customized image class - \item Build images - \end{itemize} +\item Intro +\begin{itemize} +\item What is Yocto? +\item History +\item Yocto compared with other methods +\end{itemize} +\item Basics +\begin{itemize} +\item Understand the workflow +\item Build predefined images +\item Using ADT +\end{itemize} +\item Advanced +\begin{itemize} +\item Using BSP layers +\item Create layers \& recipes for own applications +\item Define a distribution +\item Create a customized image class +\item Build images +\end{itemize} \end{itemize} \end{frame} diff --git a/distribution/yocto-intro/yocto-intro.tex b/distribution/yocto-intro/yocto-intro.tex index 14cde2d..23cb185 100644 --- a/distribution/yocto-intro/yocto-intro.tex +++ b/distribution/yocto-intro/yocto-intro.tex @@ -1,27 +1,27 @@ \begin{frame} \frametitle{Yocto is \dots} \begin{itemize} - \item an Ecosystem (not a single open-source project) - \item a collection of embedded projects and tooling - \item a place for Industry to publish BSPs - \item NOT an embedded Linux distribution +\item an Ecosystem (not a single open-source project) +\item a collection of embedded projects and tooling +\item a place for Industry to publish BSPs +\item NOT an embedded Linux distribution \end{itemize} \dots used to build a Linux system from source in about an hour \footnote{quad i7, 16GB - RAM, fast disks, needed} + RAM, fast disks, needed} \end{frame} \begin{frame} \frametitle{the Yocto project family} \begin{description} - \item[Poky] reference build system / distribution - \begin{description} - \item[BitBake] build-engine - \item[Toaster] graphical user interface for BitBake - \item[meta] shared base layer of recipes and classes - \item[Example BSPs] for qemux86, mpc8315e-rdb, beaglebone - \end{description} - \item[ADT] development environment for user-space applications - \item[Eclipse IDE Plugin] integration of ADT into the Eclipse IDE +\item[Poky] reference build system / distribution +\begin{description} +\item[BitBake] build-engine +\item[Toaster] graphical user interface for BitBake +\item[meta] shared base layer of recipes and classes +\item[Example BSPs] for qemux86, mpc8315e-rdb, beaglebone +\end{description} +\item[ADT] development environment for user-space applications +\item[Eclipse IDE Plugin] integration of ADT into the Eclipse IDE \end{description} \end{frame} @@ -29,12 +29,12 @@ \frametitle{Poky is \dots} the Yocto key project; a reference distribution consisting of \begin{itemize} - \item a build system for Linux (openembedded + customized busybox, - psplash, alsa-state and tiny-init) - \item Yocto Linux kernel - \item build recipes for common open-source software from openembedded - \item able to generate toolchains for several architectures - \item documentation +\item a build system for Linux (openembedded + customized busybox, + psplash, alsa-state and tiny-init) +\item Yocto Linux kernel +\item build recipes for common open-source software from openembedded +\item able to generate toolchains for several architectures +\item documentation \end{itemize} release cycle: about 6 months \end{frame} @@ -93,19 +93,19 @@ freescale.com & 159 & 187 & 0,52\% & 0,43\% \\ \begin{frame} \frametitle{Yocto principles} \begin{itemize} - \item poky provides a collection of software build recipes - \item customize build recipe blueprints for your own needs - \item distinguishing between app and system developers - \item layer model for modular development, reuse, and customizations +\item poky provides a collection of software build recipes +\item customize build recipe blueprints for your own needs +\item distinguishing between app and system developers +\item layer model for modular development, reuse, and customizations \end{itemize} \end{frame} \begin{frame} \frametitle{cross-build vs. binary distribution} \begin{itemize} - \item men-power needed for building an own distribution? - \item security tracking? - \item optimizations needed on all binaries? - \item cross-compile wanted? +\item men-power needed for building an own distribution? +\item security tracking? +\item optimizations needed on all binaries? +\item cross-compile wanted? \end{itemize} \end{frame} diff --git a/distribution/yocto-x86/pres_yocto-x86.tex b/distribution/yocto-x86/pres_yocto-x86.tex index b48abee..ccef2e6 100644 --- a/distribution/yocto-x86/pres_yocto-x86.tex +++ b/distribution/yocto-x86/pres_yocto-x86.tex @@ -6,47 +6,47 @@ \begin{frame} \frametitle{Agenda} \begin{itemize} - \item Yocto Intro - \begin{itemize} - \item What is Yocto/Poky? - \item Yocto compared with other methods - \end{itemize} - - \item Yocto Feature Tour - \begin{itemize} - \item Understand the workflow - \item Using BSP layers - \item Extend and build predefined images - \item Using ADT - \end{itemize} - - \item Autotools - \begin{itemize} - \item Autoconf - \item Automake - \item Libtool - \end{itemize} - - \item Yocto Customization - \begin{itemize} - \item Application Integration - \item Kernel Integration - \end{itemize} +\item Yocto Intro +\begin{itemize} +\item What is Yocto/Poky? +\item Yocto compared with other methods +\end{itemize} + +\item Yocto Feature Tour +\begin{itemize} +\item Understand the workflow +\item Using BSP layers +\item Extend and build predefined images +\item Using ADT +\end{itemize} + +\item Autotools +\begin{itemize} +\item Autoconf +\item Automake +\item Libtool +\end{itemize} + +\item Yocto Customization +\begin{itemize} +\item Application Integration +\item Kernel Integration +\end{itemize} \end{itemize} \end{frame} \input{../yocto-intro/yocto-intro} \begin{frame} - \frametitle{Yocto Feature Tour} - \begin{itemize} - \item Workflow - \item Recipes - \item Images - \item ADT - \item Layers - \item extend Images - \end{itemize} +\frametitle{Yocto Feature Tour} +\begin{itemize} +\item Workflow +\item Recipes +\item Images +\item ADT +\item Layers +\item extend Images +\end{itemize} \end{frame} \input{../yocto-basic/yocto-workflow} @@ -60,37 +60,37 @@ \begin{frame} \frametitle{if we still have (a lot of) time} - \begin{itemize} - \item try to build and run the enlightenment window manager - \item the slides show just the start - \item you need to fix two build bugs - \item you need to add some runtime dependencies - \end{itemize} +\begin{itemize} +\item try to build and run the enlightenment window manager +\item the slides show just the start +\item you need to fix two build bugs +\item you need to add some runtime dependencies +\end{itemize} \end{frame} \input{yocto-add-efl} \begin{frame} - \frametitle{Autotools} - \begin{itemize} - \item Autoconf - \item Automake - \item standalone example - \item Libtool - \item library example - \end{itemize} +\frametitle{Autotools} +\begin{itemize} +\item Autoconf +\item Automake +\item standalone example +\item Libtool +\item library example +\end{itemize} \end{frame} \input{../autotools/autotools.tex} \subsection{adding own applications} \begin{frame} - \frametitle{Yocto Customization} - \begin{itemize} - \item Application Integration - \item Kernel Integration - \item Yocto Helpers - \end{itemize} +\frametitle{Yocto Customization} +\begin{itemize} +\item Application Integration +\item Kernel Integration +\item Yocto Helpers +\end{itemize} \end{frame} \input{../yocto-advanced/yocto-add-simple-application} diff --git a/frameworks/middleware/handout_middleware.tex b/frameworks/middleware/handout_middleware.tex index 44c75f7..7e227fa 100644 --- a/frameworks/middleware/handout_middleware.tex +++ b/frameworks/middleware/handout_middleware.tex @@ -10,7 +10,7 @@ There are different kinds of middleware: \begin{description} \item[RPC] Remote Procedure Calls are used to trigger a function in e.g. Task\_A - calls a function of Task\_B + calls a function of Task\_B \item[MOM] Message Orientated Middleware is used the send messages between Taks. (1:n and 1:1) \item[ORB] An Object Request Broker is used to host complete objects of an @@ -91,27 +91,27 @@ possible one of these libraries should be used: \subparagraph{Terminology} \begin{description} \item[bus address] is the name of ther underlying unix socket, e.g. - \cmd{/tmp/dbus\_lx.socket} + \cmd{/tmp/dbus\_lx.socket} \item[unique bus name] is generated by the daemon for every connection \item[well-known bus name] must be set by the user for a connection, multiple - names for one connection are allowed. A well known bus name has a namespace - and is seperated by dots, e.g. \cmd{de.linutronix.Foo}. + names for one connection are allowed. A well known bus name has a namespace + and is seperated by dots, e.g. \cmd{de.linutronix.Foo}. \item[Object] Each Endpoint is called Object. An Object offers services on the - bus. A client can create multiple Objects. + bus. A client can create multiple Objects. \item[Proxies] are used to access Objects. The use of Proxies and Objects are - defined by the language binding, to fit best in the schemantics of the - programming language. + defined by the language binding, to fit best in the schemantics of the + programming language. \item[Methods] may require input parameters. Each call returns its output - parameters or an exception if the action couldn't be performed. + parameters or an exception if the action couldn't be performed. \item[Signals] are used for 1:n message passing. An application needs to be subscribed for a signal. A filter can be provided during subscription, to get only signals with certain values in its parameters. \item[AMI] Asynchronus Method Invocation can be used to make non blocking calls to Methods. \item[Activation] A config file can provide the information which objects are - hosted by an application. The dbus daemon is able, to activate those - applications on request or by invoking a method of an object in the context - of the clients well-known bus name. + hosted by an application. The dbus daemon is able, to activate those + applications on request or by invoking a method of an object in the context + of the clients well-known bus name. \end{description} \begin{figure} @@ -186,7 +186,7 @@ calculated values. \label{img:rtorb} \end{figure} -As shown in figure \ref{img:rtorb}, a real-time capable ORB extends a standard +As shown in figure \ref{img:rtorb}, a real-time capable ORB extends a standard ORB with the following features: locating objects in constant time, preallocation of resources, operating system independent priority handling, priority based scheduling. @@ -230,13 +230,13 @@ First an IDL for the Ping interface will be created (\cmd{ping.idl}: \begin{lstlisting} module Linutronix{ - interface Ping{ - oneway void send(in string payload); - }; + interface Ping{ + oneway void send(in string payload); + }; }; \end{lstlisting} -Then a IDL compiler is used to generater headers and wrappers for client and +Then a IDL compiler is used to generater headers and wrappers for client and server and a dummy implementation file: \cmd{tao\_idl -GI ping.idl} @@ -280,10 +280,10 @@ Linutronix_Ping_i::~Linutronix_Ping_i (void) void Linutronix_Ping_i::send ( const char * payload) { - // Add your implementation here - struct timespec time_rx; - clock_gettime(CLOCK_MONOTONIC, &time_rx); - std::cout<<time_rx.tv_sec<<":"<<time_rx.tv_nsec/1000<<": "<<payload<<"\n"; + // Add your implementation here + struct timespec time_rx; + clock_gettime(CLOCK_MONOTONIC, &time_rx); + std::cout<<time_rx.tv_sec<<":"<<time_rx.tv_nsec/1000<<": "<<payload<<"\n"; } \end{lstlisting} @@ -300,70 +300,70 @@ implementation: #include <tao/RTCORBA/RTCORBA.h> int main(int argc, char* argv[]){ - try{ - // initialize ORB - CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "ServerORB"); - std::cout<<"ORB initialized"<<std::endl; - - // access RT Extensions - CORBA::Object_var rtorb = orb->resolve_initial_references("RTORB"); - RTCORBA::RTORB_var rt_orb = RTCORBA::RTORB::_narrow(rtorb); - std::cout<<"RT Extensions OK"<<std::endl; - - // obtain root_poa - CORBA::Object_var poa = orb->resolve_initial_references("RootPOA"); - PortableServer::POA_var root_poa = PortableServer::POA::_narrow(poa.in()); - - // activate POA Manager - PortableServer::POAManager_var poa_manager = root_poa->the_POAManager(); - poa_manager->activate(); - std::cout<<"root_poa OK"<<std::endl; - - // create Policy - CORBA::PolicyList ping_policy(1); - ping_policy.length(1); - ping_policy[0] = rt_orb->create_priority_model_policy( - RTCORBA::CLIENT_PROPAGATED, RTCORBA::maxPriority); - - // create ObjectAdapter, assign Policy - PortableServer::POA_var ping_poa = - root_poa->create_POA("ping_poa", poa_manager.in(), ping_policy); - - std::cout<<"Policy assigned"<<std::endl; - - // create the servant - Linutronix_Ping_i ping_i; - - // activate servant - PortableServer::ObjectId_var object_id = ping_poa->activate_object(&ping_i); - CORBA::Object_var ping_obj = ping_poa->id_to_reference(object_id.in()); - CORBA::String_var ior = orb->object_to_string(ping_obj.in()); - std::cout<<"Servant activated"<<std::endl; - - // NameService - CORBA::Object_var naming_obj = - orb->resolve_initial_references("NameService"); - - CosNaming::NamingContext_var naming_context = - CosNaming::NamingContext::_narrow(naming_obj.in()); - - CosNaming::Name name(1); - name.length(1); - name[0].id = CORBA::string_dup("Receiver"); - naming_context->rebind(name, ping_obj.in()); - std::cout<<"Bound Receiver to NameService"<<std::endl; - - // start ORB - orb->run(); - std::cout<<"ORB ready"<<std::endl; - - //destroy - root_poa->destroy(1,1); - orb->destroy(); - - } catch(CORBA::Exception &any) { - std::cout<<"Exception: "<<any<<std::endl; - } + try{ + // initialize ORB + CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "ServerORB"); + std::cout<<"ORB initialized"<<std::endl; + + // access RT Extensions + CORBA::Object_var rtorb = orb->resolve_initial_references("RTORB"); + RTCORBA::RTORB_var rt_orb = RTCORBA::RTORB::_narrow(rtorb); + std::cout<<"RT Extensions OK"<<std::endl; + + // obtain root_poa + CORBA::Object_var poa = orb->resolve_initial_references("RootPOA"); + PortableServer::POA_var root_poa = PortableServer::POA::_narrow(poa.in()); + + // activate POA Manager + PortableServer::POAManager_var poa_manager = root_poa->the_POAManager(); + poa_manager->activate(); + std::cout<<"root_poa OK"<<std::endl; + + // create Policy + CORBA::PolicyList ping_policy(1); + ping_policy.length(1); + ping_policy[0] = rt_orb->create_priority_model_policy( + RTCORBA::CLIENT_PROPAGATED, RTCORBA::maxPriority); + + // create ObjectAdapter, assign Policy + PortableServer::POA_var ping_poa = + root_poa->create_POA("ping_poa", poa_manager.in(), ping_policy); + + std::cout<<"Policy assigned"<<std::endl; + + // create the servant + Linutronix_Ping_i ping_i; + + // activate servant + PortableServer::ObjectId_var object_id = ping_poa->activate_object(&ping_i); + CORBA::Object_var ping_obj = ping_poa->id_to_reference(object_id.in()); + CORBA::String_var ior = orb->object_to_string(ping_obj.in()); + std::cout<<"Servant activated"<<std::endl; + + // NameService + CORBA::Object_var naming_obj = + orb->resolve_initial_references("NameService"); + + CosNaming::NamingContext_var naming_context = + CosNaming::NamingContext::_narrow(naming_obj.in()); + + CosNaming::Name name(1); + name.length(1); + name[0].id = CORBA::string_dup("Receiver"); + naming_context->rebind(name, ping_obj.in()); + std::cout<<"Bound Receiver to NameService"<<std::endl; + + // start ORB + orb->run(); + std::cout<<"ORB ready"<<std::endl; + + //destroy + root_poa->destroy(1,1); + orb->destroy(); + + } catch(CORBA::Exception &any) { + std::cout<<"Exception: "<<any<<std::endl; + } return 0; } \end{lstlisting} @@ -385,69 +385,69 @@ static std::string str; int main(int argc, char* argv[]) { - if (argc > 1) - str = argv[1]; - else - str = "no argument given"; - - try{ - // initialize ORB - CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "ClientORB"); - std::cout<<"ORB ok"<<std::endl; - - // get RTORB - CORBA::Object_var rtorb = orb->resolve_initial_references("RTORB"); - RTCORBA::RTORB_var rt_orb = RTCORBA::RTORB::_narrow(rtorb.in()); - std::cout<<"RTORB ok"<<std::endl; - - // NamingService - CORBA::Object_var naming_obj = - orb->resolve_initial_references("NameService"); - - CosNaming::NamingContext_var naming_context = - CosNaming::NamingContext::_narrow(naming_obj.in()); - - std::cout<<"NamingService ok"<<std::endl; - - CosNaming::Name name(1); - name.length(1); - name[0].id = CORBA::string_dup("Receiver"); - - // receive Object - CORBA::Object_var ping_obj = naming_context->resolve(name); - ping = Linutronix::Ping::_narrow(ping_obj.in()); - std::cout<<"TransferOjekt ok"<<std::endl; - - // Private Connection Policy - CORBA::PolicyList pc_policy(1); - pc_policy.length(1); - pc_policy[0] = rt_orb->create_private_connection_policy(); - - CORBA::Object_var new_tran = - ping->_set_policy_overrides(pc_policy, CORBA::SET_OVERRIDE); - - ping = Linutronix::Ping::_narrow(new_tran.in()); - std::cout<<"PrivateConnection ok"<<std::endl; - - struct timespec time_tx; - struct timespec time_done; - - for(unsigned int i = 0; i < 100; i++) - { - clock_gettime(CLOCK_MONOTONIC, &time_tx); - ping->send((const char*)str.c_str()); - clock_gettime(CLOCK_MONOTONIC, &time_done); - std::cout<<time_tx.tv_sec<<":"<<time_tx.tv_nsec/1000<<"\n"; - std::cout<<time_done.tv_sec<<":"<<time_done.tv_nsec/1000<<"\n\n"; - } - - // destroy ORB - orb->destroy(); - - } catch(CORBA::Exception &any) { - std::cout<<"Exception occured: "<<any<<std::endl; - } - return 0; + if (argc > 1) + str = argv[1]; + else + str = "no argument given"; + + try{ + // initialize ORB + CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "ClientORB"); + std::cout<<"ORB ok"<<std::endl; + + // get RTORB + CORBA::Object_var rtorb = orb->resolve_initial_references("RTORB"); + RTCORBA::RTORB_var rt_orb = RTCORBA::RTORB::_narrow(rtorb.in()); + std::cout<<"RTORB ok"<<std::endl; + + // NamingService + CORBA::Object_var naming_obj = + orb->resolve_initial_references("NameService"); + + CosNaming::NamingContext_var naming_context = + CosNaming::NamingContext::_narrow(naming_obj.in()); + + std::cout<<"NamingService ok"<<std::endl; + + CosNaming::Name name(1); + name.length(1); + name[0].id = CORBA::string_dup("Receiver"); + + // receive Object + CORBA::Object_var ping_obj = naming_context->resolve(name); + ping = Linutronix::Ping::_narrow(ping_obj.in()); + std::cout<<"TransferOjekt ok"<<std::endl; + + // Private Connection Policy + CORBA::PolicyList pc_policy(1); + pc_policy.length(1); + pc_policy[0] = rt_orb->create_private_connection_policy(); + + CORBA::Object_var new_tran = + ping->_set_policy_overrides(pc_policy, CORBA::SET_OVERRIDE); + + ping = Linutronix::Ping::_narrow(new_tran.in()); + std::cout<<"PrivateConnection ok"<<std::endl; + + struct timespec time_tx; + struct timespec time_done; + + for(unsigned int i = 0; i < 100; i++) + { + clock_gettime(CLOCK_MONOTONIC, &time_tx); + ping->send((const char*)str.c_str()); + clock_gettime(CLOCK_MONOTONIC, &time_done); + std::cout<<time_tx.tv_sec<<":"<<time_tx.tv_nsec/1000<<"\n"; + std::cout<<time_done.tv_sec<<":"<<time_done.tv_nsec/1000<<"\n\n"; + } + + // destroy ORB + orb->destroy(); + + } catch(CORBA::Exception &any) { + std::cout<<"Exception occured: "<<any<<std::endl; + } + return 0; } \end{lstlisting} @@ -456,19 +456,19 @@ appropirate config file (\cmd{ping.idl}) looks like this: \begin{lstlisting} project(*Receiver): rt_server, naming { - requires += exceptions - Source_Files { - ping_I.cpp - Receiver.cpp - } + requires += exceptions + Source_Files { + ping_I.cpp + Receiver.cpp + } } project(*Supplier): rt_client, naming { - requires += exceptions - Source_Files { - pingC.cpp - Supplier.cpp - } + requires += exceptions + Source_Files { + pingC.cpp + Supplier.cpp + } } \end{lstlisting} @@ -501,71 +501,71 @@ First \cmd{ping-server.c} will be created to host the ping object: #include <time.h> static DBusHandlerResult signal_filter - (DBusConnection *connection, DBusMessage *message, void *user_data); + (DBusConnection *connection, DBusMessage *message, void *user_data); int main(int argc, char **argv) { - GMainLoop *loop; - DBusConnection *bus; - DBusError error; - - loop = g_main_loop_new (NULL, FALSE); - dbus_error_init (&error); - bus = dbus_bus_get (DBUS_BUS_SESSION, &error); - - if (!bus) { - g_warning ("Failed to connect to the D-BUS daemon: %s", error.message); - dbus_error_free (&error); - return 1; - } - - dbus_connection_setup_with_g_main (bus, NULL); - /* listening to messages from all objects as no path is specified */ - dbus_bus_add_match (bus, "type='signal',interface='de.linutronix.Ping'", - &error); - dbus_connection_add_filter (bus, signal_filter, loop, NULL); - g_main_loop_run (loop); - - return 0; + GMainLoop *loop; + DBusConnection *bus; + DBusError error; + + loop = g_main_loop_new (NULL, FALSE); + dbus_error_init (&error); + bus = dbus_bus_get (DBUS_BUS_SESSION, &error); + + if (!bus) { + g_warning ("Failed to connect to the D-BUS daemon: %s", error.message); + dbus_error_free (&error); + return 1; + } + + dbus_connection_setup_with_g_main (bus, NULL); + /* listening to messages from all objects as no path is specified */ + dbus_bus_add_match (bus, "type='signal',interface='de.linutronix.Ping'", + &error); + dbus_connection_add_filter (bus, signal_filter, loop, NULL); + g_main_loop_run (loop); + + return 0; } static DBusHandlerResult signal_filter - (DBusConnection *connection, DBusMessage *message, void *user_data) + (DBusConnection *connection, DBusMessage *message, void *user_data) { - /* User data is the event loop we are running in */ - GMainLoop *loop = user_data; - - /* A signal from the bus saying we are about to be disconnected */ - if (dbus_message_is_signal(message, "org.freedesktop.Local", - "Disconnected")) - { - /* Tell the main loop to quit */ - g_main_loop_quit (loop); - /* We have handled this message, don't pass it on */ - return DBUS_HANDLER_RESULT_HANDLED; - } - else if (dbus_message_is_signal (message, "de.linutronix.Ping", "Ping")) - { - DBusError error; - char *s; - - dbus_error_init (&error); - - if (dbus_message_get_args(message, &error, DBUS_TYPE_STRING, &s, - DBUS_TYPE_INVALID)) - { - struct timespec rx_time; - clock_gettime(CLOCK_MONOTONIC, &rx_time); - g_print("ping received: %s - %d:%d\n", s, rx_time.tv_sec, - rx_time.tv_nsec/1000); - // dbus_free (s); - } else { - g_print("ping received, but error getting message: %s\n", error.message); - dbus_error_free (&error); - } - return DBUS_HANDLER_RESULT_HANDLED; - } - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; + /* User data is the event loop we are running in */ + GMainLoop *loop = user_data; + + /* A signal from the bus saying we are about to be disconnected */ + if (dbus_message_is_signal(message, "org.freedesktop.Local", + "Disconnected")) + { + /* Tell the main loop to quit */ + g_main_loop_quit (loop); + /* We have handled this message, don't pass it on */ + return DBUS_HANDLER_RESULT_HANDLED; + } + else if (dbus_message_is_signal (message, "de.linutronix.Ping", "Ping")) + { + DBusError error; + char *s; + + dbus_error_init (&error); + + if (dbus_message_get_args(message, &error, DBUS_TYPE_STRING, &s, + DBUS_TYPE_INVALID)) + { + struct timespec rx_time; + clock_gettime(CLOCK_MONOTONIC, &rx_time); + g_print("ping received: %s - %d:%d\n", s, rx_time.tv_sec, + rx_time.tv_nsec/1000); + // dbus_free (s); + } else { + g_print("ping received, but error getting message: %s\n", error.message); + dbus_error_free (&error); + } + return DBUS_HANDLER_RESULT_HANDLED; + } + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } \end{lstlisting} @@ -586,59 +586,59 @@ static const char *v_STRING; int main (int argc, char **argv) { - GMainLoop *loop; - DBusConnection *bus; - DBusError error; - - if (argc > 1) - v_STRING = argv[1]; - else - v_STRING = "no arg given"; - - /* Create a new event loop to run in */ - loop = g_main_loop_new (NULL, FALSE); - - /* Get a connection to the session bus */ - dbus_error_init (&error); - bus = dbus_bus_get (DBUS_BUS_SESSION, &error); - if (!bus) { - g_warning ("Failed to connect to the D-BUS daemon: %s", error.message); - dbus_error_free (&error); - return 1; - } - - /* Set up this connection to work in a GLib event loop */ - dbus_connection_setup_with_g_main (bus, NULL); - /* Every second call send_ping() with the bus as an argument*/ - g_timeout_add (1000, (GSourceFunc)send_ping, bus); - - /* Start the event loop */ - g_main_loop_run (loop); - return 0; + GMainLoop *loop; + DBusConnection *bus; + DBusError error; + + if (argc > 1) + v_STRING = argv[1]; + else + v_STRING = "no arg given"; + + /* Create a new event loop to run in */ + loop = g_main_loop_new (NULL, FALSE); + + /* Get a connection to the session bus */ + dbus_error_init (&error); + bus = dbus_bus_get (DBUS_BUS_SESSION, &error); + if (!bus) { + g_warning ("Failed to connect to the D-BUS daemon: %s", error.message); + dbus_error_free (&error); + return 1; + } + + /* Set up this connection to work in a GLib event loop */ + dbus_connection_setup_with_g_main (bus, NULL); + /* Every second call send_ping() with the bus as an argument*/ + g_timeout_add (1000, (GSourceFunc)send_ping, bus); + + /* Start the event loop */ + g_main_loop_run (loop); + return 0; } static gboolean send_ping (DBusConnection *bus) { - DBusMessage *message; - struct timespec tx_time; - struct timespec done_time; - - message = dbus_message_new_signal ("/de/linutronix/Ping", - "de.linutronix.Ping", "Ping"); - /* Append the string to the signal */ - dbus_message_append_args (message, - DBUS_TYPE_STRING, &v_STRING, - DBUS_TYPE_INVALID); - clock_gettime(CLOCK_MONOTONIC, &tx_time); - /* Send the signal */ - dbus_connection_send (bus, message, NULL); - clock_gettime(CLOCK_MONOTONIC, &done_time); - g_print("%d:%d\n%d:%d\n\n", tx_time.tv_sec, tx_time.tv_nsec/1000, - done_time.tv_sec, done_time.tv_nsec/1000); - /* Free the signal now we have finished with it */ - dbus_message_unref (message); - /* Return TRUE to tell the event loop we want to be called again */ - return TRUE; + DBusMessage *message; + struct timespec tx_time; + struct timespec done_time; + + message = dbus_message_new_signal ("/de/linutronix/Ping", + "de.linutronix.Ping", "Ping"); + /* Append the string to the signal */ + dbus_message_append_args (message, + DBUS_TYPE_STRING, &v_STRING, + DBUS_TYPE_INVALID); + clock_gettime(CLOCK_MONOTONIC, &tx_time); + /* Send the signal */ + dbus_connection_send (bus, message, NULL); + clock_gettime(CLOCK_MONOTONIC, &done_time); + g_print("%d:%d\n%d:%d\n\n", tx_time.tv_sec, tx_time.tv_nsec/1000, + done_time.tv_sec, done_time.tv_nsec/1000); + /* Free the signal now we have finished with it */ + dbus_message_unref (message); + /* Return TRUE to tell the event loop we want to be called again */ + return TRUE; } \end{lstlisting} diff --git a/frameworks/middleware/pres_middleware.tex b/frameworks/middleware/pres_middleware.tex index a658f83..aa283fa 100644 --- a/frameworks/middleware/pres_middleware.tex +++ b/frameworks/middleware/pres_middleware.tex @@ -730,7 +730,7 @@ org.freedesktop.DBus.ObjectManager.InterfacesAdded \begin{itemize} \item Task A: send messages to Messaging Service (Publisher) \item Task B: subscribe for messages, e.g. filtered by topic, from the - Messaging Service + Messaging Service \end{itemize} \end{itemize} \end{block} diff --git a/kernel-devel/kernel-basics/hints_kernel-basics_de.tex b/kernel-devel/kernel-basics/hints_kernel-basics_de.tex index c81b6f5..23fd5cc 100644 --- a/kernel-devel/kernel-basics/hints_kernel-basics_de.tex +++ b/kernel-devel/kernel-basics/hints_kernel-basics_de.tex @@ -12,7 +12,7 @@ \item Verstehen des Entwicklungsprozesses (Patche, Review) \item Kennenlernen des Buildsystems (make menuconfig) \item Kennenlerne grundsätzlicher Kernel-Ziele (Skalierbarkeit, - Plattformunabhängigkeit) + Plattformunabhängigkeit) \end{itemize} \subsection*{Unterrichts-Ablauf} diff --git a/kernel-devel/kernel-basics/pres_kernel-basics_de.tex b/kernel-devel/kernel-basics/pres_kernel-basics_de.tex index 9e53fd5..08f34f4 100644 --- a/kernel-devel/kernel-basics/pres_kernel-basics_de.tex +++ b/kernel-devel/kernel-basics/pres_kernel-basics_de.tex @@ -225,9 +225,9 @@ Versionssprünge \end{frame} \begin{frame} - \includegraphics[height=6cm]{images/kernelversions.png} +\includegraphics[height=6cm]{images/kernelversions.png} - Quelle: http://article.sapub.org +Quelle: http://article.sapub.org \end{frame} diff --git a/kernel-devel/kernel-best-practices/handout_kernel-best-practices_en.tex b/kernel-devel/kernel-best-practices/handout_kernel-best-practices_en.tex index bd1140b..ac39c19 100644 --- a/kernel-devel/kernel-best-practices/handout_kernel-best-practices_en.tex +++ b/kernel-devel/kernel-best-practices/handout_kernel-best-practices_en.tex @@ -18,7 +18,7 @@ orig/hello.c \begin{lstlisting} int main (int argc, char **argv) { - return 0; + return 0; } \end{lstlisting} @@ -37,8 +37,8 @@ new/hello.c int main (int argc, char **argv) { - printf ("Huhu World\n"); - return 0; + printf ("Huhu World\n"); + return 0; } \end{lstlisting} @@ -110,7 +110,7 @@ orig/hello.c \begin{lstlisting} int main (int argc, char **argv) { - return 0; + return 0; } \end{lstlisting} @@ -129,8 +129,8 @@ your default editor will be opened, make your changes to the source: int main (int argc, char **argv) { - printf ("Huhu World\n"); - return 0; + printf ("Huhu World\n"); + return 0; } \end{lstlisting} @@ -219,7 +219,7 @@ orig/hello.c \begin{lstlisting} int main (int argc, char **argv) { - return 0; + return 0; } \end{lstlisting} diff --git a/kernel-devel/kernel-best-practices/hints_kernel-best-practices_de.tex b/kernel-devel/kernel-best-practices/hints_kernel-best-practices_de.tex index ce4c69a..57f9c09 100644 --- a/kernel-devel/kernel-best-practices/hints_kernel-best-practices_de.tex +++ b/kernel-devel/kernel-best-practices/hints_kernel-best-practices_de.tex @@ -12,7 +12,7 @@ \item Verstehen, warum strikte Coding-Style-Regeln wichtig sind \item Verstehen, warum man einen aktuellen Kernel verwenden sollte \item Kennenlernen der Möglichkeiten und Vorteile der Zusammenarbeit - mit der Community (Mailinglisten, IRC, Wikis...) + mit der Community (Mailinglisten, IRC, Wikis...) \end{itemize} \subsection*{Unterrichts-Ablauf} diff --git a/kernel-devel/kernel-build/handout_kernel-build_de.tex b/kernel-devel/kernel-build/handout_kernel-build_de.tex index bd28a31..0e96858 100644 --- a/kernel-devel/kernel-build/handout_kernel-build_de.tex +++ b/kernel-devel/kernel-build/handout_kernel-build_de.tex @@ -174,11 +174,11 @@ make install Dies führt folgende Aktionen durch (Beispiel für einen Kernel 2.6.30): \begin{itemize} \item Falls es im Verzeichnis \cmd{/boot} bereits ein \cmd{vmlinuz-2.6.30} - gibt, wird es in \cmd{vmlinuz-2.6.30.old} umbenannt + gibt, wird es in \cmd{vmlinuz-2.6.30.old} umbenannt \item Kopieren von \cmd{arch/<Architektur-Name>/boot/zImage} nach - \cmd{/boot/vmlinuz-2.6.30} + \cmd{/boot/vmlinuz-2.6.30} \item Anlegen eines symbolischen Link \cmd{vmlinuz -> vmlinuz-2.6.30} in - \cmd{/boot} + \cmd{/boot} \end{itemize} Anschliessend darf man nicht vergessen, auch die Module des neuen Kernels @@ -216,7 +216,7 @@ Entwicklung von Treibern für Embedded Systems sehr bewährt. \begin{enumerate} \item Beschreiben Sie Unterschiede zwischen initrd und initramfs. \item Warum braucht man bei selbst kompilierten Kerneln in der Regel keine - initrd? + initrd? \item Nennen Sie eine Anwendung von initramfs. \end{enumerate} diff --git a/kernel-devel/kernel-debugging/pres_kernel-debugging_en.tex b/kernel-devel/kernel-debugging/pres_kernel-debugging_en.tex index 62624a9..5e9d30f 100644 --- a/kernel-devel/kernel-debugging/pres_kernel-debugging_en.tex +++ b/kernel-devel/kernel-debugging/pres_kernel-debugging_en.tex @@ -152,7 +152,7 @@ console=ttyAM0,115200 Kernel commandline: \begin{verbatim} netconsole=[src-port]@[src-ip]/[<dev>], - [tgt-port]@<tgt-ip>/[tgt-macaddr] + [tgt-port]@<tgt-ip>/[tgt-macaddr] \end{verbatim} src-port defaults to 6665. tgt-port defaults to 6666. \begin{verbatim} @@ -301,7 +301,7 @@ Continuing. Breakpoint 1, start_kernel () at linux-2.6.37-rc4/init/main.c:539 -539 smp_setup_processor_id(); +539 smp_setup_processor_id(); \end{verbatim} \end{frame} @@ -363,7 +363,7 @@ Remote debugging using localhost:2345 kgdb_breakpoint () at linux-2.6.37-rc4/kernel/debug/debug_core.c:959 -959 arch_kgdb_breakpoint(); +959 arch_kgdb_breakpoint(); (gdb) \end{verbatim} \end{frame} @@ -413,8 +413,8 @@ mount your hosts / to /mnt/myhost \begin{lstlisting}[language=bash] $ gdb ./linux (gdb) handle SIGSEGV pass nostop noprint -Signal Stop Print Pass to program Description -SIGSEGV No No Yes Segmentation fault +Signal Stop Print Pass to program Description +SIGSEGV No No Yes Segmentation fault (gdb) b start_kernel Breakpoint 1 at 0x80493ca: file /home/devel/images/linux-2.6.37/init/main.c, line 539. @@ -423,14 +423,14 @@ Starting program: /home/devel/images/build_um/linux Locating the bottom of the address space ... 0x1000 Locating the top of the address space ... 0xc0000000 Core dump limits : - soft - 0 - hard - NONE + soft - 0 + hard - NONE [...] Adding 10047488 bytes to physical memory to account for exec-shield gap Breakpoint 1, start_kernel () at /home/devel/images/linux-2.6.37/init/main.c:539 -539 smp_setup_processor_id(); +539 smp_setup_processor_id(); (gdb) c Continuing. Linux version 2.6.37 (devel@ltx) (gcc version 4.3.2 (Debian 4.3.2-1.1) ) diff --git a/linux-basics/boot-process/handout_boot-process_de.tex b/linux-basics/boot-process/handout_boot-process_de.tex index 0b36a61..7c7d937 100644 --- a/linux-basics/boot-process/handout_boot-process_de.tex +++ b/linux-basics/boot-process/handout_boot-process_de.tex @@ -82,22 +82,22 @@ Häufige Problemquellen im Bootloader sind beispielsweise: \begin{itemize} \item Der Bootloader wurde nicht korrekt ins Flash geschrieben. In einem Fall - passierte dies beispielsweise, wenn der Compiler ein Binary mit - ungerader Länge erzeugte. Aber auch falsche Konfiguration des JTAGer - kann zu solchen Problemen führen. + passierte dies beispielsweise, wenn der Compiler ein Binary mit + ungerader Länge erzeugte. Aber auch falsche Konfiguration des JTAGer + kann zu solchen Problemen führen. \item Im Bootloader wurden die Timings für Bus-Schnittstellen wie RAM oder - Flash nicht korrekt eingestellt. Gerade wenn die Timings nicht ganz - falsch, sondern nur grenzwertig sind, kann es zu schwer - reproduzierbaren Bootproblemen kommen. + Flash nicht korrekt eingestellt. Gerade wenn die Timings nicht ganz + falsch, sondern nur grenzwertig sind, kann es zu schwer + reproduzierbaren Bootproblemen kommen. \item Die Ladeadresse für den Kernel ist nicht korrekt. Bei manchen - Bootloadern kann es leicht zu Verwechslungen zwischen physikalischen - und virtuellen Adressen kommen. Weder U-Boot noch Redboot melden - einen Fehler, wenn man den Kernel an eine Adresse lädt, an der - sich überhaupt kein RAM befindet... + Bootloadern kann es leicht zu Verwechslungen zwischen physikalischen + und virtuellen Adressen kommen. Weder U-Boot noch Redboot melden + einen Fehler, wenn man den Kernel an eine Adresse lädt, an der + sich überhaupt kein RAM befindet... \item Beim Laden des Kernels per TFTP kann es zusätzlich weitere Probleme - geben, die mit dem Netzwerk zusammenhängen. Diese reichen von falsch - aufgesetzten TFTP-Servern über falsch konfigurierte DHCP-Server oder - falschen IP-Adressen bis hin zu Treiber- oder Hardware-Problemen. + geben, die mit dem Netzwerk zusammenhängen. Diese reichen von falsch + aufgesetzten TFTP-Servern über falsch konfigurierte DHCP-Server oder + falschen IP-Adressen bis hin zu Treiber- oder Hardware-Problemen. \end{itemize} \subsubsection{Bootprobleme: Im Kernel} diff --git a/linux-basics/boot-process/hints_boot-process_de.tex b/linux-basics/boot-process/hints_boot-process_de.tex index e4433ec..4293670 100644 --- a/linux-basics/boot-process/hints_boot-process_de.tex +++ b/linux-basics/boot-process/hints_boot-process_de.tex @@ -10,9 +10,9 @@ \begin{itemize} \item Kennenlernen des Begriffs Bootloader \item Überblick über die Abfolge Kernelboot, Rootfs-mount, init, - Startskripte + Startskripte \item Überblick über die Eingriffsmöglichkeiten (Kernelcommandline, - /etc/inittab, /etc/fstab ...) + /etc/inittab, /etc/fstab ...) \item Kennenlernen von Vorgehensweisen bei Bootproblemen \end{itemize} diff --git a/linux-basics/filesystem-structure/handout_file-system-structure_de.tex b/linux-basics/filesystem-structure/handout_file-system-structure_de.tex index bd06c48..0c115b6 100644 --- a/linux-basics/filesystem-structure/handout_file-system-structure_de.tex +++ b/linux-basics/filesystem-structure/handout_file-system-structure_de.tex @@ -47,7 +47,7 @@ Die gängigsten Verzeichnisse haben folgende Inhalte: \item \cmd{/sbin}: wichtige Systembefehle, vorwiegend zur Benutzung durch root \item \cmd{/tmp}: temporäre Dateien) \item \cmd{/usr}: 2. Verzeichnisebene, nicht für den Bootvorgang benötigte - Programme und Dateien + Programme und Dateien \item \cmd{/var}: variable Daten, wie z.B. Log-Dateien \end{itemize} @@ -161,10 +161,10 @@ angehört. \begin{enumerate} \item Warum ist es wichtig, dass bestimmte Dateien an einem standardisierten - Platz im Root-Filesystem liegen? + Platz im Root-Filesystem liegen? \item Welche Möglichkeiten zum Mounten von Dateisystemen kennen Sie? \item Welche Bedingungen müssen erfüllt sein, damit Sie eine ausführbare - Datei tatsächlich starten dürfen? + Datei tatsächlich starten dürfen? \end{enumerate} \input{tailhandout} diff --git a/linux-basics/what-is-linux/handout_what-is-linux_de.tex b/linux-basics/what-is-linux/handout_what-is-linux_de.tex index 2ae9b03..901fa31 100644 --- a/linux-basics/what-is-linux/handout_what-is-linux_de.tex +++ b/linux-basics/what-is-linux/handout_what-is-linux_de.tex @@ -208,7 +208,7 @@ und nicht etwa auf dem Rechner, an dem Sie gerade sitzen. \item Wie alt ist das Unix-Konzept mittlerweile? \item Seit wann gibt es den Linux-Kernel? \item Warum ist die Großrechner-Tradition von Linux auch für Embedded Systems - von Vorteil? + von Vorteil? \item Was passiert beim Login-Vorgang? \end{enumerate} diff --git a/linux-basics/what-is-linux/hints_what-is-linux_de.tex b/linux-basics/what-is-linux/hints_what-is-linux_de.tex index 3cb39a1..321bb26 100644 --- a/linux-basics/what-is-linux/hints_what-is-linux_de.tex +++ b/linux-basics/what-is-linux/hints_what-is-linux_de.tex @@ -10,11 +10,11 @@ \subsection*{Lernziele} \begin{itemize} \item Die Teilnehmer lernen, dass sich Unix aus dem Großrechner-Umfeld - entwickelt hat, und deshalb von Anfang an als Multiuser-System - geplant wurde. + entwickelt hat, und deshalb von Anfang an als Multiuser-System + geplant wurde. \item Kennenlernen des Aufbaus aus Kernel und vielen kleinen - Kommandozeilen-Tools. Vorteile dieses Aufbaus gegenüber den unter - Windows üblichen integrierten Mammut-Lösungen. + Kommandozeilen-Tools. Vorteile dieses Aufbaus gegenüber den unter + Windows üblichen integrierten Mammut-Lösungen. \item Die Begriffe Multiuser und Login werden verstanden. \end{itemize} diff --git a/linux-basics/what-is-linux/pres_what-is-linux_de.tex b/linux-basics/what-is-linux/pres_what-is-linux_de.tex index e3e40a7..8abad40 100644 --- a/linux-basics/what-is-linux/pres_what-is-linux_de.tex +++ b/linux-basics/what-is-linux/pres_what-is-linux_de.tex @@ -170,9 +170,9 @@ Eine klassische Linux Distribution assistiert den Benutzer \begin{frame} - \includegraphics[height=7cm]{images/distro.png} +\includegraphics[height=7cm]{images/distro.png} - Quelle: http://www.cyberciti.biz +Quelle: http://www.cyberciti.biz \end{frame} diff --git a/misc/pres_minicoredumper_en.tex b/misc/pres_minicoredumper_en.tex index 4eed24b..e288faa 100644 --- a/misc/pres_minicoredumper_en.tex +++ b/misc/pres_minicoredumper_en.tex @@ -497,7 +497,7 @@ $ gdb-linutronix /.../mycrasher core Core was generated by `./mycrasher'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00000000004008d2 in main () at mycrasher.c:26 -26 *x = 0; +26 *x = 0; (gdb) print s \verbbf{$1 = 0x11eb010 "my string"} (gdb) print i @@ -527,7 +527,7 @@ $ gdb-linutronix /.../mycrasher core Core was generated by `./mycrasher'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00000000004008d2 in main () at mycrasher.c:26 -26 *x = 0; +26 *x = 0; (gdb) print s $1 = 0x11eb010 "my string" (gdb) print i diff --git a/misc/pres_xml-fasttrack_en.tex b/misc/pres_xml-fasttrack_en.tex index 35027ee..2e193b9 100644 --- a/misc/pres_xml-fasttrack_en.tex +++ b/misc/pres_xml-fasttrack_en.tex @@ -285,7 +285,7 @@ static void cb_characters(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len cb_total++; for (i = 0;(i<len) && (i < 30);i++) - output[i] = ch[i]; + output[i] = ch[i]; output[i] = 0; fprintf(stdout, "SAX.characters(%s, %d)\n", output, len); diff --git a/realtime/rt-specialties/handout_rt-specialties_de.tex b/realtime/rt-specialties/handout_rt-specialties_de.tex index 54771ca..8c7faf0 100644 --- a/realtime/rt-specialties/handout_rt-specialties_de.tex +++ b/realtime/rt-specialties/handout_rt-specialties_de.tex @@ -219,8 +219,8 @@ int main(int argc, char* argv[]) stack_prefault(); while(1) { - [...] - } + [...] + } } \end{lstlisting} Die oben aufgelistete Applikation zeigt sehr schön, was notwendig ist, um eine diff --git a/realtime/rt-specialties/pres_rt-specialties_de.tex b/realtime/rt-specialties/pres_rt-specialties_de.tex index 004a426..f464058 100644 --- a/realtime/rt-specialties/pres_rt-specialties_de.tex +++ b/realtime/rt-specialties/pres_rt-specialties_de.tex @@ -153,7 +153,7 @@ struct sched_param param; param.sched_priority = 80; if(sched_setscheduler(0, SCHED_FIFO, ¶m) - == -1) { + == -1) { perror("sched_setscheduler failed"); exit(-1); } |
