From 911a866ece39b072da0c8cbb5de930e51dfe7bee Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Tue, 16 Aug 2011 18:40:43 +0200 Subject: More or less final version (and add PDF) --- slides/ecc2011-klauser.nios2-linux.pdf | Bin 0 -> 454491 bytes slides/ecc2011-klauser.nios2-linux.tex | 121 ++++++++++++++++++++++++--------- 2 files changed, 88 insertions(+), 33 deletions(-) create mode 100644 slides/ecc2011-klauser.nios2-linux.pdf diff --git a/slides/ecc2011-klauser.nios2-linux.pdf b/slides/ecc2011-klauser.nios2-linux.pdf new file mode 100644 index 0000000..ce0e175 Binary files /dev/null and b/slides/ecc2011-klauser.nios2-linux.pdf 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{ @@ -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} -- cgit v1.2.3-54-g00ecf