% This document is licensed under the Creative Commons % Attribution-ShareAlike license, Version 3.0. % % Copyright (C) 2011 Tobias Klauser (klto@zhaw.ch) \documentclass{beamer} \usetheme{Boadilla} \usepackage{epstopdf} \usepackage{ngerman} \usepackage[ngerman]{babel} \usepackage[utf8]{inputenc} \usepackage{listings} \lstset{extendedchars=true, basicstyle=\ttfamily\small, 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, numbers=none} \mode{ % \hypersetup{pdfpagemode=FullScreen} \usecolortheme{dove} \usecolortheme{seahorse} \usecolortheme{lily} % \useinnertheme[shadow]{rounded} % \beamerdefaultoverlayspecification{<+->} % \setbeamercovered{dynamic} } \logo{\includegraphics[width=2cm]{images/ines-logo.png}} \title{Linux auf dem Nios II Softcore Prozessor} \subtitle{} \author{Tobias Klauser $<$klto@zhaw.ch$>$} \institute[InES]{Institute of Embedded Systems\\Zürcher Hochschule für Angewandte Wissenschaften} \date{30. August 2011} \begin{document} \begin{frame} \titlepage \end{frame} \section{Agenda} \begin{frame} \tableofcontents \end{frame} \section{Institute of Embedded Systems ZHAW} \begin{frame}{Institute of Embedded Systems} \begin{itemize} \item F\&E Institut der ZHAW \item Rund 45 Mitarbeiter \item Schwerpunkte \begin{itemize} \item Industrielle Kommunikation \item Zeitsynchronisation und Hochverfügbarkeit \item System on Chip Design \item Wireless Communication \item Entwicklungsmethoden \end{itemize} \end{itemize} \end{frame} \section{Übersicht FPGA und Softcore Prozessoren} \begin{frame}{FPGA und Softcore} \begin{itemize} \item Field Programmable Gate Array \begin{itemize} \item Chip-Logik (Gateware) wird in einer Beschreibungssprache (VHDL, Verilog) codiert \item Änderungen am Design relativ einfach, Custom Systems \item Parallelität \end{itemize} \item Softcore \begin{itemize} \item Prozessor innerhalb des FPGA implementiert \item Fast immer Bestandteil eines System-on-a-Chip \item Konfigurierbar (z.B. MMU), erweiterbar (z.B. Custom Instructions) \item Proprietär, herstellerabhängig: Nios II (Altera), MicroBlaze (Xilinx), Cortex M1 (ARM) \item Open-Source Softcores: Gaisler LEON, OpenRISC, LatticeMico32 \end{itemize} \end{itemize} \end{frame} \begin{frame}{Nios II} \begin{itemize} \item 32-bit RISC Softcore-Prozessorarchitektur für Altera FPGAs \item 3 Basisvarianten: \begin{itemize} \item Economy (600-700 LEs) \item Standard (1200-1400 LEs) \item Fast (2600-3000 LEs) \end{itemize} \item Konfigurierbar mit oder ohne Memory Management Unit (MMU) \item Optionale Hardware MUL/DIV Instruktionen, Custom Instructions \item Peripherie (Timer, UART, Ethernet MAC, Flash Controller, \dots) als IP über SOPC System konfigurierbar \end{itemize} \end{frame} \section{Übersicht Linux} \begin{frame}{Wieso ein Betriebssystem?} \begin{itemize} \item Multi-Tasking, Multi-User \item Memory Management, Memory Protection (MMU benötigt) \item TCP/IP Stack \item Filesysteme \item Bestehende Software und Treiber \end{itemize} \end{frame} \begin{frame}{Wieso (Embedded) Linux?} \begin{itemize} \item Starke Verbreitung im Bereich Embedded Systems (z.B. Android auf Smartphones), Skalierbarkeit \item Umfangreiches Software-Ökosystem, grosse Community \item Einheitliche Entwicklungsumgebung (Unix-artig, POSIX-Standard) \item Portierungen auf zahlreiche ($\sim 30$) Prozessor-Architekturen \item Niedrige Kosten, freie Lizenzen \end{itemize} \end{frame} \begin{frame}{Embedded Linux} \begin{columns} \column{8cm} \begin{itemize} \item Linux Kernel als Kernkomponente eines Linux Systems \item Libraries und Applikationen werden zusätzlich benötigt, um ein komplettes System zu erhalten \item Minimale Voraussetzungen: \begin{itemize} \item 32-bit Prozessor (mit oder ohne MMU) \item unterstützte Toolchain (GCC, binutils, \dots) \item libc (uClibc, eglibc) \end{itemize} \end{itemize} \column{4.5cm} \begin{center} \includegraphics[width=0.8\textwidth]{images/tux.pdf} \end{center} \end{columns} \end{frame} \section{Linux auf dem Nios II} \begin{frame}{Linux/uClinux auf dem Nios II} \begin{itemize} \item Linux unterstützt Nios II mit \emph{und} ohne MMU \begin{itemize} \item Erster Port von Microtronix für Nios II NOMMU \item Separater Port von Wind River für Nios II MMU \end{itemize} \item Open Source Nios II Linux (\href{http://www.alterawiki.com/wiki/Linux}{alterawiki.com/wiki/Linux}) \begin{itemize} \item MMU und NOMMU Ports zusammengeführt \item Anpassungen an aktuelle Linux Kernel Versionen \item Integration in Mainline (\href{http://www.kernel.org}{kernel.org}) geplant \end{itemize} \item Kommerzielle Anbieter \begin{itemize} \item Auf Basis von Open Source Nios II \item Wind River, Timesys, SLS \end{itemize} \end{itemize} \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{itemize} \item Kernel Image als ELF-Binary \item Device Tree: Strukturierte Beschreibung der Hardware \begin{itemize} \item Bestandteil des Kernel Images \item Optional in Flash (bedingt Verwendung von u-boot Bootloader) \end{itemize} \item Root Filesystem in einem \verb|initramfs| an Kernel angehängt \item Keine Persistenz über Reboot hinweg \begin{itemize} \item Alternative: Root FS separat in Flash speichern \item NFS (Network Filesystem) verwenden \end{itemize} \end{itemize} \end{frame} \begin{frame}[containsverbatim]{Bootprozess - RAM} \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 \end{enumerate} \end{frame} \section{Anwendungsbeispiele} \begin{frame}{Anwendungsbeispiel - Redundantes Kommunikationsnetzwerk} \begin{columns} \column{8cm} \begin{itemize} \item Ethernet-basiert, optional SHDSL \item Parallel Redundancy Protocol \item Software-Komponenten für SHDSL, Webserver, SNMP \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 Gigabit-Ethernet \item USB Host- und Device-Controller \item Software-Komponenten für Session-Setup, Webserver \end{itemize} \end{frame} \begin{frame}{Zusammenfassung} \begin{columns}[t] \column{0.5\textwidth} \begin{itemize} \item foo \item bar \item baz \item quuz \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} \begin{center} Tobias Klauser\\ Institute of Embedded Systems\\ Zürcher Hochschule für Angewandte Wissenschaften\\ \href{mailto:klto@zhaw.ch}{klto@zhaw.ch}\\ \end{center} \end{frame} \end{document}