summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Klauser <tklauser@distanz.ch>2011-08-16 18:40:43 +0200
committerTobias Klauser <tklauser@distanz.ch>2011-08-16 18:40:43 +0200
commit911a866ece39b072da0c8cbb5de930e51dfe7bee (patch)
treec240f06a5c76cb549a4c6740676f9788c271d392
parent5e6df53275c41ae995922b449b004dc151a7cf74 (diff)
More or less final version (and add PDF)
-rw-r--r--slides/ecc2011-klauser.nios2-linux.pdfbin0 -> 454491 bytes
-rw-r--r--slides/ecc2011-klauser.nios2-linux.tex121
2 files changed, 88 insertions, 33 deletions
diff --git a/slides/ecc2011-klauser.nios2-linux.pdf b/slides/ecc2011-klauser.nios2-linux.pdf
new file mode 100644
index 0000000..ce0e175
--- /dev/null
+++ b/slides/ecc2011-klauser.nios2-linux.pdf
Binary files differ
diff --git a/slides/ecc2011-klauser.nios2-linux.tex b/slides/ecc2011-klauser.nios2-linux.tex
index 5903eef..988e741 100644
--- a/slides/ecc2011-klauser.nios2-linux.tex
+++ b/slides/ecc2011-klauser.nios2-linux.tex
@@ -14,13 +14,13 @@
\usepackage{listings}
\lstset{extendedchars=true,
- basicstyle=\ttfamily\small,
+ basicstyle=\ttfamily\tiny,
keywordstyle=\color{rgb:red,127;green,0;blue,85},
commentstyle=\color{rgb:red,63;green,127;blue,95},
breaklines=true,xleftmargin=5pt,
showspaces=false,
showstringspaces=false,
- captionpos=b,caption=\lstname,
+ captionpos=b,caption=,
numbers=none}
\mode<presentation>{
@@ -176,19 +176,40 @@
\end{itemize}
\end{frame}
+\begin{frame}[containsverbatim]{Nios II mit oder ohne MMU?}
+ \begin{table}
+ \begin{tabular}{|p{0.45\textwidth}|p{0.45\textwidth}|}
+ \hline
+ \textbf{MMU} & \textbf{NOMMU}\\
+ \hline
+ \emph{mehr} LEs im FPGA & \emph{weniger} LEs im FPGA\\
+ \hline
+ Virtual Memory, separater Adressraum für jeden Prozess & ein globaler Adressraum für
+ alle Prozesse und Kernel \\
+ \hline
+ Shared Libraries & Libraries werden statisch zu jedem Binary gelinkt\\
+ \hline
+ Keine Änderungen an Userspace-Software notwendig & u.U. Anpassungen an Software
+ notwendig (z.B. kein \verb|fork()|) \\
+ \hline
+ Langsamer & Schneller\\
+ \hline
+ \end{tabular}
+ \end{table}
+\end{frame}
+
\begin{frame}{Development Workflow}
\begin{center}
\includegraphics[height=0.8\textheight]{images/design-flow.pdf}
\end{center}
\end{frame}
-\begin{frame}[containsverbatim]{Linux Image}
+\begin{frame}[containsverbatim]{Linux Image \& Root Filesystem}
\begin{itemize}
- \item Kernel Image als ELF-Binary
- \item Device Tree: Strukturierte Beschreibung der Hardware
+ \item Kernel Image als komprimiertes ELF-Binary
\begin{itemize}
- \item Bestandteil des Kernel Images
- \item Optional in Flash (bedingt Verwendung von u-boot Bootloader)
+ \item Kann direkt in RAM geladen und gestartet werden
+ \item Wird u-boot verwendet, muss das Image konvertiert werden
\end{itemize}
\item Root Filesystem in einem \verb|initramfs| an Kernel angehängt
\item Keine Persistenz über Reboot hinweg
@@ -199,56 +220,88 @@
\end{itemize}
\end{frame}
-\begin{frame}[containsverbatim]{Bootprozess - RAM}
+\begin{frame}[fragile,containsverbatim]{Device Tree (\href{http://devicetree.org}{devicetree.org})}
+ \begin{columns}[t]
+ \column{0.56\textwidth}
+ \begin{itemize}
+ \item Strukturierte Beschreibung der Hardware
+ \item Integration mit Linux:
+ \begin{itemize}
+ \item Als Bestandteil des Kernel Images
+ \item Im Flash (nur mit u-boot)
+ \item Laden über TFTP (nur mit u-boot)
+ \end{itemize}
+ \item Linux extrahiert Device Tree, lädt Treiber entsprechend
+ \item Von zahlreichen Linux-Ports eingesetzt (ARM, PowerPC, MicroBlaze, OpenRISC)
+ \end{itemize}
+ \column{0.44\textwidth}
+ \begin{lstlisting}
+ cpu_0: cpu@0x0 {
+ compatible = "ALTR,nios2-9.1";
+ clock-frequency = <50000000>;
+ dcache-size = <2048>;
+ icache-size = <4096>;
+ ALTR,implementation = "fast";
+ ALTR,has-div;
+ ALTR,has-mul;
+ ALTR,reset-addr = <0xc4000000>;
+ ...
+ };
+
+ uart_0: serial@0x6000000 {
+ compatible = "ALTR,uart-9.1";
+ reg = <0x6000000 0x20>;
+ interrupt-parent = <&cpu_0>;
+ interrupts = <2>;
+ current-speed = <115200>;
+ clock-frequency = <50000000>;
+ };
+ \end{lstlisting}
+ \end{columns}
+\end{frame}
+
+\begin{frame}[containsverbatim]{Bootprozess}
\begin{enumerate}
- \item Laden des FPGA-Bitstreams via JTAG
- \item Laden des Linux Images via JTAG
- \item ...
- \item Beim Booten wird das \verb|initramfs| durch den Kernel ins RAM entpackt und
- verwendet
+ \item Laden des FPGA-Bitstreams
+ \item Laden des Linux Images inkl. Reset des Nios
+ \item Nios beginnt mit Ausführung des Linux Kernels
+ \item Linux Kernel erkennt Hardware anhand des Device Tree und lädt entsprechende Treiber
+ \item \verb|initramfs| wird durch den Kernel ins RAM entpackt und gemountet
+ \item Init-Prozess (\verb|/sbin/init|) wird ausgeführt
+ \item Optional: Mounten von von Flash- bzw. Netzwerk-Filesystemen
+ \item Weitere Userspace-Prozesse (Daemons etc.) werden durch Init gestartet
\end{enumerate}
\end{frame}
\section{Anwendungsbeispiele}
\begin{frame}{Anwendungsbeispiel - Redundantes Kommunikationsnetzwerk}
- \begin{columns}
- \column{8cm}
\begin{itemize}
+ \item Nios II mit MMU
\item Ethernet-basiert, optional SHDSL
\item Parallel Redundancy Protocol
- \item Software-Komponenten für SHDSL, Webserver, SNMP
+ \item Software-Komponenten (COTS und Eigenentwicklung) für SHDSL, Webserver, Remote Update, SNMP, NTP
\item Treiber für eigene IP-Komponenten
\end{itemize}
- \column{4.5cm}
- \begin{center}
- \end{center}
- \end{columns}
\end{frame}
\begin{frame}{Anwendungsbeispiel - Übertragung von HD-Videodaten}
\begin{itemize}
+ \item Nios II ohne MMU
\item Gigabit-Ethernet
\item USB Host- und Device-Controller
- \item Software-Komponenten für Session-Setup, Webserver
+ \item Software-Komponenten (COTS und Eigenentwicklung) für Session-Setup, Konfiguration, Webserver
+ \item Treiber für eigene IP-Komponenten und Hardware
\end{itemize}
\end{frame}
\begin{frame}{Zusammenfassung}
- \begin{columns}[t]
- \column{0.5\textwidth}
\begin{itemize}
- \item foo
- \item bar
- \item baz
- \item quuz
+ \item Nios II als flexibel konfigurierbarer Softcore-Prozessor
+ \item Linux bietet umfangreiche Hardware- und Software-Unterstützung
+ \item Softcore-System und Linux sind nachträglich einfach anpass- und erweiterbar
+ \item Integration von bestehender Linux/Unix-Software mit kleinen oder geringen Anpassungen möglich
\end{itemize}
- \column{0.5\textwidth}
- \begin{itemize}
- \item foo
- \item bar
- \end{itemize}
- \end{columns}
\end{frame}
\begin{frame}{Danke für Ihre Aufmerksamkeit}
@@ -257,6 +310,8 @@ Tobias Klauser\\
Institute of Embedded Systems\\
Zürcher Hochschule für Angewandte Wissenschaften\\
\href{mailto:klto@zhaw.ch}{klto@zhaw.ch}\\
+\vspace{2cm}
+Weitere Informationen zu Nios II Linux: \url{http://www.alterawiki.com/wiki/Linux}
\end{center}
\end{frame}