diff options
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); } |
