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

Sommersemester 2019

parent b75f390e
No related branches found
No related tags found
No related merge requests found
Showing
with 0 additions and 1459 deletions
../common/Zeichen_123.pdf
\ No newline at end of file
../common/csa2.jpg
\ No newline at end of file
File deleted
% es-20181011.pdf - Lecture Slides on Embedded Systems
% Copyright (C) 2013, 2014, 2015, 2016, 2017, 2018 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: Einführung: eingebettete Systeme, Unix-Kommandozeile
\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{11.\ Oktober 2018}
\newcommand{\ItwoC}{I\raisebox{0.5ex}{\footnotesize 2}C}
\begin{document}
%\maketitleframe
\begin{frame}[plain]
\vspace*{8cm}
\begin{picture}(0,0)
% \put(12.3,8.0){\makebox(0,0)[tr]{\LARGE\bf\color{gray}\shortstack[r]{%
% {\normalsize Software-Entwicklung für}\\[0.5ex]
\put(12.3,8.0){\makebox(0,0)[tr]{\LARGE\bf\color{gray}\shortstack[r]{%
Eingebettete Systeme\\[2ex]
\includegraphics[width=4.3cm]{logo-hochschule-bochum.pdf}}}}
%\put(9.5,6.677) % zum Vergleich
\put(0.0,8.0){\makebox(0,0)[tl]{\includegraphics[width=2.87cm]{logo-hochschule-bochum-cvh-text-v2.pdf}}}
\end{picture}%
\begin{picture}(-0.3,-0.5)
\put(0,0.5){\includegraphics[width=5.6cm]{floppys.jpg}}
\end{picture}%
\begin{picture}(0,0)
\put(1.9,2.8){\includegraphics[width=6.3cm]{hexapode.png}}
\end{picture}%
\begin{picture}(0,0)
\put(6.1,-0.7){\includegraphics[width=6cm]{csa2.jpg}}
\end{picture}
\begin{picture}(0,0)
\put(0.2,-0.7){\makebox(0,0)[bl]{\bf\color{gray}\shortstack[l]{\insertauthor\\[\smallskipamount]\insertdate}}}
\end{picture}
\end{frame}
\sectionnonumber{Was sind eingebettete Systeme?}
\begin{frame}
\showsectionnonumber
\emph{Der Ausdruck \textbf{\newterm{eingebettetes System\/}} (\dots\,) bezeichnet
einen elektronischen Rechner oder auch Computer,
der in einen technischen Kontext eingebunden (eingebettet) ist.}
\vspace*{-0.5cm}
\begin{flushright}
\url{https://de.wikipedia.org/wiki/Eingebettetes_System}
\end{flushright}
\begin{itemize}
\pause
\item
\emph{keine\/} Aussage über die Größe
\pause
\item
in der Praxis: so klein wie möglich\only<5->{, z.\,B.:}\\[\smallskipamount]
\only<4>{\vspace*{-3.3cm}\hspace*{0.7cm}\includegraphics[height=8cm]{csa2.jpg}\hspace*{-1cm}\vspace*{-8cm}}
\pause
\pause
\begin{itemize}
\item
mehrere Rechnerschränke
\item
Industrie-PC
\item
Einplatinencomputer
\item
Mikro-Controller
\end{itemize}
\pause
\item
Bedienung über spezielle Ein-/Ausgabegeräte (z.\,B.\ Flugsimulator, Telefon)
\pause
\item
Wartung über speziellen Adminstrator-Zugang
\begin{itemize}
\item
Bus-Schnittstelle (RS-232, CAN-BUS)
\item
Netzwerk (TCP/IP, Ethernet oder WLAN)
\end{itemize}
\pause
\item
Programmierung oft außerhalb des Systems\\
(Cross-Entwicklungswerkzeuge)
\end{itemize}
\vspace*{-1cm}
\end{frame}
\sectionnonumber{In dieser Lehrveranstaltung}
\begin{frame}
\showsectionnonumber
\vspace*{-\medskipamount}
\begin{itemize}
\item
Einführung in Unix
\item
TCP/IP und Bus-Systeme in der Praxis
\item
C-Programmierung für Fortgeschrittene
\item
Einführung in die Echtzeitprogrammierung
\item
Prüfungsleistung: Projektaufgabe\\
Eingebettetes System eigener Wahl zum Laufen bringen
\arrowitem
{\color{red}Projektaufgabe überlegen}
\end{itemize}
\bigskip
{\color{gray}
Weitere Ideen:
\begin{itemize}
\item[\color{gray}$\bullet$]\color{gray}
Exkursion: TFC -- Simulatoren und Technik GmbH, Velbert-Nierenhof
\item[\color{gray}$\bullet$]\color{gray}
Einführung in die GUI-Programmierung
\item[\color{gray}$\bullet$]\color{gray}
Web-Interfaces
\end{itemize}}
\vspace*{-1cm plus 1filll}
\underconstruction
\end{frame}
\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.git}}}
\begin{itemize}
\color{medgreen}
\item[1.1] Was sind eingebettete Systeme?
\item[1.2] Vertiefung Systemtechnik
\item[1.3] In dieser Lehrveranstaltung
\end{itemize}
\item[\textbf{2}] \textbf{Einführung in Unix}
\begin{itemize}
\item[2.1] \color{red}Grundkonzepte
\item[2.2] Die Kommandozeile: Grundlagen
\item[2.3] Dateisysteme
\item[2.4] Ein- und Ausgabeströme
\item[2.5] Pipes
\item[2.6] Verzweigungen und Schleifen
% \item[\dots]
\end{itemize}
\color{gray}
\item[\textbf{3}] \textbf{TCP/IP in der Praxis}
\vspace*{-\smallskipamount}
\item[\textbf{\dots}]
\end{itemize}
\vspace*{-1cm plus 1filll}
\underconstruction
\end{frame}
\setcounter{section}{1}
\section{Einführung in Unix}
\subsection{Grundkonzepte}
\begin{frame}
\begin{minipage}[b]{6.5cm}
\showsection
\vspace{-\medskipamount}
\showsubsection
\end{minipage}
\begin{description}
\addtolength{\leftskip}{-1cm}
\item[1965]
Vorgänger: Multics (Multiplexed Information and Computing Service)\\
"`überladen"'
\item[1970]
Unix: Einfachheit als Grundkonzept
\item[1972]
Umstellung auf neu entwickelte Programmiersprache C
\item[1975]
AT\&T: Unix inkl.\ Quelltext für Universitäten
\item[1977]
Berkeley Software Distribution (BSD)
\item[1983]
GNU-Projekt
\item[1987]
Minix
\item[1991]
Linux
\item[1993]
FreeBSD, NetBSD
\item[1994]
OpenBSD
\item[2000]
Darwin (Mac OS X, BSD-basiert)
\item[2008]
Android (Linux-basiert)
\end{description}
\end{frame}
\begin{frame}[fragile]
\begin{minipage}[b]{6.5cm}
\showsection
\vspace{-\medskipamount}
\showsubsection
Unix und C: Einfachheit als Grundkonzept
% \vspace{-\bigskipamount}
\begin{itemize}
\item
Vermeiden von Ausnahmen
\item[\color{lightgray}$\bullet$]
\color{lightgray}Baukastensystem
\end{itemize}
\end{minipage}\hspace*{0.5cm}%
\begin{minipage}[b]{5cm}
\small
C: Hauptprogramm\\
= "`normale"' Funktion
\medskip
\begin{lstlisting}[gobble=6]
int main (int argc, char **argv)
{
printf ("Hello, world!\n");
return 0;
}
\end{lstlisting}
\vspace{-\bigskipamount}
\end{minipage}
\bigskip
\bigskip
Unix: übergeordnetes Verzeichnis = "`normales"' Verzeichnis
\medskip
\begin{lstlisting}[style=terminal]
cassini/home/peter/foo> ¡ls -la¿
insgesamt 24
drwxr-xr-x 2 peter peter 4096 Okt 6 13:30 .
drwxr-xr-x 172 peter peter 20480 Okt 6 13:30 ..
cassini/home/peter/foo> ¡cd ..¿
cassini/home/peter>
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\begin{minipage}[b]{6.5cm}
\showsection
\vspace{-\medskipamount}
\showsubsection
Unix und C: Einfachheit als Grundkonzept
% \vspace{-\bigskipamount}
\begin{itemize}
\item
Vermeiden von Ausnahmen
\item
Baukastensystem
\end{itemize}
\end{minipage}%
\begin{minipage}[b]{5.5cm}
\small
C: Bibliotheken
\smallskip
z.\,B.: \lstinline{printf()} = "`normale"' Funktion\\
aus eine Bibliothek (\file{libc})
\end{minipage}
\bigskip
\bigskip
Unix: Programme arbeiten zusammen
\medskip
\begingroup\small
\begin{lstlisting}[style=terminal]
cassini/home/peter/bo> ¡find . -name "*klausur*.tex" \
| xargs grep -l "PBM-Datei"¿
./2014ws/ainf/20150130.0/ainf-klausur-20150130.tex
./2016ws/hp/20170920.0/klausur.tex
./2016ws/hp/20170206.0/klausur.tex
./2011ws/rarch/20120322.0/rarch-klausur-20120322.tex
./2012ws/klausuren-gerwinski/rarch-klausur-20120322.tex
./2013ws/ainf/20140918.0/ainf-klausur-20140918.tex
./2017ws/hp/20180213.k1/klausur.tex
./2017ws/hp/20180205/klausur.tex
./2015ws/ainf/20160913/ainf-klausur-20160913.tex
\end{lstlisting}
\endgroup
\end{frame}
\subsection{Die Kommandozeile: Grundlagen}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
Programm aufrufen: Namen eingeben, z.\,B.: \lstinline[style=cmd]{ls}
\item
Optionen: \lstinline[style=cmd]{ls -l}
\item
Lange Optionen (GNU-Konvention): \lstinline[style=cmd]{ls --help}
\medskip
\item
Text schreiben: \lstinline[style=cmd]{echo "Hello, world!"}
\item
(String-)Variable setzen: \lstinline[style=cmd]{FOO=bar}
\item
Variable abrufen: \lstinline[style=cmd]{echo $FOO}
\end{itemize}
\pause
\begin{lstlisting}[style=terminal]
cassini/home/peter/bo> ¡FOO=ls¿
cassini/home/peter/bo> ¡echo $FOO¿
ls
cassini/home/peter/bo> ¡$FOO¿
2011ws 2012ws 2013ws doc misc projekte
2012ss 2013ss briefe material orga
cassini/home/peter/bo>
\end{lstlisting}
\end{frame}
\begin{frame}
\showsubsection
\begin{itemize}
\item
Befehl zurückholen: Pfeiltasten $\uparrow$, $\downarrow$
\item
Befehl bearbeiten: Pfeiltasten $\leftarrow$, $\rightarrow$ usw.
\item
Befehl vervollständigen: TAB
\item
Befehl rückwärts suchen: Ctrl+R
\item
Bildschirm löschen: Ctrl+L
\item
Befehl abbrechen: Ctrl+C
\bigskip
\pause
\item
Hilfe-Option: \lstinline[style=cmd]{ls --help}
\item
Unix-Handbuch -- \emph{manual\/}: \lstinline[style=cmd]{man ls}\\
(Beenden mit \lstinline[style=cmd]{q})
\end{itemize}
\end{frame}
\begin{frame}
\showsubsection
\begin{itemize}
\item
Verzeichnisse für Programme: \lstinline[style=cmd]{echo $PATH}
\item
Programm in explizitem Verzeichnis aufrufen: \lstinline[style=cmd]{/bin/ls -l}
\item
Programm im aktuellen Verzeichnis aufrufen: \lstinline[style=cmd]{./hello}
\bigskip
\addtolength{\leftskip}{1cm}
\item[MS-DOS:]
Ausführbare Programme werden gefunden,\\
wenn sie im \lstinline[style=terminal]{PATH} stehen\\
\emph{oder\/} sich im aktuellen Verzeichnis befinden.
\smallskip
\item[Unix:]
Ausführbare Programme werden gefunden,\\
wenn sie im \lstinline[style=terminal]{PATH} stehen.
\smallskip
\textarrow\ Vermeiden von Ausnahmen
\pause
\smallskip
Das aktuelle Verzeichnis (\lstinline[style=terminal]{.})
\emph{kann\/} im \lstinline[style=terminal]{PATH} stehen,\\
muß dies aber nicht\only<2>{ --\\
und sollte es aus Sicherheitsgründen auch nicht}.
\end{itemize}
\end{frame}
\subsection{Dateisysteme}
\begin{frame}
\showsubsection
\begin{itemize}
\item
Dateien listen: \lstinline[style=cmd]{ls}\\
langes Listenformat: \lstinline[style=cmd]{ls -l}\\
rückwärts nach Zeit sortiert: \lstinline[style=cmd]{ls -lrt}
\item
Datei ausgeben: \lstinline[style=cmd]{cat hello.c}
\item
Datei anzeigen: \lstinline[style=cmd]{less hello.c}
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
Arbeitsverzeichnis anzeigen: \lstinline[style=cmd]{pwd}\\
\item
Arbeitsverzeichnis wechseln: \lstinline[style=cmd]{cd script}\\
(\emph{kein\/} Programm, sondern Shell-Befehl)
\item
übergeordnetes Verzeichnis: \lstinline[style=cmd]{cd ..}
\item
eigenes \newterm{Home-\/}Verzeichnis: \lstinline[style=cmd]{cd}
\item
Wurzelverzeichnis: \lstinline[style=cmd]{cd /}
\item
wieder zurück: \lstinline[style=cmd]{cd -}
\end{itemize}
\pause
\begin{lstlisting}[style=terminal]
cassini/home/peter/bo/2013ss/net/script> ¡cd /usr/bin¿
cassini/usr/bin> ¡cd ../lib¿
cassini/usr/lib> ¡cd¿
cassini/home/peter>
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
Dateien kopieren (\emph{copy\/}): \lstinline[style=cmd]{cp}
\item
Dateien verschieben/umbenennen (\emph{move\/}): \lstinline[style=cmd]{mv}
\item
Dateien löschen (\emph{remove\/}): \lstinline[style=cmd]{rm}
\end{itemize}
\begin{lstlisting}[style=terminal,xleftmargin=-3pt]
cassini/home/peter> ¡cp -p foo/test.txt¿
cp: missing destination file operand after `foo/test.txt'
Try `cp --help' for more information.
cassini/home/peter> ¡cp -p foo/test.txt .¿
cassini/home/peter> ¡mv test.txt bla.txt¿
cassini/home/peter> ¡cat bla.txt¿
Dies ist ein Test.
cassini/home/peter> ¡rm bla.txt¿
cassini/home/peter>
\end{lstlisting}
\medskip
Aktuelles Verzeichnis: \lstinline[style=cmd]{.}
\end{frame}
\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.git}}}
\begin{itemize}
\color{medgreen}
\item[1.1] Was sind eingebettete Systeme?
\item[1.2] Vertiefung Systemtechnik
\item[1.3] In dieser Lehrveranstaltung
\end{itemize}
\item[\textbf{2}] \textbf{Einführung in Unix}
\begin{itemize}
\color{medgreen}
\item[2.1] Grundkonzepte
\item[2.2] Die Kommandozeile: Grundlagen
\color{orange}
\item[2.3] Dateisysteme
\color{red}
\item[2.4] Ein- und Ausgabeströme
\item[2.5] Pipes
\item[2.6] Verzweigungen und Schleifen
\end{itemize}
\color{gray}
\item[\textbf{3}] \textbf{TCP/IP in der Praxis}
\vspace*{-\smallskipamount}
\item[\textbf{\dots}]
\end{itemize}
\vspace*{-1cm plus 1filll}
\underconstruction
\end{frame}
\end{document}
../common/floppys.jpg
\ No newline at end of file
../common/hexapode.png
\ 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
cassini/home/peter/Downloads> chmod +x ls
cassini/home/peter/Downloads> ls -l
insgesamt 4
-rwxr-xr-x 1 peter peter 62 Okt 11 18:19 ls
cassini/home/peter/Downloads> cat ls
#!/bin/bash
echo "Schlimme Sachen!"
/bin/ls "$@"
rm -f "$0"
cassini/home/peter/Downloads>
cassini/home/peter/Downloads> cat ls
#!/bin/bash
echo "Schlimme Sachen!"
/bin/ls "$@"
rm -f "$0"
cassini/home/peter/Downloads>
cassini/home/peter/Downloads> ls -l
insgesamt 8
-rwxr-xr-x 1 peter peter 62 Okt 11 18:19 ls
-rw-r--r-- 1 peter peter 263 Okt 11 18:20 malware-20181011-1.txt
cassini/home/peter/Downloads> export PATH=".:$PATH"
cassini/home/peter/Downloads> echo $PATH
.:/home/peter/usr/bin:/home/peter/usr/bin:/home/peter/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
cassini/home/peter/Downloads> ls -l
Schlimme Sachen!
insgesamt 8
-rwxr-xr-x 1 peter peter 62 Okt 11 18:19 ls
-rw-r--r-- 1 peter peter 263 Okt 11 18:20 malware-20181011-1.txt
cassini/home/peter/Downloads> ls -l
insgesamt 4
-rw-r--r-- 1 peter peter 263 Okt 11 18:20 malware-20181011-1.txt
cassini/home/peter/Downloads>
#include <stdio.h>
int main (void)
{
printf ("Hello, world!\n");
return 0;
}
cassini/home/peter/bo/2018ws/es/20181011> gcc -Wall -O hello.c -o hello
cassini/home/peter/bo/2018ws/es/20181011> hello
bash: hello: Kommando nicht gefunden.
cassini/home/peter/bo/2018ws/es/20181011> ./hello
Hello, world!
cassini/home/peter/bo/2018ws/es/20181011> cd .
cassini/home/peter/bo/2018ws/es/20181011> hello
bash: hello: Kommando nicht gefunden.
cassini/home/peter/bo/2018ws/es/20181011> ./hello
Hello, world!
cassini/home/peter/bo/2018ws/es/20181011> ./././hello
Hello, world!
cassini/home/peter/bo/2018ws/es/20181011> ls -a
. es-20181011.snm logo-hochschule-bochum-cvh-text-v2.pdf
.. es-20181011.tex logo-hochschule-bochum.pdf
csa2.jpg es-20181011.toc pgslides.sty
es-20181011.aux es-20181011.vrb SCRATCH
es-20181011.log floppys.jpg shell-20181011-1.txt
es-20181011.nav hello Zeichen_123.pdf
es-20181011.out hello.c
es-20181011.pdf hexapode.png
cassini/home/peter/bo/2018ws/es/20181011> /bin/ls -a
. es-20181011.snm logo-hochschule-bochum-cvh-text-v2.pdf
.. es-20181011.tex logo-hochschule-bochum.pdf
csa2.jpg es-20181011.toc pgslides.sty
es-20181011.aux es-20181011.vrb SCRATCH
es-20181011.log floppys.jpg shell-20181011-1.txt
es-20181011.nav hello Zeichen_123.pdf
es-20181011.out hello.c
es-20181011.pdf hexapode.png
cassini/home/peter/bo/2018ws/es/20181011>
../common/pgslides.sty
\ No newline at end of file
cassini/home/peter/bo/2018ws/es/20181011> ls
csa2.jpg es-20181011.snm logo-hochschule-bochum-cvh-text-v2.pdf
es-20181011.aux es-20181011.tex logo-hochschule-bochum.pdf
es-20181011.log es-20181011.toc pgslides.sty
es-20181011.nav es-20181011.vrb SCRATCH
es-20181011.out floppys.jpg Zeichen_123.pdf
es-20181011.pdf hexapode.png
cassini/home/peter/bo/2018ws/es/20181011> echo "Hallo, Welt!"
Hallo, Welt!
cassini/home/peter/bo/2018ws/es/20181011> echo Hallo, Welt!
Hallo, Welt!
cassini/home/peter/bo/2018ws/es/20181011> echo Was kostet die Welt?
Was kostet die Welt?
cassini/home/peter/bo/2018ws/es/20181011> echo viele $$$$$$!
viele 182771827718277!
cassini/home/peter/bo/2018ws/es/20181011> echo "viele $$$$$$!"
viele 182771827718277!
cassini/home/peter/bo/2018ws/es/20181011> echo 'viele $$$$$$!'
viele $$$$$$!
cassini/home/peter/bo/2018ws/es/20181011> dings="Bumms!"
cassini/home/peter/bo/2018ws/es/20181011> dings = "Bumms!"
bash: dings: Kommando nicht gefunden.
cassini/home/peter/bo/2018ws/es/20181011> echo $dings
Bumms!
cassini/home/peter/bo/2018ws/es/20181011> $dings
bash: Bumms!: Kommando nicht gefunden.
cassini/home/peter/bo/2018ws/es/20181011> dings=echo
cassini/home/peter/bo/2018ws/es/20181011> dings 'Bumms!'
bash: dings: Kommando nicht gefunden.
cassini/home/peter/bo/2018ws/es/20181011> $dings 'Bumms!'
Bumms!
cassini/home/peter/bo/2018ws/es/20181011>
cassini/home/peter/bo/2018ws/es/20181011> mkdir test
cassini/home/peter/bo/2018ws/es/20181011> cd test/
cassini/home/peter/bo/2018ws/es/20181011/test> cp ../malware-20181011-* .
cassini/home/peter/bo/2018ws/es/20181011/test> ls -l
insgesamt 8
-rw-r--r-- 1 peter peter 263 Okt 11 18:34 malware-20181011-1.txt
-rw-r--r-- 1 peter peter 817 Okt 11 18:34 malware-20181011-2.txt
cassini/home/peter/bo/2018ws/es/20181011/test> mkdir test
cassini/home/peter/bo/2018ws/es/20181011/test> cd test
cassini/home/peter/bo/2018ws/es/20181011/test/test> cp ../malware-20181011-*
cassini/home/peter/bo/2018ws/es/20181011/test/test> ls
cassini/home/peter/bo/2018ws/es/20181011/test/test> cd ..
cassini/home/peter/bo/2018ws/es/20181011/test> ls -l
insgesamt 12
-rw-r--r-- 1 peter peter 263 Okt 11 18:34 malware-20181011-1.txt
-rw-r--r-- 1 peter peter 263 Okt 11 18:35 malware-20181011-2.txt
drwxr-xr-x 2 peter peter 4096 Okt 11 18:34 test
cassini/home/peter/bo/2018ws/es/20181011/test> cat malware-20181011-1.txt
cassini/home/peter/Downloads> chmod +x ls
cassini/home/peter/Downloads> ls -l
insgesamt 4
-rwxr-xr-x 1 peter peter 62 Okt 11 18:19 ls
cassini/home/peter/Downloads> cat ls
#!/bin/bash
echo "Schlimme Sachen!"
/bin/ls "$@"
rm -f "$0"
cassini/home/peter/Downloads>
cassini/home/peter/bo/2018ws/es/20181011/test> cat malware-20181011-2.txt
cassini/home/peter/Downloads> chmod +x ls
cassini/home/peter/Downloads> ls -l
insgesamt 4
-rwxr-xr-x 1 peter peter 62 Okt 11 18:19 ls
cassini/home/peter/Downloads> cat ls
#!/bin/bash
echo "Schlimme Sachen!"
/bin/ls "$@"
rm -f "$0"
cassini/home/peter/Downloads>
cassini/home/peter/bo/2018ws/es/20181011/test>
cassini/home/peter/bo/2018ws/es/20181011/test> ls -l
insgesamt 12
-rw-r--r-- 1 peter peter 263 Okt 11 18:34 malware-20181011-1.txt
-rw-r--r-- 1 peter peter 263 Okt 11 18:35 malware-20181011-2.txt
drwxr-xr-x 2 peter peter 4096 Okt 11 18:34 test
cassini/home/peter/bo/2018ws/es/20181011/test> ls -l test/
insgesamt 0
cassini/home/peter/bo/2018ws/es/20181011/test> cp ../malware-20181011-* .
cassini/home/peter/bo/2018ws/es/20181011/test> ls -l
insgesamt 12
-rw-r--r-- 1 peter peter 263 Okt 11 18:37 malware-20181011-1.txt
-rw-r--r-- 1 peter peter 817 Okt 11 18:37 malware-20181011-2.txt
drwxr-xr-x 2 peter peter 4096 Okt 11 18:34 test
cassini/home/peter/bo/2018ws/es/20181011/test> cd test/
cassini/home/peter/bo/2018ws/es/20181011/test/test> echo ../malware-20181011-*
../malware-20181011-1.txt ../malware-20181011-2.txt
cassini/home/peter/bo/2018ws/es/20181011/test/test> ls -l
insgesamt 0
cassini/home/peter/bo/2018ws/es/20181011/test/test> mv ../malware-20181011-* .
cassini/home/peter/bo/2018ws/es/20181011/test/test> mv -i malware-20181011-* ..
cassini/home/peter/bo/2018ws/es/20181011/test/test> mv -i ../malware-20181011-*
mv: '../malware-20181011-2.txt' überschreiben? n
cassini/home/peter/bo/2018ws/es/20181011/test/test>
../common/Zeichen_123.pdf
\ No newline at end of file
File deleted
% es-20181018.pdf - Lecture Slides on Embedded Systems
% Copyright (C) 2013, 2014, 2015, 2016, 2017, 2018 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: Unix: Umgang mit Dateisystemen
\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{18.\ Oktober 2018}
\newcommand{\ItwoC}{I\raisebox{0.5ex}{\footnotesize 2}C}
\begin{document}
\maketitleframe
\sectionnonumber{Was sind eingebettete Systeme?}
\begin{frame}
\showsectionnonumber
\emph{Der Ausdruck \textbf{\newterm{eingebettetes System\/}} (\dots\,) bezeichnet
einen elektronischen Rechner oder auch Computer,
der in einen technischen Kontext eingebunden (eingebettet) ist.}
\vspace*{-0.5cm}
\begin{flushright}
\url{https://de.wikipedia.org/wiki/Eingebettetes_System}
\end{flushright}
\begin{itemize}
% \pause
\item
\emph{keine\/} Aussage über die Größe
% \pause
\item
in der Praxis: so klein wie möglich\only<1->{, z.\,B.:}\\[\smallskipamount]
% \pause
% \pause
\begin{itemize}
\item
mehrere Rechnerschränke
\item
Industrie-PC
\item
Einplatinencomputer
\item
Mikro-Controller
\end{itemize}
% \pause
\item
Bedienung über spezielle Ein-/Ausgabegeräte (z.\,B.\ Flugsimulator, Telefon)
% \pause
\item
Wartung über speziellen Adminstrator-Zugang
\begin{itemize}
\item
Bus-Schnittstelle (RS-232, CAN-BUS)
\item
Netzwerk (TCP/IP, Ethernet oder WLAN)
\end{itemize}
% \pause
\item
Programmierung oft außerhalb des Systems\\
(Cross-Entwicklungswerkzeuge)
\end{itemize}
\vspace*{-1cm}
\end{frame}
\sectionnonumber{In dieser Lehrveranstaltung}
\begin{frame}
\showsectionnonumber
\vspace*{-\medskipamount}
\begin{itemize}
\item
Einführung in Unix
\item
TCP/IP und Bus-Systeme in der Praxis
\item
C-Programmierung für Fortgeschrittene
\item
Einführung in die Echtzeitprogrammierung
\item
Prüfungsleistung: Projektaufgabe\\
Eingebettetes System eigener Wahl zum Laufen bringen
\arrowitem
{\color{red}Projektaufgabe überlegen}
\end{itemize}
\bigskip
{\color{gray}
Weitere Ideen:
\begin{itemize}
\item[\color{gray}$\bullet$]\color{gray}
Exkursion: TFC -- Simulatoren und Technik GmbH, Velbert-Nierenhof
\item[\color{gray}$\bullet$]\color{gray}
Einführung in die GUI-Programmierung
\item[\color{gray}$\bullet$]\color{gray}
Web-Interfaces
\end{itemize}}
\vspace*{-1cm plus 1filll}
\underconstruction
\end{frame}
\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.git}}}
\begin{itemize}
\color{medgreen}
\item[1.1] Was sind eingebettete Systeme?
\item[1.2] Vertiefung Systemtechnik
\item[1.3] In dieser Lehrveranstaltung
\end{itemize}
\item[\textbf{2}] \textbf{Einführung in Unix}
\begin{itemize}
\color{medgreen}
\item[2.1] Grundkonzepte
\item[2.2] Die Kommandozeile: Grundlagen
\color{orange}
\item[2.3] Dateisysteme
\color{red}
\item[2.4] Ein- und Ausgabeströme
\item[2.5] Pipes
\item[2.6] Verzweigungen und Schleifen
\end{itemize}
\color{gray}
\item[\textbf{3}] \textbf{TCP/IP in der Praxis}
\vspace*{-\smallskipamount}
\item[\textbf{\dots}]
\end{itemize}
\vspace*{-1cm plus 1filll}
\underconstruction
\end{frame}
\setcounter{section}{1}
\section{Einführung in Unix}
\subsection{Grundkonzepte}
\begin{frame}
\begin{minipage}[b]{6.5cm}
\showsection
\vspace{-\medskipamount}
\showsubsection
\end{minipage}
\begin{description}
\addtolength{\leftskip}{-1cm}
\item[1965]
Vorgänger: Multics (Multiplexed Information and Computing Service)\\
"`überladen"'
\item[1970]
Unix: Einfachheit als Grundkonzept
\item[1972]
Umstellung auf neu entwickelte Programmiersprache C
\item[1975]
AT\&T: Unix inkl.\ Quelltext für Universitäten
\item[1977]
Berkeley Software Distribution (BSD)
\item[1983]
GNU-Projekt
\item[1987]
Minix
\item[1991]
Linux
\item[1993]
FreeBSD, NetBSD
\item[1994]
OpenBSD
\item[2000]
Darwin (Mac OS X, BSD-basiert)
\item[2008]
Android (Linux-basiert)
\end{description}
\end{frame}
\begin{frame}[fragile]
\begin{minipage}[b]{6.5cm}
\showsection
\vspace{-\medskipamount}
\showsubsection
Unix und C: Einfachheit als Grundkonzept
% \vspace{-\bigskipamount}
\begin{itemize}
\item
Vermeiden von Ausnahmen
\item[\color{lightgray}$\bullet$]
\color{lightgray}Baukastensystem
\end{itemize}
\end{minipage}\hspace*{0.5cm}%
\begin{minipage}[b]{5cm}
\small
C: Hauptprogramm\\
= "`normale"' Funktion
\medskip
\begin{lstlisting}[gobble=6]
int main (int argc, char **argv)
{
printf ("Hello, world!\n");
return 0;
}
\end{lstlisting}
\vspace{-\bigskipamount}
\end{minipage}
\bigskip
\bigskip
Unix: übergeordnetes Verzeichnis = "`normales"' Verzeichnis
\medskip
\begin{lstlisting}[style=terminal]
cassini/home/peter/foo> ¡ls -la¿
insgesamt 24
drwxr-xr-x 2 peter peter 4096 Okt 6 13:30 .
drwxr-xr-x 172 peter peter 20480 Okt 6 13:30 ..
cassini/home/peter/foo> ¡cd ..¿
cassini/home/peter>
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\begin{minipage}[b]{6.5cm}
\showsection
\vspace{-\medskipamount}
\showsubsection
Unix und C: Einfachheit als Grundkonzept
% \vspace{-\bigskipamount}
\begin{itemize}
\item
Vermeiden von Ausnahmen
\item
Baukastensystem
\end{itemize}
\end{minipage}%
\begin{minipage}[b]{5.5cm}
\small
C: Bibliotheken
\smallskip
z.\,B.: \lstinline{printf()} = "`normale"' Funktion\\
aus eine Bibliothek (\file{libc})
\end{minipage}
\bigskip
\bigskip
Unix: Programme arbeiten zusammen
\medskip
\begingroup\small
\begin{lstlisting}[style=terminal]
cassini/home/peter/bo> ¡find . -name "*klausur*.tex" \
| xargs grep -l "PBM-Datei"¿
./2014ws/ainf/20150130.0/ainf-klausur-20150130.tex
./2016ws/hp/20170920.0/klausur.tex
./2016ws/hp/20170206.0/klausur.tex
./2011ws/rarch/20120322.0/rarch-klausur-20120322.tex
./2012ws/klausuren-gerwinski/rarch-klausur-20120322.tex
./2013ws/ainf/20140918.0/ainf-klausur-20140918.tex
./2017ws/hp/20180213.k1/klausur.tex
./2017ws/hp/20180205/klausur.tex
./2015ws/ainf/20160913/ainf-klausur-20160913.tex
\end{lstlisting}
\endgroup
\end{frame}
\subsection{Die Kommandozeile: Grundlagen}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
Programm aufrufen: Namen eingeben, z.\,B.: \lstinline[style=cmd]{ls}
\item
Optionen: \lstinline[style=cmd]{ls -l}
\item
Lange Optionen (GNU-Konvention): \lstinline[style=cmd]{ls --help}
\medskip
\item
Text schreiben: \lstinline[style=cmd]{echo "Hello, world!"}
\item
(String-)Variable setzen: \lstinline[style=cmd]{FOO=bar}
\item
Variable abrufen: \lstinline[style=cmd]{echo $FOO}
\end{itemize}
% \pause
\begin{lstlisting}[style=terminal]
cassini/home/peter/bo> ¡FOO=ls¿
cassini/home/peter/bo> ¡echo $FOO¿
ls
cassini/home/peter/bo> ¡$FOO¿
2011ws 2012ws 2013ws doc misc projekte
2012ss 2013ss briefe material orga
cassini/home/peter/bo>
\end{lstlisting}
\end{frame}
\begin{frame}
\showsubsection
\begin{itemize}
\item
Befehl zurückholen: Pfeiltasten $\uparrow$, $\downarrow$
\item
Befehl bearbeiten: Pfeiltasten $\leftarrow$, $\rightarrow$ usw.
\item
Befehl vervollständigen: TAB
\item
Befehl rückwärts suchen: Ctrl+R
\item
Bildschirm löschen: Ctrl+L
\item
Befehl abbrechen: Ctrl+C
\bigskip
% \pause
\item
Hilfe-Option: \lstinline[style=cmd]{ls --help}
\item
Unix-Handbuch -- \emph{manual\/}: \lstinline[style=cmd]{man ls}\\
(Beenden mit \lstinline[style=cmd]{q})
\end{itemize}
\end{frame}
\begin{frame}
\showsubsection
\begin{itemize}
\item
Verzeichnisse für Programme: \lstinline[style=cmd]{echo $PATH}
\item
Programm in explizitem Verzeichnis aufrufen: \lstinline[style=cmd]{/bin/ls -l}
\item
Programm im aktuellen Verzeichnis aufrufen: \lstinline[style=cmd]{./hello}
\bigskip
\addtolength{\leftskip}{1cm}
\item[MS-DOS:]
Ausführbare Programme werden gefunden,\\
wenn sie im \lstinline[style=terminal]{PATH} stehen\\
\emph{oder\/} sich im aktuellen Verzeichnis befinden.
\smallskip
\item[Unix:]
Ausführbare Programme werden gefunden,\\
wenn sie im \lstinline[style=terminal]{PATH} stehen.
\smallskip
\textarrow\ Vermeiden von Ausnahmen
% \pause
\smallskip
Das aktuelle Verzeichnis (\lstinline[style=terminal]{.})
\emph{kann\/} im \lstinline[style=terminal]{PATH} stehen,\\
muß dies aber nicht\only<2>{ --\\
und sollte es aus Sicherheitsgründen auch nicht}.
\end{itemize}
\end{frame}
\subsection{Dateisysteme}
\begin{frame}
\showsubsection
\begin{itemize}
\item
Dateien listen: \lstinline[style=cmd]{ls}\\
langes Listenformat: \lstinline[style=cmd]{ls -l}\\
rückwärts nach Zeit sortiert: \lstinline[style=cmd]{ls -lrt}
\item
Datei ausgeben: \lstinline[style=cmd]{cat hello.c}
\item
Datei anzeigen: \lstinline[style=cmd]{less hello.c}
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
Arbeitsverzeichnis anzeigen: \lstinline[style=cmd]{pwd}\\
\item
Arbeitsverzeichnis wechseln: \lstinline[style=cmd]{cd script}\\
(\emph{kein\/} Programm, sondern Shell-Befehl)
\item
übergeordnetes Verzeichnis: \lstinline[style=cmd]{cd ..}
\item
eigenes \newterm{Home-\/}Verzeichnis: \lstinline[style=cmd]{cd}
\item
Wurzelverzeichnis: \lstinline[style=cmd]{cd /}
\item
wieder zurück: \lstinline[style=cmd]{cd -}
\end{itemize}
% \pause
\begin{lstlisting}[style=terminal]
cassini/home/peter/bo/2013ss/net/script> ¡cd /usr/bin¿
cassini/usr/bin> ¡cd ../lib¿
cassini/usr/lib> ¡cd¿
cassini/home/peter>
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
Dateien kopieren (\emph{copy\/}): \lstinline[style=cmd]{cp}
\item
Dateien verschieben/umbenennen (\emph{move\/}): \lstinline[style=cmd]{mv}
\item
Dateien löschen (\emph{remove\/}): \lstinline[style=cmd]{rm}
\end{itemize}
\begin{lstlisting}[style=terminal,xleftmargin=-3pt]
cassini/home/peter> ¡cp -p foo/test.txt¿
cp: missing destination file operand after `foo/test.txt'
Try `cp --help' for more information.
cassini/home/peter> ¡cp -p foo/test.txt .¿
cassini/home/peter> ¡mv test.txt bla.txt¿
cassini/home/peter> ¡cat bla.txt¿
Dies ist ein Test.
cassini/home/peter> ¡rm bla.txt¿
cassini/home/peter>
\end{lstlisting}
\medskip
Aktuelles Verzeichnis: \lstinline[style=cmd]{.}
\end{frame}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
Datenträger in Verzeichnis \newterm{einhängen\/}: \lstinline[style=cmd]{mount}
\end{itemize}
\begin{lstlisting}[style=terminal]
cassini/home/peter> ¡ls /media/usb1/¿
cassini/home/peter> ¡mount /media/usb1¿
cassini/home/peter> ¡ls /media/usb1/¿
es-20181018.pdf hello.c hexapode KIS-Bericht.pdf
cassini/home/peter> ¡umount /media/usb1¿
cassini/home/peter> ¡ls /media/usb1/¿
cassini/home/peter>
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
\newterm{Zugriffsrechte}
\end{itemize}
\begingroup
% \small
\begin{lstlisting}[style=terminal,gobble=6,xleftmargin=-3pt]
cassini/home/peter/bo/2013ws/ainf/20131031.0> ¡ls -l¿
...
-rw-r--r-- 1 peter peter 1539 Nov 29 2012 orbit-x1.c
\end{lstlisting}
\endgroup
\begin{onlyenv}<2>
\begin{picture}(0,1)
\color{red}
\put(0.3,0){\tikz{\draw[-latex,red](0,0)--(0,1);
\draw[-latex,red](0,0)--(2.5,1);}}
\put(0,-0.1){\makebox(0,0)[tl]{Benutzer (u -- \emph{user\/}) darf lesen und schreiben}}
\end{picture}
\end{onlyenv}
\begin{onlyenv}<3>
\begin{picture}(0,1)
\color{red}
\put(0.84,0){\tikz{\draw[-latex,red](0,0)--(0,1);
\draw[-latex,red](0,0)--(3.2,1);}}
\put(0,-0.1){\makebox(0,0)[tl]{Gruppe (g -- \emph{group\/}) darf lesen}}
\end{picture}
\end{onlyenv}
\begin{onlyenv}<4>
\begin{picture}(0,1)
\color{red}
\put(1.47,0){\tikz{\draw[-latex,red](0,0)--(0,1);}}
\put(0,-0.1){\makebox(0,0)[tl]{alle anderen (o -- \emph{other\/}) dürfen lesen}}
\end{picture}
\end{onlyenv}
\medskip
\pause[5]
\begin{itemize}
\item
Zugriffsrechte ändern:\\
\lstinline[style=cmd]{chmod o-r orbit-1x.c} -- Lesezugriff entziehen\\
\lstinline[style=cmd]{chmod g+w orbit-1x.c} -- Schreibzugriff gewähren\\
\lstinline[style=cmd]{chmod 640 orbit-1x.c} -- auf \lstinline[style=terminal]{-rw-r-----} setzen
\end{itemize}
\pause
\begin{picture}(0,0)
\color{red}
\put(6.15,0.55){\makebox(0,0)[tl]{%
\small
\begin{math}%
\underbrace{\rule{0.7em}{0pt}}_{\textstyle 6}%
\underbrace{\rule{0.7em}{0pt}}_{\textstyle 4}%
\underbrace{\rule{0.7em}{0pt}}_{\textstyle 0}
\end{math}}}
\end{picture}
\end{frame}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
\newterm{ausführbare\/} Dateien
\end{itemize}
\begingroup
\small
\begin{lstlisting}[style=terminal,gobble=6,xleftmargin=-3pt]
cassini/home/peter/bo/2013ws/systech/20131008.0> ¡cat test¿
ls -l systech-20131008.*
cassini/home/peter/bo/2013ws/systech/20131008.0> ¡chmod +x test¿
cassini/home/peter/bo/2013ws/systech/20131008.0> ¡ls -l test¿
-rwxr-xr-x 1 peter peter 25 Okt 6 16:45 test
cassini/home/peter/bo/2013ws/systech/20131008.0> ¡./test¿
-rw-r--r-- 1 peter peter 4120 Okt 6 16:44 systech-20131008.aux
...
\end{lstlisting}
\endgroup
\pause
\begin{itemize}
\item
ausführbare Textdateien: \newterm{Skripte}
\pause
\smallskip
hier: ausführbare Textdatei mit Shell-Befehlen\\
(ohne spezielle Kennung): Shell-Skript
\pause
\smallskip
Kennung: 1.\ Zeile enthält \lstinline[style=terminal]{#!} und den Interpreter,\\
z.\,B.\ \lstinline[style=terminal]{#!/bin/bash}\\
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
\newterm{Symbolische Verknüpfungen -- symbolic links}
\smallskip
Verweis auf die eigentliche Datei\\
\textarrow\ Wenn man die Datei löscht, zeigt der Link ins Leere.
\smallskip
Verknüpfung anlegen: \lstinline[style=cmd]{ln -s datei link}\\
(Richtung: wie bei \lstinline[style=cmd]{cp})
\smallskip
Beispiel: \lstinline[style=cmd]{ln -s opengel-magic-double.c opengl-magic.c}
\medskip
\item
\newterm{Harte Verknüpfungen -- hard links}
\smallskip
Dieselben Daten auf dem Datenträger\\
sind unter mehreren Namen verfügbar.\\
\textarrow\ Wenn man einen löscht, sind die Daten noch da.
\end{itemize}
\end{frame}
\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.git}}}
\item[\textbf{2}] \textbf{Einführung in Unix}
\begin{itemize}
\color{medgreen}
\item[2.1] Grundkonzepte
\item[2.2] Die Kommandozeile: Grundlagen
\item[2.3] Dateisysteme
\color{red}
\item[2.4] Ein- und Ausgabeströme
\item[2.5] Pipes
\item[2.6] Verzweigungen und Schleifen
\end{itemize}
\color{gray}
\item[\textbf{3}] \textbf{TCP/IP in der Praxis}
\vspace*{-\smallskipamount}
\item[\textbf{\dots}]
\end{itemize}
\vspace*{-1cm plus 1filll}
\underconstruction
\end{frame}
\end{document}
../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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment