[FE training-materials-updates] Custom kernel agenda for 4 days
Michael Opdenacker
michael.opdenacker at free-electrons.com
Mon Oct 12 15:43:10 CEST 2015
Repository : git://git.free-electrons.com/training-materials.git
On branch : kernel4days
Link : http://git.free-electrons.com/training-materials/commit/?id=3cecd3eebb881b750d9dcb0815719a7aa8b5390c
>---------------------------------------------------------------
commit 3cecd3eebb881b750d9dcb0815719a7aa8b5390c
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date: Mon Oct 12 15:43:10 2015 +0200
Custom kernel agenda for 4 days
- Lectures in the morning
- Labs in the afternoon
Signed-off-by: Michael Opdenacker <michael.opdenacker at free-electrons.com>
>---------------------------------------------------------------
3cecd3eebb881b750d9dcb0815719a7aa8b5390c
agenda/kernel-agenda.tex | 258 ++++++++++++++++++++++++++---------------------
1 file changed, 143 insertions(+), 115 deletions(-)
diff --git a/agenda/kernel-agenda.tex b/agenda/kernel-agenda.tex
index 529fcbf..163bb05 100644
--- a/agenda/kernel-agenda.tex
+++ b/agenda/kernel-agenda.tex
@@ -20,7 +20,7 @@
\LARGE
Embedded Linux kernel and driver development training\\
\large
-5-day session
+4-day session
\end{center}
\vspace{1cm}
@@ -47,8 +47,8 @@ Embedded Linux kernel and driver development training\\
\newline \url{http://free-electrons.com/doc/training/linux-kernel}. \\
\hline
- {\bf Duration} & {\bf Five} days - 40 hours (8 hours per day).
- \newline 50\% of lectures, 50\% of practical labs. \\
+ {\bf Duration} & {\bf Four} days - 32 hours (8 hours per day).
+ \newline 50\% of lectures (morning), 50\% of practical labs (afternoon). \\
\hline
{\bf Trainer} & One of the engineers listed on
@@ -70,9 +70,8 @@ Embedded Linux kernel and driver development training\\
with creating and dealing with complex data types and structures,
with pointers to such symbols, as well as with function pointers. \vspace{1em}
\newline {\bf Knowledge and practice of UNIX or GNU/Linux commands}
- \newline People lacking experience on this topic should get
- trained by themselves, for example with our freely available on-line slides
- (\url{http://free-electrons.com/docs/command-line/}).\vspace{1em}
+ \newline This 4-day agenda will not be achievable if the above two
+ requirements are not met.\vspace{1em}
\newline {\bf Experience in embedded Linux development}.
\newline Taking our Embedded Linux course
(\url{http://free-electrons.com/training/embedded-linux/})
@@ -86,6 +85,30 @@ Embedded Linux kernel and driver development training\\
\end{tabularx}
\begin{tabularx}{\textwidth}{|g|h|}
+ {\bf Assumptions} &
+
+ {\bf Flexible lunch break time - Tentative agenda}
+ \newline As the time to teach the lectures will depend on the number
+ of questions from the audience, the time to deliver the morning
+ lectures may have to be adapted every day to complete the lectures
+ schedule every day. If some participants only take the lectures,
+ they shouldn't plan other tasks in the afternoon before 1:30 pm.
+ \newline {\bf Anyway, even though Free Electrons will do its best efforts to meet
+ the schedule in this agenda, Free Electrons won't be able to give
+ a formal guarantee that this goal will be met, as it will depend on
+ the actual progress of the class, both in lectures and in practical labs.}
+ \vspace{1em}
+ \newline {\bf Attending lectures mandatory for the labs}
+ \newline To participate to practical labs, attending to the
+ lectures in the morning will be required. To ensure that the lab
+ schedule is met, the trainer will only support groups of people who have
+ followed the lectures.
+ \vspace{1em}
+ \\
+ \hline
+ \end{tabularx}
+
+ \begin{tabularx}{\textwidth}{|g|h|}
{\bf Required equipment} &
{\bf For on-site sessions only}
\newline Everything is supplied by Free Electrons in public sessions.
@@ -176,7 +199,7 @@ Embedded Linux kernel and driver development training\\
\end{itemize}
}
\\
-\feagendatwocolumn
+\feagendaonecolumn
{Lecture - Kernel sources}
{
\begin{itemize}
@@ -188,19 +211,8 @@ Embedded Linux kernel and driver development training\\
Reference (LXR)
\end{itemize}
}
-{Lab - Kernel sources}
-{
- \begin{itemize}
- \item Making searches in the Linux kernel sources: looking for C
- definitions, for definitions of kernel configuration parameters,
- and for other kinds of information.
- \item Using the Unix command line and then kernel source code
- browsers.
- \end{itemize}
-}
-\section{Day 1 - Afternoon}
-\feagendatwocolumn
+\feagendaonecolumn
{Lecture - Configuring, compiling and booting the Linux kernel}
{
\begin{itemize}
@@ -210,18 +222,8 @@ Embedded Linux kernel and driver development training\\
\item Mounting a root filesystem on NFS.
\end{itemize}
}
-{Lab - Kernel configuration, cross-compiling and booting on NFS}
-{
- {\em Using the BeagleBone Black board}
- \begin{itemize}
- \item Configuring, cross-compiling and booting a Linux kernel with
- NFS boot support.
- \end{itemize}
-}
-\\
-\section{Day 2 - Morning}
-\feagendatwocolumn
+\feagendaonecolumn
{Lecture - Linux kernel modules}
{
\begin{itemize}
@@ -233,19 +235,8 @@ Embedded Linux kernel and driver development training\\
\item Adding sources to the kernel tree
\end{itemize}
}
-{Lab - Writing modules}
-{
- {\em Using the BeagleBone Black board}
- \begin{itemize}
- \item Write a kernel module with several capabilities.
- \item Access kernel internals from your module.
- \item Set up the environment to compile it
- \end{itemize}
-}
-\section{Day 2 - Afternoon}
-
-\feagendatwocolumn
+\feagendaonecolumn
{Lecture - Linux device model}
{
\begin{itemize}
@@ -257,6 +248,43 @@ Embedded Linux kernel and driver development training\\
\item Interface in user space: \code{/sys}
\end{itemize}
}
+
+\section{Day 1 - Afternoon}
+
+\feagendaonecolumn
+{Lab - Kernel sources}
+{
+ \begin{itemize}
+ \item Making searches in the Linux kernel sources: looking for C
+ definitions, for definitions of kernel configuration parameters,
+ and for other kinds of information.
+ \item Using the Unix command line and then kernel source code
+ browsers.
+ \end{itemize}
+}
+
+\feagendaonecolumn
+{Lab - Kernel configuration, cross-compiling and booting on NFS}
+{
+ {\em Using the BeagleBone Black board}
+ \begin{itemize}
+ \item Configuring, cross-compiling and booting a Linux kernel with
+ NFS boot support.
+ \end{itemize}
+}
+
+\feagendaonecolumn
+{Lab - Writing modules}
+{
+ {\em Using the BeagleBone Black board}
+ \begin{itemize}
+ \item Write a kernel module with several capabilities.
+ \item Access kernel internals from your module.
+ \item Set up the environment to compile it
+ \end{itemize}
+}
+
+\feagendaonecolumn
{Lab - Linux device model for an I2C driver}
{
{\em Using the BeagleBone Black board}
@@ -268,7 +296,7 @@ Embedded Linux kernel and driver development training\\
\end{itemize}
}
-\section{Day 3 - Morning}
+\section{Day 2 - Morning}
\feagendatwocolumn
{Lecture - Introduction to the I2C API}
@@ -288,20 +316,6 @@ Embedded Linux kernel and driver development training\\
}
\feagendaonecolumn
-{Lab - Communicate with the Nunchuk over I2C}
-{
- {\em Using the BeagleBone Black board}
- \begin{itemize}
- \item Configure the pin muxing for the I2C bus used to communicate
- with the Nunchuk
- \item Extend the I2C driver started in the previous lab to
- communicate with the Nunchuk via I2C
- \end{itemize}
-}
-
-\section{Day 3 - Afternoon}
-
-\feagendaonecolumn
{Lecture - Kernel frameworks}
{
\begin{itemize}
@@ -313,7 +327,7 @@ Embedded Linux kernel and driver development training\\
\end{itemize}
}
-\feagendatwocolumn
+\feagendaonecolumn
{Lecture - The input subsystem}
{
\begin{itemize}
@@ -323,6 +337,22 @@ Embedded Linux kernel and driver development training\\
\item User space API offered by the {\em input} subsystem
\end{itemize}
}
+
+\section{Day 2 - Afternoon}
+
+\feagendaonecolumn
+{Lab - Communicate with the Nunchuk over I2C}
+{
+ {\em Using the BeagleBone Black board}
+ \begin{itemize}
+ \item Configure the pin muxing for the I2C bus used to communicate
+ with the Nunchuk
+ \item Extend the I2C driver started in the previous lab to
+ communicate with the Nunchuk via I2C
+ \end{itemize}
+}
+
+\feagendaonecolumn
{Lab - Expose the Nunchuk functionality to user space}
{
{\em Using the BeagleBone Black board}
@@ -334,7 +364,7 @@ Embedded Linux kernel and driver development training\\
\end{itemize}
}
-\section{Day 4 - Morning}
+\section{Day 3 - Morning}
\feagendatwocolumn
{Lecture - Memory management}
@@ -355,6 +385,17 @@ Embedded Linux kernel and driver development training\\
\item Read / write memory barriers.
\end{itemize}
}
+\feagendaonecolumn
+{Lecture - The misc kernel subsystem}
+{
+ \begin{itemize}
+ \item What the {\em misc} kernel subsystem is useful for
+ \item API of the {\em misc} kernel subsystem, both the kernel side
+ and user space side
+ \end{itemize}
+}
+
+\section{Day 3 - Afternoon}
\feagendaonecolumn
{Lab - Minimal platform driver and access to I/O memory}
@@ -370,17 +411,7 @@ Embedded Linux kernel and driver development training\\
\end{itemize}
}
-\section{Day 4 - Afternoon}
-
-\feagendatwocolumn
-{Lecture - The misc kernel subsystem}
-{
- \begin{itemize}
- \item What the {\em misc} kernel subsystem is useful for
- \item API of the {\em misc} kernel subsystem, both the kernel side
- and user space side
- \end{itemize}
-}
+\feagendaonecolumn
{Lab - Output-only serial port driver}
{
{\em Using the BeagleBone Black board}
@@ -393,7 +424,9 @@ Embedded Linux kernel and driver development training\\
\end{itemize}
}
-\feagendatwocolumn
+\section{Day 4 - Morning}
+
+\feagendaonecolumn
{Lecture - Processes, scheduling, sleeping and interrupts}
{
\begin{itemize}
@@ -403,21 +436,8 @@ Embedded Linux kernel and driver development training\\
registration and programming, scheduling deferred work.
\end{itemize}
}
-{Lab - Sleeping and handling interrupts in a device driver}
-{
- {\em Using the BeagleBone Black board}
- \begin{itemize}
- \item Adding read capability to the character driver developed
- earlier.
- \item Register an interrupt handler.
- \item Waiting for data to be available in the \code{read()} file operation.
- \item Waking up the code when data is available from the device.
- \end{itemize}
-}
-\section{Day 5 - Morning}
-
-\feagendatwocolumn
+\feagendaonecolumn
{Lecture - Locking}
{
\begin{itemize}
@@ -429,16 +449,8 @@ Embedded Linux kernel and driver development training\\
problems.
\end{itemize}
}
-{Lab - Locking}
-{
- {\em Using the BeagleBone Black board}
- \begin{itemize}
- \item Observe problems due to concurrent accesses to the device.
- \item Add locking to the driver to fix these issues.
- \end{itemize}
-}
-\feagendatwocolumn
+\feagendaonecolumn
{Lecture - Driver debugging techniques}
{
\begin{itemize}
@@ -450,19 +462,8 @@ Embedded Linux kernel and driver development training\\
\item Debugging through a JTAG probe
\end{itemize}
}
-{Lab - Investigating kernel faults}
-{
- {\em Using the BeagleBone Black board}
- \begin{itemize}
- \item Studying a broken driver.
- \item Analyzing a kernel fault message and locating the problem in the
- source code.
- \end{itemize}
-}
-
-\section{Day 5 - Afternoon}
-\feagendatwocolumn
+\feagendaonecolumn
{Lecture - ARM board support and SoC support}
{
\begin{itemize}
@@ -471,19 +472,11 @@ Embedded Linux kernel and driver development training\\
board
\end{itemize}
}
-{Lecture - Power management}
-{
- \begin{itemize}
- \item Overview of the power management features of the kernel
- \item Topics covered: clocks, suspend and resume, dynamic frequency
- scaling, saving power during idle, runtime power management,
- regulators, etc.
- \end{itemize}
-}
\feagendaonecolumn
{Lecture - The Linux kernel development process}
{
+ {\em If time left}
\begin{itemize}
\item Organization of the kernel community
\item The release schedule and process: release candidates, stable
@@ -492,6 +485,41 @@ Embedded Linux kernel and driver development training\\
\item How to submit patches to contribute code to the community.
\end{itemize}
}
+\section{Day 4 - Afternoon}
+
+\feagendaonecolumn
+{Lab - Sleeping and handling interrupts in a device driver}
+{
+ {\em Using the BeagleBone Black board}
+ \begin{itemize}
+ \item Adding read capability to the character driver developed
+ earlier.
+ \item Register an interrupt handler.
+ \item Waiting for data to be available in the \code{read()} file operation.
+ \item Waking up the code when data is available from the device.
+ \end{itemize}
+}
+
+\feagendaonecolumn
+{Lab - Locking}
+{
+ {\em Using the BeagleBone Black board}
+ \begin{itemize}
+ \item Observe problems due to concurrent accesses to the device.
+ \item Add locking to the driver to fix these issues.
+ \end{itemize}
+}
+
+\feagendaonecolumn
+{Lab - Investigating kernel faults}
+{
+ {\em Using the BeagleBone Black board}
+ \begin{itemize}
+ \item Studying a broken driver.
+ \item Analyzing a kernel fault message and locating the problem in the
+ source code.
+ \end{itemize}
+}
\end{document}
More information about the training-materials-updates
mailing list