Skip to content
Snippets Groups Projects
Commit c83dba89 authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Vorbereitung 6.11.2023

parent c78d3067
No related branches found
No related tags found
No related merge requests found
../common/I2C_data_transfer.pdf
\ No newline at end of file
../common/SPI_single_slave.pdf
\ No newline at end of file
../common/SPI_three_slaves.pdf
\ No newline at end of file
../common/SPI_three_slaves_daisy_chained.pdf
\ No newline at end of file
File added
% es-20231106.pdf - Lecture Slides on Embedded Systems
% Copyright (C) 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Peter Gerwinski
%
% This document is free software: you can redistribute it and/or
% modify it either under the terms of the Creative Commons
% Attribution-ShareAlike 3.0 License, or under the terms of the
% GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option)
% any later version.
%
% This document is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this document. If not, see <http://www.gnu.org/licenses/>.
%
% You should have received a copy of the Creative Commons
% Attribution-ShareAlike 3.0 Unported License along with this
% document. If not, see <http://creativecommons.org/licenses/>.
% README: Bus-Systeme
\documentclass[10pt,t]{beamer}
\usepackage{pgslides}
\usepackage{rotating}
\usepackage{tikz}
\newcommand{\underconstruction}{%
\begin{picture}(0,0)
\put(9,0.9){\makebox(0,0)[b]{\includegraphics[width=1.5cm]{Zeichen_123.pdf}}}
\put(9,0.6){\makebox(0,0)[t]{\shortstack{Änderungen\\vorbehalten}}}
\end{picture}}
\title{Eingebettete Systeme}
\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski}
\date{30.\ Oktober 2023}
\newcommand{\greyurl}[1]{\href{#1}{\color{gray}\nolinkurl{#1}}}
\newcommand{\redhref}[2]{\href{#1}{\color{red}\nolinkurl{#2}}}
\newcommand{\ItwoC}{I\raisebox{0.5ex}{\footnotesize 2}C}
\begin{document}
\maketitleframe
\setcounter{section}{2}
\section{Einführung in Unix}
\setcounter{subsection}{2}
\subsection{Dateisysteme}
\nosectionnonumber{\inserttitle}
\begin{frame}
\shownosectionnonumber
\begin{itemize}
\item[\textbf{1}] \textbf{Einführung}
\hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/es}}}
\item[\textbf{2}] \textbf{C für Fortgeschrittene}
\item[\textbf{3}] \textbf{Einführung in Unix}
\item[\textbf{4}] \textbf{TCP/IP in der Praxis}
\begin{itemize}
\item[4.1] IP-Adressen
\item[4.2] MAC-Adressen
\item[4.3] TCP- und UDP-Ports
\color{medgreen}
\item[4.4] TCP-Protokolle
\item[4.5] Routing
\item[4.6] Netzwerkanalyse
\item[4.7] SSH
\item[4.8] X11 \color{red}und VNC
\item[4.9] GNU screen
\item[4.10] Programmierung
\end{itemize}
\item[\textbf{5}] \textbf{Bus-Systeme}
\vspace*{-\smallskipamount}
\item[\textbf{\dots}]
\end{itemize}
\vspace*{-1cm plus 1filll}
% \underconstruction
\end{frame}
\setcounter{section}{3}
\section{TCP/IP in der Praxis}
\setcounter{subsection}{3}
\subsection{TCP-Protokolle}
\begin{frame}
\showsubsection
\begin{itemize}
\item
\textbf{HTTP}\\
\lstinline[style=cmd]{GET / HTTP/1.1}\\
\lstinline[style=cmd]{Host: www.hs-bochum.de}\\
(Leerzeile)
% \begin{onlyenv}<2>
% \par\medskip
% URL: Schema://Benutzer:Passwort@Rechner:port/Pfad?Query\#Fragment
% \end{onlyenv}
\begin{onlyenv}<1->
\medskip
\item
\textbf{SMTP}\\
\lstinline[style=cmd]{HELO cassini}\\
\lstinline[style=cmd]{MAIL FROM: <example@example.com>}\\
\lstinline[style=cmd]{RCPT TO: <beispiel@example.de>}\\
(E-Mail-Header -- Teil der Nutzdaten)\\
\lstinline[style=cmd]{From: Eddie Example <example@example.com>}\\
\lstinline[style=cmd]{To: Bert Beispiel <beispiel@example.de>}\\
\lstinline[style=cmd]{Subject: Hello, world!}\\
(Leerzeile)\\
\lstinline[style=cmd]{Hi, there!}\\
\lstinline[style=cmd]{.}
\medskip
\item
Protokolle "`mal eben"' selbst schreiben:
\lstinline[style=cmd]{nc -c} oder \file{inetd}
\end{onlyenv}
\end{itemize}
\end{frame}
\subsection{Routing}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
\lstinline[style=cmd]{ip route} (Linux)\\
\lstinline[style=cmd]{route} (MS-Windows, Unix)\\
\lstinline[style=cmd]{netstat -nr} (MacOS)
% \\[\medskipamount]
% \includegraphics[width=11cm]{../20171026/photo-20171026-162455.jpg}
\end{itemize}
\medskip
\begin{lstlisting}[style=terminal]
# route -n
Kernel-IP-Routentabelle
Ziel Router Genmask [...] Iface
0.0.0.0 192.168.42.1 0.0.0.0 [...] wlan0
169.254.0.0 0.0.0.0 255.255.0.0 [...] wlan0
192.168.42.0 0.0.0.0 255.255.255.0 [...] wlan0
\end{lstlisting}
\bigskip
Netzmaske:\\
Wenn nach Und-Verknüpfung mit IP-Adresse gleich,
\textarrow\ im gleichen Netz
\medskip
\lstinline[style=terminal]{255.255.240.0} ist dasselbe wie
\lstinline[style=terminal]{/20}\\
(20 Bit sind 1; die restlichen 12 Bit sind 0)
\end{frame}
\subsection{Netzwerkanalyse}
\begin{frame}
\showsubsection
\begin{itemize}
\item
\lstinline[style=cmd]{tcpdump}
\item
\lstinline[style=cmd]{wireshark}
\item
\lstinline[style=cmd]{ettercap}
\end{itemize}
\end{frame}
\subsection{SSH}
\begin{frame}
\showsubsection
\begin{itemize}
\item
\lstinline[style=cmd]{SSH <Rechner>}
\item
\lstinline[style=cmd]{-C}: Komprimierung
\item
\lstinline[style=cmd]{-L}: lokalen Port auf Remote-Port umleiten
\item
\lstinline[style=cmd]{-R}: Remote-Port auf lokalen Port umleiten
\end{itemize}
\end{frame}
\subsection{X11 und VNC}
\begin{frame}
\showsubsection
\begin{itemize}
\item
Grafik-Bildschirm und Eingabegeräte über's Netz
\item
\lstinline[style=cmd]{DISPLAY}-Variable: X-Server: Rechner und Bildschirm
\item
\lstinline[style=cmd]{ssh -X}: X11-Forwarding
% \pause
\bigskip
\item
VNC = Virtual Network Computing
\item
VNC-Server stellt Bildschirminhalt zur Verfügung
\begin{itemize}
\item entweder: eigener, virtueller X11-Server
\item oder: ruft Inhalt von anderem (X11-) Bildschirm ab
\end{itemize}
\item
VNC-Client ruft Bildschirminhalt ab und stellt ihn dar
\begin{itemize}
\item z.\,B.\ per X11
\item z.\,B.\ per Web-Interface: noVNC
\end{itemize}
\end{itemize}
\end{frame}
\subsection{GNU screen}
\begin{frame}
\showsubsection
\begin{itemize}
\item
Text-Bildschirm und Eingabegeräte über's Netz
\item
\lstinline[style=cmd]{Ctrl+A c}: neues Fenster (create)
\item
\lstinline[style=cmd]{Ctrl+A Leertaste}: nächstes Fenster
\item
\lstinline[style=cmd]{Ctrl+A 3}: Fenster Nr.\ 3
\item
\lstinline[style=cmd]{Ctrl+A ESC}: hochscrollen, suchen, markieren (copy)
\item
\lstinline[style=cmd]{Ctrl+A ]}: einfügen (paste)
\item
\lstinline[style=cmd]{Ctrl+A d}: von \file{screen} ablösen (detach)
\item
\lstinline[style=cmd]{screen -x}: an laufenden \file{screen} andocken
\medskip
\item
ähnliche Funktionalität für Grafik: \file{VNC}, \file{x2go}
\end{itemize}
\end{frame}
\subsection{Programmierung}
\begin{frame}
\showsubsection
Beispiel: Programmierung eines VNC-Servers per Web-Interface
\begin{itemize}
\item
Grundlagen: RFC~6143
\item
Praxis: Untersuchung mit Wireshark
\item
Implementation: JavaScript, WebSockets, \file{websockify}, Callbacks
\end{itemize}
\bigskip
Weitere Beispiele:
\begin{itemize}
\item
Shell-Skripte: \file{nc} (\file{traditional} oder \file{OpenBSD})
\item
C: Sockets, \lstinline{select()}
\item
C++: Callbacks
\end{itemize}
\end{frame}
\section{Bus-Systeme}
\subsection{Was sind Bus-Systeme?}
\begin{frame}
\showsection
\showsubsection
\begin{quote}
Ein Bus ist ein System zur Datenübertragung zwischen mehreren
Teilnehmern über einen gemeinsamen Übertragungsweg.
\color{gray}
Findet eine Datenübertragung zwischen zwei Teilnehmern statt, so
müssen die übrigen Teilnehmer schweigen, da sie sich sonst
gegenseitig stören würden. Umgangssprachlich werden mitunter --
oft aus historischen Gründen – auch Datenübertragungssysteme als
"`Bus"' bezeichnet, die technisch eigentlich eine andere
Topologie besitzen.
\medskip
\strut\hfill\url{https://de.wikipedia.org/wiki/Bus_(Datenverarbeitung)}
\end{quote}
Beispiele:
\begin{itemize}
\item
Computer kommuniziert mit Peripherie
\item
Computer kommunizieren (direkt) miteinander
\item
Prozessor kommuniziert mit externem Speicher
\item
Teile eines Prozessors kommunizieren miteinander
\end{itemize}
\end{frame}
\begin{frame}
\showsection
\showsubsection
Standard-Personal-Computer:
\begin{itemize}
\item
Einsteckkarten: PCI (und Vorgänger)
\item
Festplatten: SATA (und Vorgänger)
\item
USB, FireWire, \dots
\item
Ethernet, CAN-Bus, \dots
\item
WLAN, BlueTooth, IR, \dots
\item
PS/2, RS-232, Centronics
\end{itemize}
\medskip
\begin{visibleenv}<2->
Minimal-Hardware:
\begin{itemize}
\item
RS-232
\item
\ItwoC\ (TWI)
\item
SPI
\end{itemize}
\end{visibleenv}
\begin{onlyenv}<1>
\begin{picture}(0,0)
\put(5,1.5){\includegraphics[height=3cm]{motherboard-anschluesse.jpg}}
\end{picture}
\end{onlyenv}
\begin{onlyenv}<2>
\begin{picture}(0,0)(-1.3,-4)
\put(1.8,-4.9){\includegraphics[height=3.5cm]{kompassmodul-an-roboter.jpg}}
\put(6.1,-3.3){\includegraphics[height=4.5cm]{kompassmodul.jpg}}
\put(6.1,1.2){\makebox(0,0)[tr]{\tikz{\draw(0,0)--(-1.9,-3.6);}}}
\put(6.1,-3.3){\makebox(0,0)[br]{\tikz{\draw(0,0)--(-1.8,0.2);}}}
\end{picture}
\end{onlyenv}
\end{frame}
\begin{frame}[fragile]
\showsection
\showsubsection
\vspace*{-\bigskipamount}
\begin{tabbing}
\newterm{Punkt-zu-Punkt}\quad\=\kill
\newterm{seriell} \> jedes Bit einzeln übertragen\\
\newterm{parallel} \> mehrere Bits gleichzeitig\\[\smallskipamount]
\newterm{synchron} \> Abgleich über Steuerleitung: \newterm{Takt}\\
\newterm{asynchron} \> Abgleich über Zeitvereinbarungen\\[\smallskipamount]
\newterm{Punkt-zu-Punkt} \> genau zwei Teilnehmer\\
\newterm{busfähig} \> mehrere Teilnehmer, mit \newterm{Adressierung}
\end{tabbing}
\begin{itemize}
\item
\ItwoC: seriell, synchron, mit Adressierung
\item
RS-232: seriell, asynchron, Punkt-zu-Punkt
\item
RS-485, USB, CAN: seriell, asynchron, mit Adressierung
\item
SPI: seriell, synchron, Punkt-zu-Punkt oder mit Adressierung
\end{itemize}
\end{frame}
\subsection{RS-232}
\begin{frame}
\showsection
\showsubsection
seriell
\begin{itemize}
\item
\newterm{TX\/}: 1 Leitung für Daten
\item
\newterm{RX\/}: ggf.\ 1 Leitung für Daten in der anderen Richtung
\item
\newterm{GND\/}: gemeinsame \newterm{Masse}
\item
evtl.\ zusätzliche Steuerleitungen
\end{itemize}
\medskip
asynchron
\begin{itemize}
\item
\emph{keine\/} Taktleitung für Abgleich, wann Daten anliegen
\item
Stattdessen: Abgleich über Zeitvereinbarungen
\arrowitem
Jeder Teilnehmer braucht eine eigene Zeitbasis.
\end{itemize}
\medskip
Punkt-zu-Punkt
\begin{itemize}
\item
nur 2 Teilnehmer vorgesehen
\end{itemize}
\end{frame}
\begin{frame}
\showsubsection
\vspace*{-0.35cm}
\begin{center}
\includegraphics[scale=0.9]{rs-232.pdf}
\end{center}
\end{frame}
\subsection{\protect\ItwoC\ (TWI)}
\begin{frame}
\showsection
\showsubsection
\ItwoC\ = Inter-IC; TWI = Two-Wire-Interface
\medskip
seriell
\begin{itemize}
\item
\newterm{SDA\/}: 1 Leitung für Daten (in beiden Richtungen)
\item
\newterm{SCL\/}: Taktleitung (Clock)
\item
\newterm{GND\/}: gemeinsame Masse
\item
evtl.\ \newterm{VCC\/}: Stromversorgung für Peripheriegerät
\end{itemize}
\medskip
synchron
\begin{itemize}
\item
Abgleich über\\Taktleitung
\begin{picture}(0,0)
\put(0.4,-0.4){\includegraphics[width=9.7cm]{I2C_data_transfer.pdf}}
\end{picture}
\end{itemize}
\medskip
busfähig
\begin{itemize}
\item
\newterm{Master\/} initiiert Kommuniation und steuert Taktleitung
\item
erstes gesendetes Byte: \newterm{Adresse\/} des Teilnehmers
\item
2 Adressen pro Teilnehmer: Lesen/Schreiben
\end{itemize}
\vspace*{-1cm}
\end{frame}
\subsection{SPI}
\begin{frame}
\showsection
\showsubsection
Serial Peripheral Interface
\medskip
seriell
\begin{itemize}
\item
\newterm{MOSI\/}: Master Out, Slave In
\item
\newterm{MISO\/}: Master In, Slave Out
\item
\newterm{SCLK\/}: Taktleitung (Clock)
\item
\newterm{$\overline{\text{SS}}$\/}: Slave Select (invertiert)
\item
\newterm{GND\/}: gemeinsame Masse
\item
evtl.\ \newterm{VCC\/}: Stromversorgung für Peripheriegerät
\end{itemize}
\medskip
synchron
\begin{itemize}
\item
Abgleich über Taktleitung
\end{itemize}
\medskip
busfähig
\begin{itemize}
\item
\newterm{Master\/} initiiert Kommuniation und steuert Taktleitung
\item
\newterm{Slave\/} wird über \newterm{Slave Select\/} ausgewählt
\begin{picture}(0,0)(0,-0.2)
\only<1>{\put(-2.175,2.875){\includegraphics[scale=0.7]{SPI_single_slave.pdf}}}
\only<2>{\put(-2.0,3.0){\includegraphics[scale=0.7]{SPI_three_slaves.pdf}}}
\only<2>{\put(2.55,3.1){\begin{minipage}[t]{2.5cm}
\newterm{Stern}
\end{minipage}}}
\only<3->{\put(-2.0,3.0){\includegraphics[scale=0.7]{SPI_three_slaves_daisy_chained.pdf}}}
\only<3->{\put(2.55,3.1){\begin{minipage}[t]{2.5cm}
\newterm{Kaskade}\\
\newterm{Daisy Chain}\pause[4]\par\smallskip
\setlength{\leftskip}{-3.5cm}\small
Slave gibt MOSI-Input um 1 Takt verzögert
an MISO aus \textarrow\ Master setzt
"`im richtigen Moment"' $\overline{\text{SS}}$
\end{minipage}}}
\end{picture}
\end{itemize}
\vspace*{-1cm}
\end{frame}
\subsection{PWM}
\begin{frame}
\showsection
\showsubsection
Pulsweitenmodulation -- \emph{pulse-width modulation}
\begin{itemize}
\item
Steuerung von Motoren
\item
Nutzung als allgemeines Protokoll\\
zur Übertragung analoger Werte
\end{itemize}
\end{frame}
\subsection{Sonstiges}
\begin{frame}
\showsection
\showsubsection
Matrix-Schaltung
\begin{itemize}
\item
möglichst viele Aktoren/Sensoren\\
über möglichst wenige digitals Inputs abfragen\\
bzw.\ über möglichst wenige digitale Outputs steuern
\item
Beispiele: LED-Felder, Tastaturen
\end{itemize}
\pause
\bigskip
R/2R-Netzwerk
\begin{itemize}
\item
möglichst viele digitale Inputs\\
über einen einzigen analogen Input abfragen
\item
Beispiele: Tastaturen
\end{itemize}
\end{frame}
\end{document}
../common/kompassmodul-an-roboter.jpg
\ No newline at end of file
../common/kompassmodul.jpg
\ No newline at end of file
../common/logo-hochschule-bochum-cvh-text-v2.pdf
\ No newline at end of file
../common/logo-hochschule-bochum.pdf
\ No newline at end of file
../common/motherboard-anschluesse.jpg
\ No newline at end of file
../common/pgslides.sty
\ No newline at end of file
../common/rs-232.pdf
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment