summaryrefslogtreecommitdiff
path: root/cap/sysconfig.tex
diff options
context:
space:
mode:
authorguest <guest@cba7306a-a4a0-4afd-bcb4-bd19f8a24309>2007-11-30 13:41:25 +0000
committerguest <guest@cba7306a-a4a0-4afd-bcb4-bd19f8a24309>2007-11-30 13:41:25 +0000
commiteacbf5bb4d57af21c731f41251015d3b991ad490 (patch)
tree477f43a79c75b400228a7c492f670a1c4886b5c3 /cap/sysconfig.tex
final version, initial import
git-svn-id: svn+ssh://mecka.net/home/svn/rtcorba-thesis@1 cba7306a-a4a0-4afd-bcb4-bd19f8a24309
Diffstat (limited to 'cap/sysconfig.tex')
-rwxr-xr-xcap/sysconfig.tex218
1 files changed, 218 insertions, 0 deletions
diff --git a/cap/sysconfig.tex b/cap/sysconfig.tex
new file mode 100755
index 0000000..0a94d0e
--- /dev/null
+++ b/cap/sysconfig.tex
@@ -0,0 +1,218 @@
+\section{Systemkonfiguration}
+\label{sec:systemkonfigurationen}
+
+Es wird beschrieben, wie die f\"ur die Diplomarbeit verwendete Umgebung aufgesetzt wird. Desweiteren wird das verwendete embedded System vorgestellt.
+
+\subsection{Software}
+\label{sec:sysconfigSoft}
+
+Es wird die stable Distribution of The ACE ORB (TAO) Version 1.5, die Mono Entwicklungsumgebung und IIOP.NET 1.9beta1 unter Linux 2.6.1x mit Ingo Molnars RT\_ PREEMPT Patch aufgesetzt.
+
+\subsubsection[Linux mit RT\_ PREEMPT Patch]{Linux mit Ingo Molnars RT\_ PREEMPT Patch}
+\label{sec:rtpreempt}
+
+Damit der CORBA NamingService unter Linux per Multicast funktioniert, mu\ss :
+
+\begin{itemize}
+\item \emph{/etc/hosts}\footnote{Konfigurationsdatei: Zuordnung IP-Adressen zu Rechnernamen} die Gegebenheiten des lokalen Netzwerks wiederspiegeln.
+\item im Linux Kernel die Optionen \emph{IP:Multicasting}, \emph{IP Tunneling} und \emph{Multicast Routing} aktiviert sein.
+\end{itemize}
+
+
+Der RT\_ PREEMPT Patch sollte nur auf die vanilla Kernel Quellen angewendet werden. Die aktuellen vanilla Quellen k\"onnen von http://www.kernel.org heruntergeladen werden. Anschlie\ss end werden die Kernel Quellen in das Verzeichnis /usr/src/ entpackt. Der eventuell vorhandene Link auf die aktuellen Kernel Sourcen wird entfernt und ein neuer Link auf die aktuellen Kernel Sourcen erstellt:
+\begin{lstlisting}
+wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.gz
+tar xzvf linux-2.6.18.tar.gz -C /usr/src/
+cd /usr/src
+unlink linux
+ln -sf linux-2.6.18 linux
+cd linux
+\end{lstlisting}
+
+Nun wird an die Variable EXTRAVERSION in /usr/src/linux/Makefile die Zeichenfolge rtpreempt angeh\"angt:
+
+\begin{lstlisting}
+vi Makefile
+..
+\end{lstlisting}
+
+Es ist darauf zu achten, dass der RT\_ PREEMPT Patch mit der selben Versionsnummer heruntergeladen wird, wie die zuvor heruntergeladenen vanilla Quellen.
+Vor dem eigentlichen Patchvorgang sollte zuerst ein dryrun durchgef\"uhrt werden, wenn dieser fehlerfrei verl\"auft kann der Kernel gepatcht werden:
+\begin{lstlisting}
+wget http://people.redhat.com/mingo/realtime-preempt/patch-2.6.18-rt7
+patch --dry-run -p1 < patch-2.6.18-rt7
+patch -p1 < patch-2.6.18-rt7
+\end{lstlisting}
+
+Um nicht die ganze Kernelkonfigurationsarbeit zu wiederholen, kann die momentan aktuelle Kernelkonfiguration \"ubernommen werden. Es m\"ussen dann nur die mit dieser Version neu dazugekommenen Features konfiguriert werden. Um die Realtime Funktionalit\"at zu erhalten, sind die angegebenen Fragen entsprechend zu beantworten:
+
+\begin{lstlisting}
+cp /boot/config-<aktuelle kernel version> .config
+make oldconfig
+
+High Resolution Timer Support (HIGH_RES_TIMERS) [N/y/?] (NEW) y
+
+Preemption Mode
+ 1. No Forced Preemption (Server) (PREEMPT_NONE)
+ 2. Voluntary Kernel Preemption (Desktop) (PREEMPT_VOLUNTARY)
+ 3. Preemptible Kernel (Low-Latency Desktop) (PREEMPT_DESKTOP) (NEW)
+> 4. Complete Preemption (Real-Time) (PREEMPT_RT) (NEW)
+choice[1-4]: 4
+
+/proc stats for preemptible RCU read-side critical sections (RCU_STATS) [Y/n/?] (NEW) y
+RT Mutex debugging, deadlock detection (DEBUG_RT_MUTEXES) [Y/n/?] (NEW) y
+Built-in scriptable tester for rt-mutexes (RT_MUTEX_TESTER) [N/y/?] (NEW) y
+Non-preemptible critical section latency timing (CRITICAL_PREEMPT_TIMING) [N/y/?] (NEW) y
+\end{lstlisting}
+
+Letzter Schritt ist das Kompilieren des Kernels und der Module, sowie das Anpassen des Bootmanagers. Es wird von der Benutzung von grub als Bootmanager ausgegangen. Weitere Hilfen zur grub Konfiguration unter \cite{grub}.
+
+\begin{lstlisting}
+make && make modules_install
+cp arch/i386/boot/bzImage /boot/kernel-rt
+cp .config /boot/config-rt
+cp System.map /boot/System.map-rt
+vi /boot/grub/menu.lst
+> title RT patched vanilla 2.6.18
+> root (hd0,0)
+> kernel /kernel-rt root=/dev/sda2
+\end{lstlisting}
+
+Nun kann das System neu gebootet werden. Es ist darauf zu achten, dass beim Systemstart der RT gepatchte Kernel ausgew\"ahlt wird.
+
+Zur Kontrolle, ob der Kernel auch tats\"achlich erfolgreich gepatched wurde, kann \"ubepr\"uft werden, ob die Prozesse zur IRQ Bearbeitung auf dem System ausgef\"uhrt werden:
+
+\begin{lstlisting}
+ps -alx | grep IRQ
+\end{lstlisting}
+
+\subsubsection{ACE}
+\label{sec:linuxace}
+
+Die folgenden Schritte zur Konfiguration von ACE/TAO sind eine Zusammenfassung von \cite{schmidt:taoinstall}.
+
+\begin{enumerate}
+\item Archiv entpacken
+\begin{lstlisting}
+cd /opt
+tar xzvf ACE+TAO.tar.gz
+cd ACE_wrappers
+mkdir 1.5
+mv * 1.5
+\end{lstlisting}
+\item Umgebungsvariablen setzen
+\begin{lstlisting}
+echo 'export ACE_ROOT=/opt/ACE_wrappers/1.5' >> /etc/profile
+echo 'export LD_LIBRARY_PATH=$ACE_ROOT/lib:$LD_LIBRARY_PATH' >> /etc/profile
+echo 'export PATH=$ACE_ROOT/bin:$PATH' >> /etc/profile
+source /etc/profile
+\end{lstlisting}
+\item Konfigurationsdateien erstellen
+\begin{lstlisting}
+echo '#include "ace/config-linux.h"' > $ACE_ROOT/ace/config.h
+echo 'include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU' > $ACE_ROOT/include/makeinclude/platform_macros.GNU
+\end{lstlisting}
+\item In das Verzeichnis \emph{ACE} wechseln und \emph{ACE} \"ubersetzen
+\begin{lstlisting}
+cd $ACE_ROOT
+make
+\end{lstlisting}
+\end{enumerate}
+
+\subsubsection{gperf}
+\label{sec:linuxgperf}
+gperf wird von TAO f\"ur perfect hashing benutzt.
+\begin{enumerate}
+\item In das Verzeichnis \emph{gperf} wechseln und \emph{gperf} \"ubersetzen
+\begin{lstlisting}
+cd $ACE_ROOT/apps/gperf
+make
+\end{lstlisting}
+
+\end{enumerate}
+
+\subsubsection{TAO}
+\label{sec:linuxtao}
+
+\begin{enumerate}
+
+\item Umgebungsvariable setzen
+\begin{lstlisting}
+echo 'export TAO_ROOT=$ACE_ROOT/TAO' >> /etc/profile
+source /etc/profile
+\end{lstlisting}
+
+\item In das Verzeichnis \emph{TAO} wechseln und \emph{TAO} \"ubersetzen
+\begin{lstlisting}
+cd $TAO_ROOT
+make
+\end{lstlisting}
+\end{enumerate}
+
+\subsubsection{Mono Entwicklungsumgebung}
+
+Eine Mono Entwicklungsumgebung kann in allen aktuellen Linuxdistributionen mit dem mitgelieferten Paketmanager installiert werden. Es gen\"ugt, das Paket \emph{monodevelop} (eine grafische Entwicklungsoberfl\"ache) zu installieren. Es werden automatisch alle ben\"otigten Pakete als Abh\"angigkeiten mit installiert.
+
+\subsubsection{IIOP.NET}
+
+\begin{enumerate}
+\item IIOP.NET 1.9beta1 von \emph{http://iiop-net.sf.net} herunterladen
+\item entpacken und nach /opt kopieren
+\begin{lstlisting}
+unzip IIOP*.zip
+mv IIOP* iiop.net
+mv iiop.net /opt/
+\end{lstlisting}
+\item IIOP.NET f\"ur Mono kompilieren
+\begin{lstlisting}
+cd /opt/iiop.net
+make -f Makefile.mono
+\end{lstlisting}
+\end{enumerate}
+
+\subsection[Hardware]{Beschreibung der Hardware: CPX}
+\label{sec:cpx}
+
+S\"amtliche Versuche wurden auf dem von Kontron \cite{kontron} speziell f\"ur TRUMPF Laser entwickelten embedded System durchgef\"uhrt. Das als CPX\footnote{Central Processor eXtandable} bezeichnete System wird in diesem Kapitel beschrieben.
+
+\begin{figure}
+\begin{center}
+\includegraphics[width=\textwidth]{./img/cpx.jpg}
+\caption{CPX, embedded System zur Steuerung der TRUMPF Festk\"orperlaser}
+\end{center}
+\hrule
+\end{figure}
+
+\subsubsection{technische Daten}
+\begin{description}
+\item[Prozessor:] Intel Celeron Mobile 600 MHz
+\item[Hauptspeicher:] 512 MB DDR
+\item[Grafik:] Intel 855GM Integrated Graphics Device
+\item[realtime Ethernet:] Intel PRO/100 direkt an Prozessor, IRQ 17
+\item[PCI:] Intel 82801 PCI Bridge, 2 Texas Instruments PCI2050 PCI-to-PCI Bridge
+\item[IDE:] Intel 82801 IDE Interface
+\item[Ethernet:] 3 Schnittstellen Intel 8255 Fast Ethernet, gemeinsam IRQ 18
+\item[USB 2.0:] 3 Controller Intel 82801DB
+
+\subsubsection{Operation Panel}
+
+\begin{figure}
+\begin{center}
+\includegraphics[width=\textwidth]{./img/panel.jpg}
+\caption{Bedienpanel zur Steuerung der TRUMPF Festk\"orperlaser}
+\label{img:op}
+\end{center}
+\hrule
+\end{figure}
+
+Das Operation Panel (Abb. \ref{img:op}) besteht aus einem 8 Zoll Touchscreen mit einer Aufl\"osung von 800 x 600 dpi\footnote{dpi - dots per inch}. Seitlich befinden sich 4 USB Anschl\"usse an die zu Servicezwecken Tastatur, USB-Stick etc. angeschlossen werden kann. EIN-, AUS- und NOTAUS-Schalter dienen der Betriebszustandssteuerung des Lasers. Ein Dreh-Dr\"uck-Knopf erleichtert die Navigation durch Men\"us.
+
+\subsubsection{digitale Ein- und Ausg\"ange}
+Eine CPX verf\"ugt \"uber 3 mal 8 Ein- und Ausg\"ange. Diese k\"onnen \"uber den Adressbereich 0x2c00 bis 0x7c00 via Memory Mapping gesetzt und ausgelesen werden. Bei einer Zustands\"anderung an einem digitalen Eingang wird IRQ 6 ausgel\"ost. Die Interruptserviceroutine versendet das RT Signal 24.
+
+\subsubsection{Ethernet}
+Die Ethernetschnittstelle, welche direkt an die CPU angebunden ist, ist f\"ur die Real-time Kommunikation gedacht. Ihr ist IRQ 17 zugewiesen.
+
+Die drei Ethernetschnittstellen, die \"uber den PCI Bus angebunden sind teilen sich IRQ 18. Eine dieser Schnittstellen ist f\"ur den Service konfiguriert. Ein DHCP Server verteilt an dieser Schnittstelle einem Servicelaptop eine definierte IP Adresse. Eine weitere Schnittstelle dient zur Integration der Lasersteuerung in das Firmennetzwerk. Die vierte Ethernetschnittstelle wird momentan nicht ben\"otigt.
+
+\end{description}