% \documentclass[serif]{beamer}
\documentclass[t]{beamer}
\usepackage{german}
\usepackage{url}
\usepackage{ulem} % for strike-through font
% use with Emacs iso-accents-mode
\usepackage[latin1]{inputenc}

%\usetheme{Boadilla}
\usetheme{Berkeley}
%\usetheme{Marburg}
%\usetheme{Berlin}
\beamertemplatenavigationsymbolsempty
%\usetheme{hhstyle}

\logo{\includegraphics[width=1cm]{img/gnublin-maennchen.png}}

% Helvetica
% \renewcommand\sfdefault{phv}
% \renewcommand\familydefault{\sfdefault}

\author[H. H"ogl]{Hubert H"ogl\\
     {\tt Hubert.Hoegl@hs-augsburg.de}\\
    \url{http://www.hs-augsburg.de/~hhoegl}
}
% \institute[HSA]{Hochschule Augsburg}
\institute{Linux Infotag an der Hochschule Augsburg}
\title[GNUBLIN]{GNUBLIN - Embedded Linux für Alle}
\date{24. März 2012}

% Tipp from http://www.enricozini.org/2007/tips/latex-beamer.html
% reason: some say this doesn't work: \usepackage[usenames,dvipsnames]{color}
% $ source-highlight -f latexcolor filename.ext
% \input{filename.ext.tex}
\DefineNamedColor{named}{Blue}          {cmyk}{1,1,0,0}
\DefineNamedColor{named}{BrickRed}      {cmyk}{0,0.89,0.94,0.28}
\DefineNamedColor{named}{Brown}         {cmyk}{0,0.81,1,0.60}
\DefineNamedColor{named}{ForestGreen}   {cmyk}{0.91,0,0.88,0.12}
\DefineNamedColor{named}{Purple}        {cmyk}{0.45,0.86,0,0}
\DefineNamedColor{named}{Red}           {cmyk}{0,1,1,0}
\DefineNamedColor{named}{Black}         {cmyk}{0,0,0,1}
\DefineNamedColor{named}{RoyalBlue}     {cmyk}{1,0.50,0,0}
\DefineNamedColor{named}{CarnationPink} {cmyk}{0,0.63,0,0}
\DefineNamedColor{named}{Green}         {cmyk}{1,0,1,0}

\definecolor{darkred}{rgb}{0.8,0,0}

\newcommand{\Aufgabe}{{\color{darkred}Aufgabe:}\ }


\begin{document}

%\maketitle

\begin{frame}
  \titlepage

\begin{center}
\includegraphics[width=4cm]{img/gnublin-logo.jpg}
\end{center}
\end{frame}



\section{Ziele}
% ----------------------------------------------------------------------
\begin{frame}
  \frametitle{Ziele}

\begin{itemize}

\item Einfachen {\bf Embedded Linux Rechner} selber bauen

\item Besonders für Anfänger geeignet

\item Einfaches Arbeiten mit dem Board

  \begin{itemize}

     \item Ein USB Kabel soll reichen (Stromversorgung + Konsole)

     \item Nur elementare I/O Schnittstellen

     \item Software komplett auf Micro-SD Karte 

  \end{itemize}

\item Komplexität von Linux kann im Laufe der Zeit entdeckt werden

\item Beispielprogramme für alle Schnittstellen auf {\tt www.gnublin.org}.

\item Freie Lizenz für Hard- und Software

\item Maximal 50 Euro Endpreis 

\end{itemize}
\end{frame}


% ----------------------------------------------------------------------
\begin{frame}
\frametitle{Das "`Gnublin"' Board}

7 $\times$ 7 cm, 2-lagige Platine

\begin{figure}[H]
\begin{center}
\includegraphics[width=0.7\textwidth]{img/gnublin-13-final.jpg}
\label{fig_gnublin_final}
\end{center}
\end{figure}

\end{frame}


\section{Blockschaltbild}
% ----------------------------------------------------------------------
\begin{frame}
\frametitle{Blockschaltbild}

\vskip 1cm

\begin{figure}[H]
\begin{center}
\includegraphics[width=10cm]{img/eplpc3131.png}
\label{fig_blockschaltbild}
\end{center}
\end{figure}

\end{frame}



\section{Bauteile}
% ----------------------------------------------------------------------
\begin{frame}
\frametitle{Bauteile}

\begin{figure}[H]
\begin{center}
\includegraphics[width=10cm]{img/gnublin-board-explained.png}
\label{fig_autotronic}
\end{center}
\end{figure}

\end{frame}

% ----------------------------------------------------------------------

\begin{frame}
  \frametitle{LPC3131}

\begin{minipage}[H]{0.4\textwidth} 
\begin{itemize}
\item ARM926, v5 Arch., 180 MHz
\item BGA 180 balls, 14$\times$14, 0.8mm
\end{itemize}
\end{minipage}
%
\begin{minipage}[H]{0.4\textwidth} 
\begin{itemize}
\item USB high-speed OTG
\end{itemize}
\end{minipage}

\begin{figure}[H]
\begin{center}
\includegraphics[width=0.8\textwidth]{img/lpc3131.png}
\label{fig_lpc}
\end{center}
\end{figure}

\end{frame}


\section{Gnublin Betriebssoftware}
% ----------------------------------------------------------------------
\begin{frame}
  \frametitle{Betriebssoftware}

\begin{itemize}
\item Apex Bootloader (auch U-Boot möglich)
\item Linux Kernel 
\item Root Filesystem
\item Gnublin Installer
\end{itemize}

\end{frame}


% ----------------------------------------------------------------------
\begin{frame}[fragile]
  \frametitle{Apex Bootloader}

\begin{itemize}
\item Zweistufige Boot-Prozedur 

     1.  LPC Boot ROM

		 2.  Apex im internen SRAM
\end{itemize}

{\footnotesize
\begin{verbatim}
APEX Boot Loader 1.6.8-ep -- Copyright (c) 2004-2008 Marc Singer
compiled for Embedded Projects EPLPC3131 on ...

apex> copy ext2://2/zImage 0x30008000
1297408 bytes transferred 

apex> boot console=ttyS0,115200n8 root=/dev/mmcblk0p2 rw \
      rootwait
\end{verbatim}
} % \small

https://gitorious.org/apex

\end{frame}


% ----------------------------------------------------------------------
\begin{frame}
  \frametitle{Kernel}

\begin{itemize}

\item LPC313x Linux Kernel 2.6.33

\item Gnublin Patches

\item Gnublin Module

   \begin{itemize}
	    \item lpc313x\_adc
	    \item lpc313x\_pwm
	 \end{itemize}

\item Echtzeit möglich (RT\_PREEMPT Patch, Xenomai)

\item git://git.lpclinux.com/linux-2.6.33-lpc313x

\end{itemize}


\end{frame}


% ----------------------------------------------------------------------
\begin{frame}
  \frametitle{Root Filesystem}

\begin{itemize}
\item ELDK 5.0, siehe www.denx.de
\item Ca. 600 MByte, viele nicht genutzte Programme
\item Baut auf Yoctoproject, Poky Linux, OpenEmbedded
\item Bald auch {\tt opkg} Paketverwaltung
\item Alternativen: Debian, Gentoo, Fedora für ARM
\end{itemize}
\end{frame}


% ----------------------------------------------------------------------
\begin{frame}
  \frametitle{Gnublin Installer}

Beschreiben der Micro SD Karte für Anfänger

\begin{figure}[H]
\begin{center}
\includegraphics[width=0.8\textwidth]{img/gnublin-installer.png}
\label{fig_installer}
\end{center}
\end{figure}

Siehe [6].

\end{frame}



\section{Programmierung}
% ----------------------------------------------------------------------
\begin{frame}
  \frametitle{Programmierung}

\begin{itemize}

\item Für naive Anwender: {\bf Interpretersprachen}

\begin{center}
   Bash, Lua, Perl, Python, und andere
\end{center}

\item Für Systemprogrammierung: {\bf C}

\begin{itemize}
   \item Crosskompilierung auf dem PC (arm-linux-gnueabi-gcc)
   \item Native Kompilierung (geht, aber langsam da nur 8 MB RAM)
\end{itemize}

\item Ganz modern: Google {\bf Go} (http://golang.org)

\item {\bf Python} Bindings für Schnittstellen, siehe [5]

\end{itemize}

\end{frame}



\section{Peripherie}
% ----------------------------------------------------------------------

\begin{frame}
  \frametitle{Schnittstellen}

\vskip 1cm

\begin{figure}[H]
\begin{center}
\includegraphics[width=10cm]{img/refcard.png}
\label{fig_refcard}
\end{center}
\end{figure}

\end{frame}



\begin{frame}[fragile]
  \frametitle{GPIO}

\begin{center}
\includegraphics[width=4cm]{img/gpio.png}
\end{center}

\vskip -5mm

Status: Benutzbar aus beliebigen Sprachen (sysfs)

{\footnotesize
\begin{verbatim}
GPIO=3

echo $GPIO > /sys/class/gpio/export 
echo "high" > /sys/class/gpio/gpio$GPIO/direction

while [ "1" = "1" ]; do
  echo 1 > /sys/class/gpio/gpio$GPIO/value
  sleep 1
  echo 0 > /sys/class/gpio/gpio$GPIO/value
  sleep 1
done
\end{verbatim}
} % footnotesize

\end{frame}


\begin{frame}
  \frametitle{SPI}

\begin{center}
\includegraphics[width=4cm]{img/spi.png}
\end{center}


Status: Benutzbar in C, Python in Vorbereitung

\begin{itemize}

\item {\tt /dev/spi} 

\item {\tt ioctl(...)}

\item {\tt linux-2.6.33/Documentation/spi/}

\end{itemize}

\end{frame}



\begin{frame}
  \frametitle{I2C}

\begin{center}
\includegraphics[width=4cm]{img/i2c.png}
\end{center}

Status: Benutzbar in C, Python in Vorbereitung

\begin{itemize}

\item {\tt /dev/i2c}

\item {\tt read()}

\item {\tt write()}

\item {\tt ioctl()}

\item {\tt linux-2.6.33/Documentation/i2c/}

\end{itemize}

\end{frame}


\begin{frame}[fragile]
  \frametitle{ADC}

\begin{center}
\includegraphics[width=4cm]{img/adc.png}
\end{center}

Status: Benutzbar aus beliebigen Sprachen 

\begin{verbatim}
root@armv5te:~# modprobe lpc313x_adc

root@armv5te:~# echo "1" > /dev/lpc3131_adc
root@armv5te:~# cat /dev/lpc313x_adc
   0x3b2
\end{verbatim}

Siehe Applikationsschrift auf [1].

\end{frame}


\begin{frame}[fragile]
  \frametitle{PWM}

\begin{center}
\includegraphics[width=4cm]{img/pwm.png}
\end{center}

Status: Benutzbar aus beliebigen Sprachen 

{\footnotesize
\begin{verbatim}
root@armv5te:~# modprobe lpc313x_pwm

root@armv5te:~# echo <lowbyte> <highbyte> > /dev/lpc313x_pwm
\end{verbatim}
}

Siehe Applikationsschrift auf [1].

\end{frame}


% ----------------------------------------------------------------------
\begin{frame}
  \frametitle{Erweiterbarkeit}

USB high-speed OTG als universelle Erweiterungsschnittstelle

\begin{itemize}

\item USB zu Ethernet Adapter

\item USB zu WiFi

\item USB zu Bluetooth

\item USB Sound Adapter

\item Embedded Projects {\sl Octopus} USB I/O Expander mit AVR Mega128

\item USB zu \dots{}

\end{itemize}

\end{frame}


\section{Baukasten}
% ----------------------------------------------------------------------
\begin{frame}
  \frametitle{Gnublin Baukasten}

\begin{figure}[H]
\begin{center}
\includegraphics[width=0.8\textwidth]{img/gnublin-teile.png}
\label{fig_teile}
\end{center}
\end{figure}

\end{frame}


\section{Anwendungen}
% ----------------------------------------------------------------------
\begin{frame}
  \frametitle{Anwendungen}

\begin{itemize}

\item Lernplattform für Embedded Linux

\item Ansteuern einer Vielfalt an externen Bauteilen über SPI und I2C

\item Ansteuern diverser Sensoren

      $\rightarrow$ Temperatur, Licht, Beschleunigung, Rotation, Gas, \dots{}

\item Ansteuern von Motoren

      $\rightarrow$ Gleichstrom-, Servo-, Schrittmotor

\item Funk-Sensornetzwerke mit low-power HF Transceivern 

\item Tragbare batteriebetriebene Geräte ($<=$ 0.5 Watt)

\item Web-fähige Geräte (lighttpd, cgi)

\item Datenlogger

\item viele mehr \dots{}

\end{itemize}

\end{frame}



\section{Gnublin Home}
% ----------------------------------------------------------------------
\begin{frame}
  \frametitle{Gnublin Homepage}

www.gnublin.org \\
Downloads: http://code.google.com/p/gnublin

\begin{figure}[H]
\begin{center}
\includegraphics[width=7cm]{img/gnublin-hp.jpg}
\label{fig_ngw}
\end{center}
\end{figure}

\begin{minipage}[H]{0.4\textwidth} 
\begin{itemize}
\item Schnellstart
\item Videos
\item Tutorials für Anfänger
\end{itemize}
\end{minipage}
%
\begin{minipage}[H]{0.4\textwidth} 
\begin{itemize}
\item Tutorials für Fortgeschrittene
\item "`Application Notes"'
\end{itemize}
\end{minipage}

\end{frame}


\section{Herstellung}
% ----------------------------------------------------------------------
\begin{frame}
  \frametitle{BGA Gehäuse}

Für uns bisher {\bf Neuland}:

\begin{itemize}

\item LPC3131 im BGA-Gehäuse, 14 $\times$ 14 Matrix mit 0.8mm Abstand.
   Wie lötet man den auf die Platine auf? (Antwort in EPJ Nr. 11)

\item Reichen zwei Lagen für die wichtigsten Signale des LPC?

\end{itemize}

\begin{center}
\includegraphics[width=10cm]{img/routing.png}
\end{center}

\end{frame}


\begin{frame}
  \frametitle{Bestücken und Löten}

\begin{figure}[H]
\begin{center}
\includegraphics[width=4cm]{img/Handbestueckungsanlage.jpg}
\hskip 1cm
\includegraphics[width=4cm]{img/ofen-klein.jpg}

% Dampfphasenloetanlage von Prof. Villain / Hochschule Augsburg
%\includegraphics[width=3.5cm]{img/Loetanlage.jpg} 
\includegraphics[width=4cm]{img/autotronic.jpg}

\vskip 3mm

\label{fig_werkzeuge}

\end{center}
\end{figure}

\end{frame}



\section{Wer macht Gnublin?}
% ----------------------------------------------------------------------
\begin{frame}
  \frametitle{Wer macht Gnublin?}

\begin{center}

\includegraphics[width=6cm]{img/eproo-logo.jpg}

\url{http://www.embedded-projects.net} (Benedikt Sauter)

\vskip 5mm

\includegraphics[width=5cm]{img/hsa-logo.jpg}
\end{center}

\end{frame}




\section{Andere Boards}
% ---------------------------------------------------------------------- 
\begin{frame}
  \frametitle{Andere Boards $<$ 100 Euro}

\begin{itemize}

\item {\bf Beagle Bone} (ca. 77 Euro)

\includegraphics[width=3cm]{img/beaglebone.jpg}

  \url{http://beagleboard.org/bone}

\medskip

\item {\bf Raspberry Pi} (ca. 27 Euro)

\includegraphics[width=3cm]{img/raspberry.jpg}

  \url{http://www.raspberrypi.org}

\end{itemize}
\end{frame}


% ---------------------------------------------------------------------- 
\begin{frame}
  \frametitle{Zusammenfassung}

\vskip 1cm

\begin{itemize}

   \item Gnublin eignet sich gut für Einsteiger {\bf zum Lernen}
 
   \bigskip

   \item Gnublin ist auch für {\bf richtige Projekte} geeignet

   \bigskip

   \item Gnublin kann man auch {\bf selber bauen}

   \bigskip

   \item Gnublin ist ein {\bf Gemeinschaftsprojekt}

\end{itemize}

\end{frame}


% ---------------------------------------------------------------------- 
\begin{frame}
  \frametitle{Gnublin Stand}

\vskip 2cm

\begin{center}
  {\Large Bitte besucht auch den Gnublin Stand.}
\end{center}

\end{frame}



\section{Literatur}
% ----------------------------------------------------------------------
\begin{frame}
  \frametitle{Literatur}

\begin{itemize}

\item[[1]] Gnublin Home 

   \url{http://www.gnublin.org}

\item[[2]] Embedded Projects Journal (Nr. 12 ist ein Sonderheft
   über das Gnublin Projekt)

   \url{http://journal.embedded-projects.net/}

\item[[3]] Markus Feilner, Akademischer Kobold. Das Gnublin-Board
   als Einsteiger- und Lernplattform für Embedded Linux.
	 Linux Magazin 4/2012

\item[[4]] Linux für LPC3xxx

   \url{http://www.lpclinux.com}

\end{itemize}

\end{frame}


\begin{frame}
  \frametitle{Literatur (2)}

\begin{itemize}

\item[[5]] Mikrocontroller-Schnittstellen über Python ansteuern 
  (Diplomarbeit von Volker Thoms)

   \url{http://elk.informatik.fh-augsburg.de/da/da-49/da-thoms-cc.pdf}

\item[[6]] Forum 

   \url{http://www.mikrocontroller.net/topic/237277}

\item[[7]] Demoprogramme

   \url{http://elk.informatik.fh-augsburg.de/pub/eplpc3131/work_eplpc3131/home/root}

\end{itemize}

\medskip

Bald gibt es auch eine Artikelserie in der Fachzeitschrift {\sl Elektor}.

\end{frame}


\end{document}
