13.10.2013 Aufrufe

Große Studienarbeit Praktikumsversuch mit dem Topas LX Board ...

Große Studienarbeit Praktikumsversuch mit dem Topas LX Board ...

Große Studienarbeit Praktikumsversuch mit dem Topas LX Board ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Fachhochschule Merseburg<br />

Fachbereich Maschinenbau<br />

<strong>Große</strong> <strong>Studienarbeit</strong><br />

<strong>Praktikumsversuch</strong> <strong>mit</strong> <strong>dem</strong><br />

<strong>Topas</strong> <strong>LX</strong> <strong>Board</strong> von Toshiba<br />

Betreuer: Prof. Dr.-Ing. M. Lohöfener<br />

vorgelegt von: David Dekert<br />

Studiengang Mechatronik<br />

8. Semester<br />

Datum: 11.05.2004


Inhaltsverzeichnis<br />

Verzeichnis der Abkürzungen und Kurzzeichen ___________________________4<br />

1 Einleitung _______________________________________________________5<br />

2 Begründung der Aufgabe ___________________________________________5<br />

3 Randbedingungen und Anforderungen ________________________________6<br />

3.1 Zusätzlich benötigte Programme _________________________________6<br />

3.1.1 Minicom ________________________________________________6<br />

3.1.2 Tftp-Server _____________________________________________7<br />

3.1.3 Dhcp-Server ____________________________________________7<br />

3.1.4 Ethereal ________________________________________________8<br />

3.1.5 Midnight Commander _____________________________________8<br />

3.2 Hinweise zum Arbeiten <strong>mit</strong> SuSE _________________________________9<br />

3.2.1 Arbeiten in und <strong>mit</strong> der Textkonsole __________________________9<br />

3.2.2Einbinden von Laufwerken _________________________________10<br />

3.2.3 Installieren von Programmen ______________________________10<br />

3.2.4 Programme im Runlevel Editor aktivieren _____________________11<br />

4 Beschreibung des <strong>Topas</strong> <strong>LX</strong> Starter Kit _______________________________12<br />

4.1 Das CPU-<strong>Board</strong> _____________________________________________13<br />

4.2 Das Mainboard ______________________________________________14<br />

4.3 Schnittstellen des <strong>Topas</strong> <strong>LX</strong> Starter Kit ___________________________16<br />

4.4 Schalter des <strong>Topas</strong> Starter Kits _________________________________17<br />

5 Durchführung ___________________________________________________18<br />

5.1 Vorbereitung zur Installation des Linux Systems ____________________18<br />

5.1.1 Anlegen des Bootverzeichnisses ___________________________18<br />

5.1.2 Einrichten von Minicom ___________________________________18<br />

5.1.3 Einrichten der Ethernetzverbindung _________________________20<br />

5.1.3.1 Tftp- Server _____________________________________20<br />

5.1.3.2 NFS- Server _____________________________________20<br />

5.1.3.3 Eintragen der Rechnernamen _______________________21<br />

- 2 -


5.2 Installieren des Kernelimages ___________________________________22<br />

5.2.1 Installation als „standalone“- Einheit _________________________22<br />

5.2.2 Installation als Entwicklungseinheit __________________________26<br />

5.3 Booten des Starter Kits ________________________________________27<br />

5.4 Erstellen und Kompilieren von C- Programmen _____________________28<br />

5.4.1 Erstellen von C- Programmen <strong>mit</strong> KDevelop __________________28<br />

5.4.2 Kompilieren von C- und C++- Programmen ___________________29<br />

6 Programmieren <strong>mit</strong> <strong>dem</strong> Qt Designer ________________________________31<br />

6.1 Ansicht des Qt Designers ______________________________________31<br />

6.2 Starten des Qt Designers ______________________________________32<br />

6.3 Anlegen eines Dialogfensters ___________________________________33<br />

6.4 Hinzufügen von Widgets _______________________________________33<br />

6.5 Ausrichten der Widgets ________________________________________37<br />

6.6 Verbinden der Widgets ________________________________________39<br />

6.7 Quellkode der Funktionsdefinition ________________________________40<br />

6.8 Programmtext _______________________________________________41<br />

6.9 Kompilieren der Anwendungsprogramme _________________________42<br />

7 Zusammenfassung _______________________________________________44<br />

Literaturverzeichnis ________________________________________________45<br />

Abbildungsverzeichnis ______________________________________________46<br />

Tabellenverzeichnis ________________________________________________46<br />

- 3 -


Verzeichnis der Abkürzungen und Kurzzeichen<br />

CPLD Complex Programmable Logic Device<br />

CPU Central Processing Unit<br />

DIP Dual In-Line Packaging<br />

EPROM Electrically Programmable Read Only Memory<br />

EEPROM Electrically Erasable Programmable Read Only Memory<br />

IO I -> input, O -> output<br />

IrDA Infrared Data Association<br />

i368 Prozessortyp von Intel<br />

LAN Local Area Network<br />

MAC Media Access Control<br />

NFS Network File System<br />

PCMCIA Personal Computer Memory Card International Association<br />

PLL Modul Phase Locked Loop<br />

RISC Reduced Instruction Set Computer<br />

Qt Programmieroberfläche der Firma Trolltech<br />

SDRAM synchronous dynamic random access memory, Arbeitsspeicher<br />

SPI Synchron Seriel Interface<br />

Tftp Trivial File Transfer Protocol<br />

UART Universal Asynchron Receiver Trans<strong>mit</strong>ter<br />

Hinweis:<br />

Im Verlauf des Dokuments wird der Leser aufgefordert, Einträge in<br />

den Eingabefeldern von diversen Fenstern zu tätigen. Die Einträge sind<br />

durch kursive Schreibweise und Hochkommas (' kursiv ') gekennzeichnet,<br />

die Eingabefelder sowie die Fenster sind fett gedruckt.<br />

Verzeichnisse, Dateien und Kommandos werden durch eine kursive<br />

Schreibweise hervorgehoben. Ein Freizeichen im Befehl wird durch<br />

mehrere Freizeichen verstärkt dargestellt.<br />

- 4 -


1 Einleitung<br />

Für den Fachbereich Maschinenbau der Fachhochschule Merseburg ist ein<br />

<strong>Praktikumsversuch</strong> zu entwickeln. Der Versuch beinhaltet das Programmieren<br />

einer Steuerungsaufgabe auf einem Hostrechner, diese wird auf einem <strong>Topas</strong> <strong>LX</strong><br />

Starter Kit ausgeführt. Hierbei werden die Ein- und Ausgänge der Parallel-<br />

schnittstelle des Embedded Systems angesteuert. Zur Visualisierung dient ein<br />

Adapter <strong>mit</strong> Tasten und Leuchtdioden.<br />

2 Begründung der Aufgabe<br />

Die ersten Schritte der <strong>Studienarbeit</strong> bestehen aus <strong>dem</strong> Durchsuchen der CD und<br />

<strong>dem</strong> Lesen der Dokumentation des Starter Kits und die Installation des Betriebs-<br />

systems SuSE Linux 8.2 auf <strong>dem</strong> PC. Um <strong>mit</strong> <strong>dem</strong> Starter Kit zu kommunizieren<br />

und ein Datenaustausch zu ermöglichen, muss die benötigte Software installiert<br />

und konfiguriert werden. Anschließend kann das Kernelimage 1 nach der „Quick<br />

Start Manuel“ /QuSt/ über Ethernet und <strong>mit</strong> Hilfe der Minicomkonsole auf <strong>dem</strong><br />

Starter Kit installiert werden. Da ein Demonstrationsprogramm von Qt, der Firma<br />

Trolltech, nach <strong>dem</strong> Booten des Starter Kits automatisch gestartet wird und das<br />

Programm Qt-Embedded 2.3.2 auf der beiliegenden CD (im Verzeichnis:<br />

~/contrib/qt-embedded/qte_src.tar.gz/Qte) zur Verfügung steht, soll die Ansteu-<br />

erung des Parallelports <strong>mit</strong> einem Qt-Programm realisiert werden. Hierbei sind<br />

acht Leuchtdioden einzeln anzusteuern und fünf Taster abzufragen. SuSE stellt<br />

das Programm Qt Designer zum grafischen Programmieren zur Verfügung. Zur<br />

Einarbeitung wird in der Hilfestellung die vorgestellte Programmieranleitung<br />

anhand eines Beispiels nachvollzogen. Es ist vorstellbar, dass <strong>mit</strong> <strong>dem</strong> Qt<br />

Designer das Programm entwickelt und <strong>mit</strong> <strong>dem</strong> Qt- Embedded übersetzt und<br />

ausgeführt wird.<br />

Der erste Teil der <strong>Studienarbeit</strong> stellt alle benötigten Programme und die verwen-<br />

deten Handgriffe vor. Anschließend wird die Konfiguration des Netzwerkes und<br />

die Installation des Betriebssystems sowie die Ausführung von C- Programmen<br />

auf <strong>dem</strong> Starter Kit beschrieben. Am Ende wird ein Einblick in das Program-<br />

mieren <strong>mit</strong> <strong>dem</strong> Qt Designer, anhand eines Beispielprogramms, gegeben.<br />

1 Das Kernelimage ist der innerste Teil eines Betriebssystems. Es ist <strong>mit</strong> den wichtigsten<br />

Funktionen wie Speicher-, Prozessverwaltung und Steuerung der Hardware ausgestattet.<br />

- 5 -


3 Randbedingungen und Anforderungen<br />

Für die Programmierung und die Kommunikation <strong>mit</strong> <strong>dem</strong> <strong>Topas</strong> <strong>LX</strong> Starter Kit<br />

wird ein Hostrechner benötigt. Das Betriebssystem des Hostrechners sollte eine<br />

aktuelle Version des SuSE Linux sein. Im Rahmen dieser Arbeit wurde die Stan-<br />

dardversion von SuSE Linux 8.2 <strong>mit</strong> der K Desktop Environment Version 3.1.1<br />

verwendet. Zusätzlich werden Programme für Netzwerkdienste, zur Ansteuerung<br />

des Embedded Systems und für die Entwicklung von C, C ++ und Qt Programmen<br />

benötigt. Für das Starter Kit ist das Betriebssystem Hard Hat Linux® 2.0<br />

Journeyman Edition von MontaVista vorgesehen. Die erforderliche Software<br />

befindet sich auf der CD, welche <strong>dem</strong> Starter Kit beiliegt.<br />

3.1 Zusätzlich benötigte Programme<br />

Die im folgenden aufgelisteten Programme und Werkzeuge werden vom Entwick-<br />

lungsrechner benötigt. Zur Installation kann das YaST2- Kontrollzentrum von<br />

SuSE verwendet werden. Die Programme befinden sich alle auf der Installations-<br />

DVD von SuSE Linux 8.2. Im Abschnitt 3.2 sind die erforderlichen Handgriffe<br />

beschrieben, die zur Installation der Programme nötig sind.<br />

3.1.1 Minicom<br />

Die Ansteuerung des <strong>Topas</strong> Starter Kits wird <strong>mit</strong> <strong>dem</strong> Terminalprogramm Minicom<br />

ermöglicht. Hierbei ist der Hostrechner 2 und der Targetrechner 3 , in diesem Fall<br />

das <strong>Topas</strong> Starter Kit, über die serielle Schnittstelle <strong>mit</strong>einander verbunden.<br />

Durch diese Schnittstelle kann der Hostrechner auf <strong>dem</strong> Clientrechner zugreifen<br />

und ihm Befehle erteilen, wie zum Beispiel das Laden von Dateien vom Host-<br />

rechner in den Speicher des <strong>Topas</strong> Starter Kit.<br />

2 Host: Hauptrechner<br />

3 Target: Zielrechner<br />

- 6 -


3.1.2 Tftp-Server<br />

Die Übertragung von Daten wird von einem Tftp-Server (engl. Trivial File Transfer<br />

Protocol) verwaltet, welcher das Senden und Empfangen von Datenpaketen über<br />

die Ethernetschnittstelle ermöglicht.<br />

3.1.3 Dhcp-Server<br />

Die Vergabe von IP Adressen wird über den Dhcp-Server des Internet Software<br />

Consortiums verwaltet. Jeder Client, der sich am Netz befindet, teilt <strong>dem</strong> Server<br />

seine MAC 4 - Adresse <strong>mit</strong>. Die Aufgabe des Dhcp-Server ist nun, <strong>dem</strong> Client eine<br />

IP-Adresse <strong>mit</strong>zuteilen. Die IP-Adresse kann dynamisch, d.h. sie wird bei jeder<br />

Neuanmeldung variieren, oder fest zugeordnet werden. Die Informationen für die<br />

Vergabe von IP- Adressen befinden sich in der zentralen Konfigurationsdatei<br />

dhcpd.conf, im Verzeichnis /etc.<br />

Folgende Informationen werden eingetragen:<br />

– der lokale Domainname<br />

' option domain-name "linux"; '<br />

– die Adresse des Routers<br />

' option routers 192.168.1.1; '<br />

– die DNS- Adresse des Internet Service Providers<br />

' option domain-name-servers 192.168.1.1; '<br />

– die Broadcast 5 - Adresse<br />

' option broadcast-address 192.168.1.255; '<br />

– der Bereich der Vergabe von dynamischen Adressen<br />

' subnet 192.168.1.0 netmask 255.255.255.0 {<br />

range 192.168.1.11 192.168.1.20;} '<br />

– die feste IP- Adresse für MAC- Adresse des Starter Kit<br />

' host topas { hardware ethernet 00:00:04:ff:ff:ff; fixed-address<br />

192.168.1.2; } '<br />

Der Dhcp- Server kann manuell gestartet und wieder deaktiviert werden, hierfür<br />

können folgende Befehle in einer Rootkonsole verwendet werden:<br />

/etc/init.d/dhcpd start Starten<br />

/etc/init.d/dhcpd stop Stoppen<br />

/etc/init.d/dhcpd status Abfrage des Betriebszustand<br />

4 MAC Adresse (Hexadezimaler) wird vom Hersteller festgelegt.<br />

5 Übertragung von Daten an alle Rechner im Netzwerk.<br />

- 7 -


Soll der Dhcp- Server bei je<strong>dem</strong> Start des Computers automatisch aktiviert<br />

werden, muss dies im Runlevel Editor eingestellt werden, siehe unter 3.2.4<br />

Programme im Runlevel Editor aktivieren.<br />

3.1.4 Ethereal<br />

Ethereal überwacht und zeigt den Datenverkehr des Netzwerkes an. Zum Starten<br />

des Programms werden Rootrechte benötigt. Um diese zu erlangen, kann in einer<br />

Konsole <strong>mit</strong> <strong>dem</strong> Befehl sux in den Rootmodus geschalten werden. Als nächstes<br />

wird, <strong>mit</strong> <strong>dem</strong> Befehl: ethereal, das Programm aufgerufen. In der Menüleiste<br />

unter Capture wird die Überwachung gestartet. Es öffnet sich das Fenster<br />

Capture Options, worin die Schnittstelle unter Interface eingetragen wird, zum<br />

Beispiel ' eth0 '. Anschließend die Capture Options <strong>mit</strong> OK schließen so<strong>mit</strong> wird<br />

die Überwachung gestartet, ein neues Fenster zählt die verschiedenen Protokolle.<br />

Wird die Überwachung gestoppt, werden die registrierten Protokolle im Fenster<br />

Capture des Ethereal angezeigt.<br />

3.1.5 Midnight Commander<br />

Der Midnight Commander ist ein Werkzeug für die Verwaltung von<br />

Verzeichnissen und Dateien. Mit seiner Hilfe können symbolische Links<br />

(Verknüpfungen) erstellt, Rechte geändert, Dateien geöffnet, kopiert und<br />

verschoben werden. Er wird <strong>mit</strong> <strong>dem</strong> Befehl mc in einer Konsole geöffnet. Das<br />

Fenster besteht aus zwei Teilen, in denen Verzeichnisbäume dargestellt sind. Um<br />

in den Verzeichnissen zu arbeiten und sich zu bewegen, können die<br />

Konsolenbefehle (zum Beispiel cd, mkdir), die Maus oder die Tastatur verwendet<br />

werden.<br />

- 8 -


3.2 Hinweise zum Arbeiten <strong>mit</strong> SuSE<br />

Das folgende Kapitel stellt einige Handgriffe zum Arbeiten <strong>mit</strong> Linux, speziell <strong>mit</strong><br />

SuSE vor. Es befasst sich <strong>mit</strong> <strong>dem</strong> Arbeiten in Textkonsolen, <strong>dem</strong> Erlangen von<br />

Zugriffsrechten, <strong>dem</strong> Zugreifen auf CDs oder andere Datenträger sowie <strong>mit</strong> <strong>dem</strong><br />

Installieren und Aktivieren von Programmen.<br />

3.2.1 Arbeiten in und <strong>mit</strong> der Textkonsole<br />

Linux kann im Grafikmodus, <strong>mit</strong> <strong>dem</strong> X Windows System (ähnlich wie unter<br />

Windows von Microsoft), sowie in einer Textkonsole betrieben werden. In dieser<br />

Konsole können <strong>mit</strong> der Tastatur Kommandos eingegeben werden, welche<br />

interpretiert und ausgeführt werden. Es können mehrere Konsolen gleichzeitig<br />

benutzt werden, da Linux ein Multitasking- System ist. Das Aufrufen der ersten<br />

von sechs, standardmäßig eingestellten, Konsolen, erfolgt <strong>mit</strong> der<br />

Tastenkombination Alt und F1, für die zweit Konsole gilt Alt und F2 u.s.w.. Von<br />

einem bereits geöffneten Fenster im Grafikmodus kann <strong>mit</strong> den Tasten Strg+Alt<br />

und F1 bis F6 die Textkonsolen aufgerufen werden. Aus <strong>dem</strong> Grafikmodus<br />

können Konsolen in Form von Fenster, auch Shell- Fenster genannt, im Menü<br />

System, des Hauptmenüs Programm starten, unter Terminal-Programme oder<br />

Kommandozeilen geöffnet werden.<br />

Um in einer Textkonsole zu arbeiten, muss ein Benutzer angemeldet sein, ist dies<br />

noch nicht erfolgt, wird man aufgefordert den Benutzernamen und das dazugehö-<br />

rige Passwort einzugeben. Der Befehl exit oder die Tastenkombination Strg+D<br />

wird benutzt, um sich abzumelden. Werden die Rechte eines anderen Benutzers<br />

nur für kurze Zeit benötigt, bietet sich der Befehl su Benutzername an. Sollen in<br />

einem Konsolenfenster (im X Windows System) administrative Aufgaben durchge-<br />

führt werden, kann <strong>mit</strong> sux, der Benutzer „root“ angemeldet werden, da der Benut-<br />

zer <strong>mit</strong> Rootrechten uneingeschränkten Zugriff auf jedes Programm und jede<br />

Datei besitzt. Die Befehle werden automatisch <strong>mit</strong> der Tabulatortaste vervollstän-<br />

digt. Zuvor eingegebene Kommandos werden gespeichert und können <strong>mit</strong> den<br />

Cursortasten und aufgerufen oder <strong>mit</strong> der Bildaufwärtstaste vervollständigt werden.<br />

- 9 -


3.2.2 Einbinden von Laufwerken<br />

Bevor auf Daten einer CD, DVD, Diskette oder USB- Speicherstift zugegriffen<br />

werden kann, müssen diese zuvor eingebunden werden. Dies geschieht norma-<br />

lerweise automatisch, wenn das jeweilige Symbol auf <strong>dem</strong> Desktop einmal ange-<br />

klickt wird. Sollte das Symbol des Datenträgers nicht schnell erreichbar sein, kann<br />

in einer Konsole <strong>mit</strong> <strong>dem</strong> Kommando:<br />

mount media/Datenträger<br />

dieser eingebunden werden. Die Bezeichnung des Datenträgers können zum<br />

Beispiel /cdrom, /cdromrecorder, /dvd, /dvdrecorder /floppy oder /sda1 sein. Wenn<br />

der Datenträger nicht mehr gebraucht wird, muss er aus der Einbindung gelöst<br />

werden, in<strong>dem</strong> <strong>mit</strong> der rechten Maustaste auf das entsprechende Symbol geklickt<br />

und die Anweisung Laufwerk-Einbindung lösen ausführt wird. Eine andere Mög-<br />

lichkeit ist in einer Konsole die folgende Befehlszeile einzugeben.<br />

umount media/Datenträger<br />

3.2.3 Installieren von Programmen<br />

Zur Installation bietet SuSE das YaST2-Kontrollzentrum an, in diesem kann im<br />

Menü Software das Untermenü Software installieren oder löschen geöffnet<br />

werden. Als nächstes können die gewünschten Programme oder Pakete durch<br />

klicken auf das Auswahlfeld () gewählt und <strong>mit</strong> einem Klick auf den Button<br />

Akzeptieren installiert werden. Mit <strong>dem</strong> Dropdownmenü Filter und der Option<br />

Suchen können Pakete gesucht werden. Bei der Installation können Abhängig-<br />

keiten zu anderen Programmen entstehen, es empfiehlt sich diese <strong>mit</strong> zu instal-<br />

lieren, um eine ordnungsgemäße Funktion zu gewährleisten.<br />

Im Untermenü Software installieren oder löschen können bereits installierte<br />

Pakete aktualisiert und gelöscht werden, dazu muss mehrfach auf das Auswahl-<br />

feld geklickt werden.<br />

- 10 -


3.2.4 Programme im Runlevel Editor aktivieren<br />

Um nicht bei je<strong>dem</strong> Starten des Computers immer wieder benötigte Dienste<br />

manuell starten zu müssen, kann <strong>mit</strong> <strong>dem</strong> Runlevel Editor der Betriebszustand<br />

des jeweiligen Programms festgelegt werden. Es gibt unter SuSE folgende sechs<br />

Runleveltypen (der Runlevel 4 hat keine Bedeutung):<br />

– Runlevel 1: Single-User<br />

– Runlevel 2: Multi-User ohne Netzwerk<br />

– Runlevel 3: Multi-User <strong>mit</strong> Netzwerk<br />

– Runlevel 5: Multi-User <strong>mit</strong> Netzwerk und automatischen X-Start<br />

– Runlevel 6: Shutdown <strong>mit</strong> reboot<br />

– Runlevel 0: Shutdown <strong>mit</strong> Halt<br />

Die Runlevel 3 und 5 sind die gebräuchlichsten Betriebszustände. Der Runlevel<br />

Editor wird im Menü System des YaST2-Kontrollzentrums aufgerufen. Unter<br />

Runlevel-Eigenschaften öffnet sich eine Tabelle <strong>mit</strong> den Systemdiensten. Die<br />

ausgewählten Dienste können im Dropdownmenü Anwenden/Zurücksetzen<br />

aktiviert oder deaktiviert werden. Beim Aktiveren werden automatisch die Run-<br />

level 3 und 5 eingeschalten, bei den nächsten Neustart des Computers werden<br />

so<strong>mit</strong> die Dienste automatisch gestartet. Mit der Option Jetzt Starten im Drop-<br />

downmenü Starten/Anhalten/Aktualisieren kann ein Dienst gleich gestartet<br />

werden.<br />

- 11 -


4 Beschreibung des <strong>Topas</strong> <strong>LX</strong> Starter Kit<br />

Das <strong>Topas</strong> <strong>LX</strong> Starter Kit kann für Entwicklungsarbeiten und zur Demonstration<br />

verwendet werden. Es besteht aus <strong>dem</strong> Mainboard, <strong>dem</strong> CPU- <strong>Board</strong> und einem<br />

LCD Display <strong>mit</strong> integrierter Touch- Screen- Funktion. Das CPU- <strong>Board</strong> beinhaltet<br />

den Mikroprozessor TX3912AU-92 RISC von Toshiba und verschiedene<br />

Speicher-einheiten zum Beispiel der SDRAM. Über einen Steckkontakt ist das<br />

CPU- <strong>Board</strong> <strong>mit</strong> den verschiedenen Komponenten des Mainboards verbunden<br />

(Abb. 4-1). Das Mainboard dient als universelle Schnittstelle zwischen der Umwelt<br />

und <strong>dem</strong> CPU- <strong>Board</strong>. Die Spannungsversorgung von 5V und ±12V wird durch ein<br />

Netzgerät gewährleistet.<br />

Abb. 4-1: Mainboard <strong>mit</strong> CPU-<strong>Board</strong> (weiß eingerahmt) (Quelle:/HwMa, S. 5/)<br />

- 12 -


4.1 Das CPU-<strong>Board</strong><br />

Das CPU-<strong>Board</strong> wurde für den 32bit Mikroprozessor TX3912AU-92 RISC von<br />

Toshiba entwickelt. Die Abbildung 4.1-2 zeigt das Block Diagramm. Es ist <strong>mit</strong><br />

16MByte (8x 16MBits) Flashspeicher (TC58FVT160FT-85) sowie 2MByte (2x<br />

8MBits) SDRAM (TC59SM716AFT-80) und einem seriellen SPI EEPROM aus-<br />

gestattet, diese sind alle <strong>mit</strong> der CPU über den Datenbus und den Adressbus<br />

verbunden.<br />

Abb. 4.1-2: Block Diagramm vom CPU-<strong>Board</strong> (Quelle:/HwMa, S. 6/)<br />

Die 32 Bit Datenübertragung wird über zwei 16Bit Bustransceiver (engl. Bus-<br />

Sender/Empfänger) gesteuert. Die CPLD ist ein programmierbarer Logikbaustein,<br />

welcher zusätzlich <strong>mit</strong> <strong>dem</strong> Datenbus verbunden ist. Der Adressbus wird über ein<br />

16Bit Latch 6 (TC74LCX16373AFT) und einem 16Bit Busbuffer (TC74LCX16244<br />

AFT) realisiert. Das CPU- <strong>Board</strong> ist <strong>mit</strong> zwei Taktgebern ausgestattet. Der eine<br />

liefert den Systemtakt von 11,52MHz, dieser wird <strong>mit</strong> <strong>dem</strong> CPU PLL Modul <strong>mit</strong><br />

<strong>dem</strong> Faktor acht multipliziert, so dass sich eine Arbeitsfrequenz von 92,12MHz<br />

ergibt. Für den Echtzeitbetrieb wird eine Frequenz von 32,767KHz zur Verfügung<br />

gestellt, ohne diese würde die CPU nicht funktionieren. Die Kommunikation<br />

zwischen CPU- <strong>Board</strong> und Mainboard kann auf zwei verschiedenen Wegen statt-<br />

finden. Die gebräuchlichste Methode ist die Kommunikation über die Mainboard-<br />

schnittstelle, dadurch wird der volle Zugang zu allen Funktionen des Mainboards<br />

ermöglicht. Der zweite Weg ist über die Debugschnittstelle, wobei die CPU <strong>mit</strong><br />

<strong>dem</strong> Super- IO- Chip des Mainboards kommuniziert. So<strong>mit</strong> wird nur das Arbeiten<br />

über den Parallelport und die serielle Debugschnittstelle möglich.<br />

6 Latch: Bustreiber <strong>mit</strong> Zwischenspeicher.<br />

- 13 -


4.2 Das Mainboard<br />

Das Mainboard ist Träger von verschiedenen Komponenten, welche <strong>dem</strong> CPU-<br />

<strong>Board</strong> zur Verfügung stehen. Eine Funktionsübersicht bietet das Blockdiagramm<br />

in der Abbildung 4.2-3.<br />

Ein Datenbus verbindet über „Buffers“ die aufgelisteten Bausteine:<br />

– die Controller des Ethernetzwerkes und der Tastatur,<br />

– die Speicher EPROM, Disc- On- Chip und die PCMCIA Karte,<br />

– diverse Schalter und Leuchtdioden,<br />

– der Echtzeit Taktgeber,<br />

– die Super- IOs, das Parallelport und der externe UART (Universal<br />

Asynchron Receiver Trans<strong>mit</strong>ter) <strong>mit</strong> einander.<br />

Der Disc- On- Chip- Speicher ist zusätzlich über einen programmierbaren Logik-<br />

baustein (CPLD) und <strong>dem</strong> Buffer <strong>mit</strong> der CPU- <strong>Board</strong>- Schnittstelle verbunden.<br />

Folgende Komponenten sind direkt <strong>mit</strong> der CPU- <strong>Board</strong>- Schnittstelle verbunden:<br />

– die LCD- und,<br />

– die Infrarotschnittstellenkontroller (IrDA),<br />

– die interne UART sowie<br />

– über das Analog Front End die Lautsprecher- (Speaker) , die<br />

Mikrofonbuchse (Mic) und der Telefonanschluss (Phone).<br />

Das Mainboard verfügt über Standardfunktionen, wie zum Beispiel das Reset<br />

Signal, die Kontrolle der Stromversorgung oder das zur Verfügung stellen von<br />

Speicherkapazität.<br />

- 14 -


Abb. 4.2-3: Blockdiagramm des Mainboards (Quelle:/HwMa, S. 7/)<br />

- 15 -


4.3 Schnittstellen des <strong>Topas</strong> <strong>LX</strong> Starter Kit<br />

In diesem Kapitel werden die verschiedenen Anschlussmöglichkeiten des Main-<br />

boards aufgelistet. Die Abbildung 4.3-4 stellt das Anschlussschema dar.<br />

Das <strong>Topas</strong> <strong>LX</strong> Starter Kit verfügt über folgende Schnittstellen:<br />

– einen Anschluss für das Netzgerät,<br />

– eine Schnittstelle für die Tastatur,<br />

– zwei serielle Schnittstellen für einen Hostrechner und einer Maus,<br />

– einen Parallelport,<br />

– einen Anschluss für das LCD Display,<br />

– eine Ethernetschnittstelle,<br />

– einen Einschub für PCMCIA Karten,<br />

– die Infrarotschnittstelle (IrDA),<br />

– einen Anschluss für Lautsprecher,<br />

Mikrofon und Telefon sowie<br />

– einen Steckplatz und eine Debug Schnittstelle<br />

für das CPU- <strong>Board</strong>.<br />

Debug Schnittstelle Karteneinschub Telefon Mikrofon Lautsprecher<br />

Netzgerät Tastatur Host Parallelport Maus Display Ethernet<br />

Abb. 4.3-4: Anschlussschema des Mainboards (Quelle:/HwMa, S. 11/)<br />

- 16 -


4.4 Schalter des <strong>Topas</strong> Starter Kits<br />

Die Abbildung 4.4-5 stellt die Anordnung und Bezeichnung der Schalter und<br />

Taster des Mainboards dar. Mit <strong>dem</strong> DIP- Schalter 7 S21 werden die internen<br />

Kom-mandos eingeschalten, diese müssen zuvor, wie in Abschnitt 5.2.1<br />

beschrieben, gesetzt werden. Die Stromzufuhr wird <strong>mit</strong> <strong>dem</strong> Schalter S25<br />

eingeschalten, danach kann das <strong>Board</strong> <strong>mit</strong> <strong>dem</strong> On Button ein- und <strong>mit</strong> <strong>dem</strong> Off<br />

Button wieder ausgeschalten werden.<br />

Power S25<br />

Abb. 4.4-5: Schalteranordnung des Mainboards (Quelle:/HwMa, S. 5/)<br />

7 Mikroschalter <strong>mit</strong> 8 Schieber<br />

DIP Schalter S21<br />

CPU Reset<br />

User<br />

Reset<br />

On Button<br />

Off Button<br />

- 17 -


5 Durchführung<br />

In <strong>dem</strong> folgen<strong>dem</strong> Abschnitt sind die einzelnen Schritte der Installation des<br />

Betriebssystems bis hin zur Inbetriebnahme des Starter Kits aufgeführt. Am Ende<br />

wird die Erstellung eines Programms in der Hochsprache C für den Toshiba<br />

Mikroprozessor erklärt.<br />

5.1 Vorbereitung zur Installation des Linux Systems<br />

5.1.1 Anlegen des Bootverzeichnisses<br />

Auf <strong>dem</strong> Hostrechner wird ein Ordner <strong>mit</strong> <strong>dem</strong> Namen /tftpboot angelegt, dies<br />

kann zum Beispiel in einer Konsole <strong>mit</strong> <strong>dem</strong> Befehl mkdir /tftpboot erfolgen. Aus<br />

diesem Verzeichnis wird später der Targetrechner booten und seine Verzeichnis-<br />

struktur verwalten. Hier hinein werden die zwei Dateien vmlinux und cramfs_lcd<br />

von der <strong>mit</strong>gelieferten CD, aus <strong>dem</strong> Verzeichnis /TOSHIBA/quickstart, kopiert.<br />

Zuvor muss die CD eingebunden werden. Hierfür werden folgende Kommandos<br />

verwendet.<br />

Einbinden:<br />

Kopieren:<br />

mount /media/dvd<br />

cp /media/dvd/TOSHIBA/quickstart/vmlinux /tftpboot<br />

cp /media/dvd/TOSHIBA/quickstart/cramfs_lcd /tftpboot<br />

Dabei steht /media/dvd für das Laufwerk, in <strong>dem</strong> sich die CD befindet. Die Datei<br />

vmlinux beinhaltet das Kernelimage des MontaVista Linux® 2.0 und das Verzeich-<br />

nissystem ist in cramfs_lcd enthalten.<br />

5.1.2 Einrichten von Minicom<br />

Für die Konfiguration des Terminalprogramms findet in einer Konsole statt.<br />

Hierbei werden Rootrechte benötig, für diese Rechte muss der Benutzer sich als<br />

root <strong>mit</strong> <strong>dem</strong> dazu gehörigen Passwort anmelden. Mit der Eingabe von<br />

' minicom -s ' wird das Konfigurationsmenü, wie in Abbildung 5.1.2-6 dargestellt,<br />

aufgerufen.<br />

- 18 -


Filenames and paths<br />

File transfer protocols<br />

Serial port setup<br />

Mo<strong>dem</strong> and dialing<br />

Screen and keyboard<br />

Save setup as dfl<br />

Save setup as..<br />

Exit<br />

Exit from Minicom<br />

Abb. 5.1.2-6: Konfigurationsmenü von Minicom<br />

In <strong>dem</strong> Untermenü Serial port setup wird die Schnittstelle in Zeile A sowie die<br />

Geschwindigkeit und Übertragungsparameter in E eingestellt. Hierfür müssen die<br />

Zeilen wie folgt geschrieben werden:<br />

– A - Serial Device : /dev/ttyS0<br />

– E - Bps /Par/Bits : 57600 8N1.<br />

Mit <strong>dem</strong> jeweiligen Buchstaben wird die Zeile gewählt und die Parameter können<br />

nun geändert werden. Um zum Hauptmenü zurück zu kehren, wird die Eingabe-<br />

taste gedrückt. Als nächstes muss kontrolliert werden, ob die Werte im Unter-<br />

menü Mo<strong>dem</strong> and dialing, (Abb. 4.1.2-7) , gesetzt sind. Die Einträge in den<br />

Zeilen A - Init string, B - Reset string und K - Hang-up string müssen gelöscht<br />

werden.<br />

A - Init string .....................<br />

B - Reset string .................<br />

C - Dialing prefix #1.......... .ATDT<br />

D - Dialing suffix #1........... ^M<br />

E - Dialing prefix #2........... ATDP<br />

F - Dialing suffix #2............ ^M<br />

G - Dialing prefix #3........... ATX1DT<br />

H - Dialing suffix #3........... ;X4D^M<br />

I - Connect string .............. CONNECT<br />

J - No connect strings ....... NO CARRIER BUSY NO DIALTONE VOICE<br />

K - Hang-up string ............<br />

L - Dial cancel string ......... ^M<br />

M - Dial time ..................... 45 Q - Auto bps detect ... No<br />

N - Delay before redial ..... 2 R - Mo<strong>dem</strong> has DCD line .. Yes<br />

O - Number of tries .......... 10 S - Status line shows ... DTE speed<br />

P - DTR drop time (0=no).. 1 T - Multi-line untag .... No<br />

Change which setting? (Return or Esc to exit)<br />

Abb. 5.1.2-7: Untermenü Mo<strong>dem</strong> and dialing<br />

- 19 -


Am Ende werden die Einstellungen <strong>mit</strong> Save as dlf gespeichert. Danach kann<br />

Minicom <strong>mit</strong> Exit from Minicom verlassen werden. Um später <strong>mit</strong> Minicom zu<br />

arbeiten, lässt es sich <strong>mit</strong> den Befehl minicom in einer Konsole aufrufen. Eine<br />

Funktionsübersicht der Tastaturbefehle wird <strong>mit</strong> der Tastenkombination Strg-A<br />

und anschließend Z geöffnet.<br />

5.1.3 Einrichten der Ethernetzverbindung<br />

5.1.3.1 Tftp- Server<br />

Der Tftp- Server ermöglicht das Senden und Empfangen von Dateien. Es muss<br />

sichergestellt sein, dass er installiert und aktiviert ist. Der Netzwerkdienst Tftp-<br />

Server wird vom Superserver „xinetd“ verwaltet. Zum Konfigurieren des Super-<br />

server wird, im Menü Netzwerkdienste des YaST2- Kontrollzentrum, das<br />

Untermenü Netzwerkdienste (inetd) geöffnet. In diesem können die verschie-<br />

denen Dienste bearbeitet, aktiviert oder deaktiviert werden. Um einen Dienst<br />

starten zu können, muss der Superserver selbst aktiviert werden, dazu wird die<br />

Schaltfläche Aktivieren angeklickt. Als nächstes kann in der Tabelle der Tftp-<br />

Server eingestellt werden. Hierfür wird das Bearbeitungsfenster <strong>mit</strong> <strong>dem</strong> Button<br />

Bearbeiten aufgerufen. Das Server-Argument ' -s/ tftpboot ' ist einzutragen und<br />

zum Schließen des Fensters wird auf Übernehmen geklickt. Anschließend muss<br />

der Tftp- Server <strong>mit</strong> <strong>dem</strong> Button Status wechseln (´An´ oder ´Aus´) aktiviert<br />

werden. Zum Speichern und Verlassen des Untermenüs dient der Button Weiter.<br />

5.1.3.2 NFS- Server<br />

Der NFS- Server ermöglicht <strong>dem</strong> Client, hier das Starter Kit, den Zugriff auf<br />

Verzeichnisse des Hostrechners. Es werden die Verzeichnisse und die Zugriffs-<br />

rechte für den jeweiligen Rechner <strong>mit</strong> <strong>dem</strong> YaST2- Kontrollzentrum festgelegt.<br />

Im Menü Netzwerkdienste wird der NFS- Server gestartet, dann kann das<br />

Verzeichnis ' /tftpboot ' hinzugefügt werden. Anschließend müssen die Zugriffs-<br />

rechte: ' rw,no_root_squash,sync ' festgelegt werden. Der Eintrag rw steht für<br />

r=read und w=write, no_root_squash bedeutet, dass die Rootrechte für alle<br />

Rechner, die das Verzeichnis importiert haben, erhalten bleiben.<br />

Wird ein Rechner anstelle des ' * ' angegeben, so besitzt nur dieser Rechner die<br />

eingestellten Zugriffsrechte für dieses Verzeichnis und alle Unterverzeichnisse.<br />

Diese müssen den Zugriff aber auch selbst zulassen.<br />

- 20 -


Die Einträge werden automatisch in die Datei /etc/exports geschrieben und<br />

besitzen folgendes Schema:<br />

/tftpboot *(rw,no_root_squash,sync).<br />

Da<strong>mit</strong> die Einstellungen sofort verwendet werden können, muss der NFS- Server<br />

<strong>mit</strong> <strong>dem</strong> nachstehenden Befehl in einer Rootkonsole neugestartet werden.<br />

/etc/init.d/nfsserver restart<br />

5.1.3.3 Eintragen der Rechnernamen<br />

In <strong>dem</strong> gleichem Menü Netzwerkdienste sind die Rechner im lokalen Netz <strong>mit</strong><br />

ihrer IP- Adresse und deren Namen aufgelistet. Dies hat den Vorteil, dass der<br />

jeweilige Rechner nicht nur <strong>mit</strong> seiner IP- Adresse, sondern <strong>mit</strong> seinen Namen<br />

oder <strong>mit</strong> seinen Kurznamen aufgerufen werden kann. Mit <strong>dem</strong> Button<br />

Hinzufügen kann ein neuer Rechner eingetragen werden. Die Einträge für den<br />

Hostrechner „linux“ und für das Starter Kit <strong>mit</strong> <strong>dem</strong> Namen „topas“ sind in der<br />

Tabelle 5.1.3.3-1 aufgelistet.<br />

IP-Adresse Hostnamen Alias<br />

192.168.1.1 lokal.linux linux<br />

192.168.1.2 toshiba.topas topas<br />

Tabelle 5.1.3.3-1: Host- Konfiguration des Starter Kits<br />

Durch einen Klick auf Beenden werden die Daten gespeichert und automatisch in<br />

die Datei /etc/hosts geschrieben. Diese Einstellungen müssen auch in <strong>dem</strong><br />

Verzeichnis /tftpboot/192.168.1.2/etc/hosts für das <strong>Topas</strong> <strong>Board</strong> geschrieben<br />

werden. Das Eintragen der Rechnernamen ist nur in einem kleinen Netzwerk von<br />

Vorteil, sollten es mehr Teilnehmer werden, wird die Namensvergabe über einen<br />

so genannten Nameserver vorgenommen.<br />

- 21 -


5.2 Installieren des Kernelimages<br />

Zur Installation muss das Starter Kit, wie in Abschnitt 4.3 dargestellt, <strong>mit</strong> <strong>dem</strong><br />

Hostrechner über die serielle Schnittstelle und <strong>dem</strong> Ethernet verbunden sein. Für<br />

die direkte Netzwerkverbindung kann das beilegende gekreuzte (cross over)<br />

Kabel benutzt werden. Wenn die Verbindung jedoch über ein LAN Hub realisiert<br />

wird, ist ein Standardkabel zu verwenden. Das <strong>Topas</strong> <strong>Board</strong> kann in zwei<br />

Betriebsarten verwendet werden.<br />

Zum einen kann es als „standalone“- Einheit laufen, was bedeutet, dass das<br />

Booten möglich ist ohne <strong>mit</strong> einem anderen Rechner in Verbindung zu stehen.<br />

Der Kernel des MontaVista Linux® 2.0 wird in den EPROM des Main <strong>Board</strong>s<br />

gespeichert und so<strong>mit</strong> ist das Booten aus diesem möglich. Der Kernel legt<br />

selbständig ein nur lesbares Dateisystem an. Ordner oder Dateien können im<br />

Verzeichnis /tmp angelegt werden, es ist möglich via Ethernet Dateien einzu-<br />

binden oder zu kopieren. Außer<strong>dem</strong> verfügt das Starter Kit nur über eine kleine<br />

Anzahl von Kommandos. Wird es jedoch ausgeschaltet, gehen alle Verzeichnisse<br />

verloren.<br />

In <strong>dem</strong> zweiten Betriebsmodus wird über den NFS- Server, das vollständige Hard<br />

Hat Linux® 2.0 Dateisystem, welches sich auf <strong>dem</strong> Hostrechner befindet, vom<br />

Target verwaltet. Ein großer Vorteil ist, dass das Dateisystem die Speicher des<br />

<strong>Topas</strong> <strong>Board</strong>s nicht belastet. Es können soweit die Benutzerrechte es zulassen<br />

Dateien und Verzeichnisse nach Belieben vom Host- oder Targetrechner hinzu-<br />

gefügt und verändert werden, ohne dass sie nach <strong>dem</strong> Ausschalten gelöscht<br />

werden. Der letztere Betriebsmodus ist in der Praxis gebräuchlicher und er wird<br />

auch in dieser Arbeit verwendet. Es wird die Installation von beiden Varianten<br />

beschrieben, da die Schritte der zweiten Variante auf der ersten aufbauen.<br />

5.2.1 Installation als „standalone“- Einheit<br />

Als erstes wird das Programm Minicom in einer Konsole gestartet, danach wird<br />

das Starter Kit <strong>mit</strong> <strong>dem</strong> Schalter Power S25 und <strong>dem</strong> On Button eingeschaltet.<br />

Alle Schiebeschalter des DIP- Schalters S21 befinden sich hierbei in der Stellung<br />

Off. Anschließend ist in der Minicomkonsole folgende Nachricht zu sehen.<br />

- 22 -


Nachricht des Starter Kits:<br />

Toshiba Bootloader for TX RISC Reference Kit Ver 1.04<br />

Copyright (c) 1999-2002 TOSHIBA Corporation<br />

<strong>Topas</strong> TX3912 Rev ( 1) CPU Clk 92Mhz, BUS Clk 92Mhz<br />

Slot [0] : MEM Base = 0x80040000, MEM Size = 0x00fc0000<br />

Slot [1] : MEM Base = 0x82000000, MEM Size = 0x01000000<br />

FlashROM [0] B1000000 - B17FFFFF<br />

FlashROM [1] B1800000 - B1FFFFFF<br />

Found ethernet le: Fujitsu MB86967 Ethernet Driver<br />

Als nächstes sind die noch bestehenden Einträge <strong>mit</strong> <strong>dem</strong> Befehl reset zu<br />

löschen und diese Einstellung <strong>mit</strong> save zu sichern. Dieser Vorgang wird <strong>mit</strong> der<br />

Nachricht Completed bestätigt. Das Kernelimage wird <strong>mit</strong> der Befehlszeile:<br />

bb - vmlinux<br />

aus <strong>dem</strong> Verzeichnis /tftpboot in den Arbeitsspeicher des Mainboards geladen.<br />

Dieser Vorgang wird durch die nachstehende Mitteilung bestätigt.<br />

Booting...: Using BOOTP.<br />

Ethernet address 00:00:04:FF:FF:FF<br />

IP address 192.168.1.2 = C0A80102<br />

Booting TFTP server from 192.168.1.1 = C0A80101<br />

kernel file : vmlinux ...<br />

Downloaded 2762799 ( 2a282f) bytes at a0080000 from TFTP server.<br />

Found ELF signature<br />

Copying image from a0080000 to a2d5d7cc for relocation<br />

MON><br />

Nach der Eingabe von Befehlen kann es zu folgender, unbegründeten<br />

Fehlermeldung: Unknown command! kommen, welche durch mehrmalige<br />

Korrektur des Befehles oder längere Pausen zwischen den Eingaben ausgelöst<br />

wird. Der Befehl muss dann neu eingegeben werden. Das Herunterladen und<br />

Speichern der Dateien benötigt Zeit, wobei der sich bewegende Slash anzeigt,<br />

dass der Prozessor aktiv ist. Da das CPU- <strong>Board</strong> aus <strong>dem</strong> Flashspeicher bootet,<br />

muss das Kernelimage blockweise <strong>mit</strong> <strong>dem</strong> Kommando:<br />

fc 80080000 b1800000 290000<br />

vom EPROM des Main <strong>Board</strong>s in den Flashspeicher des CPU- <strong>Board</strong>s kopiert<br />

werden.<br />

Der Befehl fc besitzt den Aufbau:<br />

fc [Quelladresse] [Speicheradresse] [Speichergröße].<br />

- 23 -


Das nachstehende Kommando speichert die Informationen für das Verzeichnis-<br />

system.<br />

bb - cramfs_lcd<br />

War dieser Vorgang erfolgreich, werden folgende Zeilen in der Minicomkonsole<br />

angezeigt.<br />

Booting...: Using BOOTP.<br />

Ethernet address 00:00:04:FF:FF:FF<br />

IP address 192.168.1.2 = C0A80102<br />

Booting TFTP server from 192.168.1.1 = C0A80101<br />

kernel file : cramfs_lcd ...<br />

Downloaded 7434240 ( 717000) bytes at a0080000 from TFTP server.<br />

MON><br />

Anschließend wird diese Datei <strong>mit</strong> <strong>dem</strong> Befehl:<br />

fc 80080000 b1000000 717000<br />

in den Flash gespeichert. Der zweite Schritt besteht darin die internen Komman-<br />

dozeilen des Boot Loaders einzurichten. Das erste Kommando bewirkt, dass das<br />

Kernelimage vom Flash in den Arbeitsspeicher (EPROM) geladen wird. Dazu<br />

dient folgender Befehl.<br />

set icmd1 mc b1800000 80080000 290000<br />

Das zweite Kommando startet das Booten des Kernelimages, hier wird der Befehl<br />

set icmd2 g 80080000<br />

verwendet. Als nächstes werden die Kernelparameter gesetzt. Dabei ist zu<br />

beachten, dass das nachstehende Kommando hintereinander in einer Zeile<br />

geschrieben wird.<br />

set cmdl root=/dev/mtdblock init=linuxrc<br />

ip=192.168.1.2:192.168.1.1::::: console=tty0<br />

Durch diesen Befehl wird das Verzeichnis /dev/mtdblock bestimmt, aus <strong>dem</strong> der<br />

Mikrocontroller booten soll. Das Verzeichnis befindet sich auf <strong>dem</strong> Mainboard,<br />

so<strong>mit</strong> ist ein Booten ohne Hostrechner möglich. Die erste IP- Adresse ist die des<br />

Starter Kits und die andere die des Hostrechners. Um alle Einstellungen verwen-<br />

den zu können, werden sie <strong>mit</strong> save gespeichert.<br />

Als nächstes müssen die internen Kommandos noch eingeschaltet werden.<br />

Hierfür ist der erste und der zweite Schieber des DIP- Schalters S21 auf ON zu<br />

stellen. Danach kann das <strong>Topas</strong> <strong>Board</strong> ausgeschaltet und neu gestartet werden.<br />

- 24 -


In der noch geöffneten Minicomkonsole erscheint nun folgender Text:<br />

Toshiba Bootloader for TX RISC Reference Kit Ver 1.04<br />

Copyright (c) 1999-2002 TOSHIBA Corporation<br />

<strong>Topas</strong> TX3912 Rev ( 1) CPU Clk 92Mhz, BUS Clk 92Mhz<br />

Slot [0] : MEM Base = 0x80040000, MEM Size = 0x00fc0000<br />

Slot [1] : MEM Base = 0x82000000, MEM Size = 0x01000000<br />

FlashROM [0] B1000000 - B17FFFFF<br />

FlashROM [1] B1800000 - B1FFFFFF<br />

Found ethernet le: Fujitsu MB86967 Ethernet Driver<br />

Executing init_command[1] : mc b1800000 80080000 290000<br />

Executing init_command[2] : g 80080000<br />

--- Jump ---<br />

Die zwei Zeilen Executing init_command zeigen die soeben gesetzten internen<br />

Kommandos. Eine Qt- Demonstrationsversion der Firma Trolltech wird automa-<br />

tisch gestartet, in welcher Beispielprogramme aufgerufen werden können. Es<br />

empfiehlt sich hierbei eine Maus zu benutzen. Diese Demonstrationsversion kann<br />

nicht beendet werden, aber es ist möglich in eine andere Konsole <strong>mit</strong> der Tasten-<br />

kombination Strg, Alt und F2 umzuschalten. In dieser können nun Programme<br />

geladen, gespeichert oder ausgeführt werden.<br />

- 25 -


5.2.2 Installation als Entwicklungseinheit<br />

Um <strong>dem</strong> Starter Kit das Verwalten eines Dateisystem zu ermöglichen, muss das<br />

System installiert werden. Bevor aber die Installation beginnen kann, muss eine<br />

Verknüpfung, ein so genannter symbolischer Link, <strong>mit</strong> <strong>dem</strong> Namen /mnt/cdrom<br />

erstellt werden. In <strong>dem</strong> Quelltext wird angenommen, dass die CD sich im Pfad<br />

/mnt/cdrom befindet, da SuSE aber alle Laufwerke im Verzeichnis /media einbin-<br />

det findet das Installationsprogramm die zu installierenden Daten nicht. Zur<br />

Erstellung eines symbolischen Links kann der Midnight Commander verwendet<br />

werden. Dieser wird in einer Rootkonsole gestartet und dann muss in das<br />

Verzeichnis /mnt <strong>mit</strong> <strong>dem</strong> Befehl cd /mnt gewechselt werden. Mit der<br />

Tastenkom-bination Strg-X und S oder <strong>mit</strong> einem Klick auf die Schaltfläche<br />

SymLink in <strong>dem</strong> Menü Datei kann das Fenster Symbolischer Link (Abb. 5.2.2-8)<br />

aufgerufen werden. Hier müssen die Namen des Links und des Verzeichnisses<br />

eingetragen werden. Zum Speichern Enter drücken. Der Midnight Commander<br />

kann nun <strong>mit</strong> F10 beendet werden.<br />

Abb. 5.2.2-8: Fenster Symbolischer Link<br />

Zum Installieren des Hard Hat Linux® 2.0 wird die bereits geöffnete Rootkonsole<br />

verwendet. Die Starter Kit CD muss eingebunden werden, dabei kann <strong>mit</strong> <strong>dem</strong><br />

Befehl:<br />

mount /mnt/cdrom<br />

kontrolliert werden, ob der Link funktioniert. Anschließend kann die Installation <strong>mit</strong><br />

<strong>dem</strong> Befehl:<br />

/mnt/cdrom/bin/hhl-host-install --install toshiba-topas<br />

gestartet werden. Es wird nun im Verzeichnis /opt ein neuer Ordner <strong>mit</strong> <strong>dem</strong><br />

Namen /hardhat installiert. Dieser beinhaltet die Verzeichnisstruktur für den Mikro-<br />

controller, welche sich im Pfad /opt/hardhat/devkit/mips/fp_le/target befindet.<br />

- 26 -


Da das Starter Kit selbstständig die Verzeichnisstruktur aus <strong>dem</strong> Verzeichnis<br />

/tftpbot/192.168.1.2 verwalten möchte, muss dieses <strong>mit</strong> <strong>dem</strong> Kommando:<br />

mkdir /tftpboot/192.168.1.2<br />

angelegt werden. Die IP- Adresse ist von den lokalen Einstellungen abhängig. Als<br />

nächstes müssen die Verzeichnisse im oben genannte Ordner in das neu erstel-<br />

lte Verzeichnis kopiert werden, dazu kann der Midnight Commander benutzt<br />

werden.<br />

Jetzt muss <strong>dem</strong> Starter Kit <strong>mit</strong>geteilt werden, dass es auf <strong>dem</strong> Verzeichnis<br />

/tftpboot/192.168.1.2 zugreifen kann. Hierzu müssen die Schieber des DIP-<br />

Schalters auf Off gestellt werden. Die Minicomkonsole wird geöffnet und das<br />

Starter Kit eingeschaltet. Das folgende Kommando wird eingegeben.<br />

set cmdl root=nfs rw console=tty0<br />

Es teilt <strong>dem</strong> Kernel <strong>mit</strong>, dass er die Verzeichnisstruktur über den NFS- Server<br />

laden soll. Diese Einstellung wird <strong>mit</strong> save gespeichert. Bevor das <strong>Topas</strong> <strong>Board</strong><br />

gestartet wird, müssen die Schieber 1 und 2 des DIP- Schalters wieder auf die<br />

Stellung On gesetzt werden. Die Freigabe des Zugriffs auf das Verzeichnis<br />

/tftpboot schließt auch den Ordner /192.168.1.2 ein. Das Starter Kit lädt beim<br />

booten die Verzeichnisstrukturen aus <strong>dem</strong> Ordner /tftpboot/192.168.1.2, jetzt kann<br />

es <strong>mit</strong> den Dateien auf den Hostrechner arbeiten.<br />

5.3 Booten des Starter Kits<br />

Ist das Starter Kit so programmiert, dass es über den NFS- Server auf das<br />

Verzeichnis /tftpboot/192.168.1.2 zugreifen möchte, kann <strong>mit</strong> Hilfe des Ethereal<br />

die Kommunikation von beiden Rechnern angezeigt werden (siehe hierzu Absatz<br />

3.1.4). In <strong>dem</strong> Ausschnitt des Etherealfensters (Abb. 5.3-9) sind die ersten Proto-<br />

kolle nach <strong>dem</strong> Einschalten aufgelistet. Als erstes meldet sich das Starter Kit <strong>mit</strong><br />

seiner MAC- Adresse 00:00:04:ff:ff:ff und fordert eine IP- Adresse. Der Host <strong>mit</strong><br />

der IP- Adresse 192.168.1.1 teilt <strong>dem</strong> Target die IP- Adresse 192.168.1.2 zu. Im<br />

dritten Protokoll möchte der Target wissen, welche MAC- Adresse sich hinter der<br />

IP- Adresse 192.168.1.1 verbirgt, diese wird ihm sogleich <strong>mit</strong>geteilt. Jetzt beginnt<br />

das Starter Kit die erforderlichen Daten, in Form von Datenblöcken, abzufragen.<br />

Nach <strong>dem</strong> Bootvorgang kann sich der Benutzer root ohne Passwortabfrage<br />

anmelden. Root kann dann ganz normal arbeiten, zum Beispiel kann er weitere<br />

Benutzer anlegen oder C- Programme starten.<br />

- 27 -


Abb. 5.3-9: Auszug der Protokollansicht des Ethereal<br />

5.4 Erstellen und Kompilieren von C- Programmen<br />

Als Entwicklungsumgebung dient KDevelop. Es ist für viele Hochsprachen<br />

ausgelegt, zum Beispiel für C und C ++ , Java, Pascal, Perl und Phython, des<br />

weiteren können Qt- Programme geschrieben werden. KDevelop bietet eine<br />

Fehlererkennung, einen Hilfedienst und fertigt selbständig für jedes Projekt ein<br />

Handbuch und die auszuführende Datei an. Im Rahmen dieser Arbeit wurden<br />

Programme in C und C ++ <strong>mit</strong> KDevelop erstellt, diese sind dann <strong>mit</strong> einem<br />

speziel-len Kompilier in die für den Toshiba Mikroprozessor verständliche<br />

Sprache über-setzt worden. Das Erstellen und das Kompilieren von einem<br />

einfachen Beispiel-programm soll als nächstes dargestellt werden.<br />

5.4.1 Erstellen von C- Programmen <strong>mit</strong> KDevelop<br />

Als erstes wird KDevelop unter Programm starten im Menü Entwicklung<br />

gestartet, danach kann in der Menüleiste Project <strong>mit</strong> New der KDevelop<br />

Application Wizard geöffnet werden. Im Verzeichnisbaum unter Terminal wird<br />

ein C- Projekt ausgewählt. Mit Next wird ein zweites Fenster geöffnet, in <strong>dem</strong> der<br />

Name, zum Beispiel ' Helloworld ', und der Verzeichnispfad des Programms sowie<br />

Angaben zum Autor verlangt werden. Mit Create und anschließend Exit wird das<br />

Projekt erstellt. Es wird automatisch ein „Hello world!“- Programm geschrieben,<br />

welches ohne Weiteres geändert oder gelöscht werden kann. Hier wird es aber<br />

zur Demonstration benutzt und deshalb nicht gelöscht.<br />

Der C- Kode des „Hello world!“- Programms besteht aus folgenden Zeilen.<br />

- 28 -


#include <br />

#include <br />

int main(int argc, char *argv[ ])<br />

{<br />

printf("Hello, world!\n");<br />

return EXIT_SUCCESS;<br />

}<br />

Um das Programm zu starten, gibt es mehrere Möglichkeiten, die Taste F9 in der<br />

Werkzeugleiste, die Schaltfläche Run (Zahnrad) oder im Menü Build der Befehl<br />

Execute. Nach <strong>dem</strong> Starten wird das Programm geschrieben und ausgeführt. Es<br />

öffnet sich folgende Konsole (Abb. 5.4.1-10).<br />

Abb. 5.4.1-10: Ausgeführtes „Hello world!“- Programm<br />

5.4.2 Kompilieren von C- und C ++ - Programmen<br />

Das „Hello world!“- Programm wurde für einen Computer <strong>mit</strong> einer i386- Architek-<br />

tur geschrieben. Der Mikroprozessor von Toshiba kann den Quellkode nicht<br />

lesen. Um das C- Programm auf <strong>dem</strong> Mikroprozessor ausführen zu können, muss<br />

es <strong>mit</strong> <strong>dem</strong> richtigen Kompilier übersetzt werden. Hierzu wird der eigentliche C-<br />

Kode benötigt, welcher sich in der Datei main.cpp des Ordners<br />

~/helloworld/helloworld befindet. Die Datei wird in einem Ordner des Starter Kits<br />

kopiert, zum Beispiel in<br />

/tftpboot/192.168.1.2/home/. Nun kann vom Starter Kit aus in das Verzeichnis<br />

gewechselt und die Datei <strong>mit</strong> <strong>dem</strong> folgenden Befehl kompiliert werden.<br />

gcc main.cpp -o hello<br />

- 29 -


Der Kompilier gcc wird für C- Programme und g++ für C ++ - oder C- Progamme<br />

verwendet. Die Option -o bewirkt, dass die Datei in <strong>dem</strong> nachstehenden<br />

Verzeichnis erstellt wird. Hier wird die Datei „hello“ in des gerade geöffnete<br />

Verzeichnis /tftpboot/192.168.1.2/home gespeichert. Mit <strong>dem</strong> Befehl:<br />

./hello<br />

wird das Programm ausgeführt. Der Programmkode kann auch in einem Text-<br />

editor geschrieben und dann kompiliert werden. Nachteil hierbei, das Programm<br />

kann nicht getestet werden und Schreibfehler werden nicht automatisch erkannt.<br />

Wird der Editor Kwrite verwendet, können die Befehle <strong>mit</strong> einem Hervorhebungs-<br />

modus farbig gekennzeichnet werden. Im Menü Extra, unter<br />

Hervorhebungsmodus und Quellen, kann die Programmiersprache aktiviert<br />

werden. Die Datei ist <strong>mit</strong> der Endungen .c für ein C- Kode und .cpp für Ein C ++<br />

-Kode zu speichern.<br />

- 30 -


6 Programmieren <strong>mit</strong> <strong>dem</strong> Qt Designer<br />

Der Qt Designer ist eine grafische Programmieroberfläche der Firma Trolltech. Mit<br />

<strong>dem</strong> Qt Designer werden Dialogfenster erstellt und in diesen werden Schalt- und<br />

Anzeigeflächen, so genannte Widgets, positioniert und <strong>mit</strong>einander verknüpft.<br />

Das Wort Widget setzt sich aus Windows (engl. Fenster) und Gadget (engl.<br />

Apparat) zusammen. Widgets sind zum Beispiel Buttons, Texteingabefelder,<br />

Laufbalken und Dialogboxen, diese können wiederum Subwidgets enthalten.<br />

Die Handhabung und Gestaltung wird an <strong>dem</strong> Quick Start Beispiel von der Qt-<br />

Online- Dokumentation gezeigt. Das hier erläuterte Beispielprogramm soll einen<br />

kleinen Einblick in die Programmierung solcher Widgets geben. Das Beispiel-<br />

programm rechnet Längeneinheiten um, wie zum Beispiel Kilometer in Zoll.<br />

6.1 Ansicht des Qt Designers<br />

In Abbildung 6.1-11 sieht man die Arbeitsoberfläche des Qt Designers, die<br />

einzelnen Fenster sind kurz erläutert.<br />

Menüleiste: zeigt alle Hauptmenüs an<br />

Werkzeugleiste: zeigt eine Auswahl an Werkzeugen (Tools), es können<br />

beliebig viele Tools hinzugefügt oder entfernt werden<br />

Toolbox: beinhaltet alle Widgets, sie sind in Menüs eingeteilt<br />

Project Overview: zeigt Dateien des Projektes an<br />

Objekt Explorer: zeigt alle im Dialogfenster verwendeten Widgets an<br />

Property Editor: Einstellungen und Eigenschaften des Widget<br />

Dialogfenster: programmierbare grafische Oberfläche<br />

- 31 -


➂<br />

Abb. 6.1-11. Ansicht der Programmieroberfläche des Qt Designers<br />

6.2 Starten des Qt Designers<br />

➀ ➁<br />

Als erstes muss der Qt Designer im Untermenü grafische Oberflächen des<br />

Menüs Entwicklung im SuSE Hauptmenü gestartet werden. Beim Starten des Qt<br />

Designers öffnet das Fenster New File, hier kann die Art des Projekts bestimmt<br />

werden. Das Beispielprogramm „metric“ ist eine C ++ - Anwendung, deshalb muss<br />

ein C ++ - Projekt angelegt werden. Nach <strong>dem</strong> Bestätigen <strong>mit</strong> OK wird im Fenster<br />

Project Settings der Name und das Verzeichnis eingetragen. Ist kein Verzeich-<br />

nis angegeben, wird das Projekt automatisch in das Homeverzeichnis des<br />

jeweiligen Benutzers gespeichert. Um einen neuen Ordner anlegen zu können,<br />

wird <strong>mit</strong> <strong>dem</strong> Button (...), rechts neben <strong>dem</strong> Eingabefeld in das Fenster save as<br />

gewechselt. In der Werkzeugleiste befindet sich der Button create new folder,<br />

wo<strong>mit</strong> ein neuer Ordner angelegt werden kann, dabei empfiehlt es sich den<br />

gleichen Namen des Projektes zu verwenden. Ist das Verzeichnis /metric<br />

eingerichtet und der Name /metric.pro für das Projekts eingetragen, wird <strong>mit</strong><br />

einem Klick auf save und anschließend auf OK das Projekt gespeichert.<br />

- 32 -<br />

➆<br />

➃<br />

➄<br />


6.3 Anlegen eines Dialogfensters<br />

Ein Dialogfenster wird angelegt, in <strong>dem</strong> alle Schaltflächen, wie Buttons und Drop-<br />

downmenüs oder Eingabefelder, eingefügt werden. In der Menüleiste unter File<br />

und new öffnet sich das Fenster New File, in welchem Dialog markiert und <strong>mit</strong><br />

OK bestätigt wird. Ein neues Fenster <strong>mit</strong> <strong>dem</strong> Namen „Form1“ öffnet sich. Der<br />

Name wird in <strong>dem</strong> Property Editor im Feld name in „UmrechnerForm“ und die<br />

Überschrift des Fensters wird in caption in ' Längenumrechner ' geändert. Das<br />

Fenster Längenumrechner muss unter File <strong>mit</strong> save gespeichert werden, der<br />

vorgeschlagene Name wird übernommen.<br />

6.4 Hinzufügen von Widgets<br />

Die programmierbaren Schaltflächen befinden sich in der Toolbox an der linken<br />

Seite des Qt Designer. Es werden durch Klicken auf den Button Common<br />

Widgets eine Liste der gebräuchlichsten Schaltflächen geöffnet, diese können<br />

durch Anklicken ausgewählt und <strong>mit</strong> einem nochmaligen Klick auf das<br />

Formfenster eingefügt werden. Mit einem Doppelklick auf die gewünschte<br />

Schaltfläche, kann diese mehrfach in das Fenster eingefügt werden. Diese<br />

Funktion wird <strong>mit</strong> einem Klick auf den Button Pointer (Pfeil) in der Toolleiste oder<br />

<strong>mit</strong> der Taste F2 abgeschaltet. Es werden zur Beschriftung von Eingabefeldern<br />

fünf TextLabels, wie in Abbildung 6.4-12, auf die linke Seite des Dialogfensters<br />

UmrechnerForm eingefügt. Die Schaltflächen müssen nicht genau platziert<br />

werden, dies geschieht am Ende automatisch.<br />

Abb. 6.4-12: Anordnung der Textlabel im Dialogfenster Längenumrechner<br />

- 33 -


Für eine Änderung der Einstellung im Property Editor, muss zuvor das jeweilige<br />

Widget angeklickt werden. Der anzuzeigende Text wird im Property Editor, im<br />

Feld text oder durch Doppelklicken auf das Textlabel, geändert. Wird ein & vor<br />

einem Buchstaben oder Zeichen geschrieben, so kann es später <strong>mit</strong> der<br />

Tastenkombination Alt und <strong>dem</strong> jeweiligen Zeichen aktiviert werden. Die<br />

Textlabels werden nach folgenden Schema umbenannt:<br />

– textLabel1: ' &Zahl Eingeben ',<br />

– textLabel2: ' Umrechnen &von ',<br />

– textLabel3: ' Umrechnen &in '<br />

– textLabel4: ' Ergebnis 'und<br />

– textLabel5: ' &Dezimalstellen '.<br />

Wenn der Text nicht vollständig zu sehen ist, kann die Größe des Textlabels<br />

durch „Anfassen“ der blauen Randmarke <strong>mit</strong> der Maus verändert werden. Nun<br />

werden verschiedene Eingabefelder eingefügt. Für die Eingabe der zu berech-<br />

nenden Zahl wird das Widget LineEdit aus der Toolbox verwendet. Es wird<br />

rechts neben <strong>dem</strong> textLabel1 positioniert und der Name wird in ' ZahlLineEdit '<br />

geändert. Der Eingabetext soll rechtsbündig und im oberen Teil des Feldes<br />

angezeigt werden. Hierfür wird im Property Editor unter hAlign die horizontale<br />

Ausrichtung auf AlignRight und die vertikale Ausrichtung auf AlignTop gesetzt.<br />

Zur Auswahl der Einheiten wird das Dropdownmenü ComboBox jeweils rechts<br />

neben <strong>dem</strong> textLabel2 und <strong>dem</strong> textLabel3 platziert. Zunächst wird das Widget<br />

neben <strong>dem</strong> textLabel2 in ' vonComboBox ' und das andere in ' inComboBox '<br />

umgenannt. Neben <strong>dem</strong> 4. Textlabel soll das Ergebnis angezeigt werden,<br />

deshalb wird ein LineEdit <strong>mit</strong> <strong>dem</strong> Namen ' ErgebnisLineEdit ' eingefügt. Der<br />

Hintergrund des Textfensters wird im Property Editor unter paletteBackground<br />

<strong>mit</strong> gelb farbig hinterlegt. Der Text soll wieder rechtsbündig und an der oberen<br />

Kante angeordnet sein, die Ausrichtung kann wie oben vorgenommen werden. Da<br />

hier nur eine Ausgabe stattfindet soll, wird die Option readOnly auf False gesetzt.<br />

Für die Einstellung der Dezimalstellen wird eine SpinBox aus der ToolBox<br />

verwendet, welche neben <strong>dem</strong> Textlabel Dezimalstellen und unter der rechten<br />

Seite des ErgebnisLineEdit- Widget eingefügt wird. Der Name der SpinBox soll '<br />

DezimalstellenSpinBox ' lauten. Die Anzahl der Dezimalstellen soll von 3 bis 6<br />

Stellen einstellbar sein, dazu wird im Property Editor der max value auf ' 6 ' und<br />

der min value auf ' 3 ' gesetzt. Die Einstellungen können nun <strong>mit</strong> save in der<br />

Toolleiste oder im Menü File gespeichert werden.<br />

- 34 -


Da<strong>mit</strong> die Tastenbefehle nicht das Textlabel sondern das Eingabefeld anspre-<br />

chen, müssen die zusammengehörenden Widgets <strong>mit</strong>einander verbunden<br />

werden. Das Werkzeug Set Buddy aus der Toolleiste wird zum Verbinden<br />

zweier Widgets verwendet. Das Label Zahl Eingeben wird angeklickt und <strong>mit</strong><br />

<strong>dem</strong> ZahlLineEdit über das entstehende Gummiband verbunden. Dies wird <strong>mit</strong><br />

den Widgets:<br />

– Umrechnen von und vonComboBox,<br />

– Umrechnen in und inComboBox sowie<br />

– Dezimalstellen und DezimalstellenSpinBox wiederholt.<br />

Bei diesem Vorgang verschwindet das & im Text der Textlabels und der<br />

nachstehende Buchstabe wird unterstrichen.<br />

Abb. 6.4-13: Dialogfenster Längenumrechner <strong>mit</strong> Pushbuttons<br />

Es werden nun, wie die Abbildung 6.4-13 zeigt, drei Pushbuttons zum Berechnen<br />

und Löschen der Eingabe und zum Quittieren des Dialogfensters eingefügt. Im<br />

Property Editor des Buttons Löschen wird im Feld name:<br />

' LoeschenPushButton ' und in Text: ' &Löschen ' eingetragen. Die Einträge für<br />

den Button Umrechnen entsprechen für name: ' UmrechnenPushButton ' und für<br />

text: ' &Umrechnen ' . Um den Pushbutton Umrechnen auch <strong>mit</strong> der Eingabe-<br />

taste aktivieren zu können, wird die Einstellung bei default in True geändert. Im<br />

Eigenschaftsfeld für den Quit Button sind in name: ' QuitPushButton ' und in text:<br />

' &Quit ' einzutragen. Für ein besseres und übersichtlicheres Aussehen des<br />

Dialogfensters werden Abstandhalter, so genannte Spacer, wie in Abbildung<br />

6.4-14 dargestellt, zwischen den Widgets eingefügt. Der Spacer befindet sich in<br />

der Werkzeugleiste und in der Toolbox, wo er zwischen den Feldern aufge-<br />

spannt wird.<br />

- 35 -


Abb. 6.4-14: Anordnung der Spacers im Dialogfenster Längenumrechner<br />

Es werden die Auswahlmöglichkeiten der Dropdowmenüs vonComboBox und<br />

inComboBox geschrieben. Dazu wird <strong>mit</strong> der rechten Maustaste auf <strong>dem</strong><br />

jeweiligen Widget geklickt, dann öffnet sich ein Menü, in<strong>dem</strong> <strong>mit</strong> Edit das Fenster<br />

Edit Listbox geöffnet wird (Abb.6.4-15). Mit <strong>dem</strong> Button New Item wird ein<br />

Eintrag hinzugefügt. Für die vonComboBox sind es folgende Einträge:<br />

– ' Kilometer ',<br />

– ' Meter ',<br />

– ' Zentimeter ' und<br />

– ' Millimeter ' ,<br />

für die inComboBox werden die nachstehen Einträge geschrieben:<br />

– ' Meilen ',<br />

– ' Yards ',<br />

– ' Fuss ' und<br />

– ' Zoll '.<br />

Abb. 6.4-15: Fenster Edit Listbox der vonComboBox<br />

- 36 -


6.5 Ausrichten der Widgets<br />

Für ein ordentliches und einheitliches Aussehen werden nun alle Widgets<br />

ausgerichtet und angepasst. Als erstes werden die DezimalSpinbox und der<br />

Spacer neben <strong>dem</strong> Textlabel Dezimalstelle horizontal ausgerichtet, dies erfolgt<br />

durch Markieren der beiden Widgets und <strong>mit</strong> einem Klick auf das Tool Lay Out<br />

Horizontally aus der Werkzeugleiste oder <strong>mit</strong> <strong>dem</strong> Tastenbefehle Strg+H.<br />

Das Markieren kann <strong>mit</strong> Halten der Shift- Taste und <strong>mit</strong> einem Klick auf das<br />

gewünschte Feld erfolgen oder sie werden <strong>mit</strong> der Maus <strong>mit</strong> einem Gummiband<br />

eingerahmt. Nun können alle Textlabels und die Widgets, wie in Abbildung 6.5-16<br />

dargestellt, markiert und <strong>mit</strong> <strong>dem</strong> Werkzeug Lay Out in a Grid oder <strong>mit</strong> der<br />

Tastenkombination Strg+G an <strong>dem</strong> Raster angepasst werden.<br />

Abb. 6.5-16: Markierte Widgets im Dialogfenster Längenumrechner<br />

Als nächstes werden die Pushbuttons und der Spacer dazwischen horizontal<br />

ausgerichtet. Danach werden alle Widgets markiert und <strong>mit</strong> <strong>dem</strong> Tool Lay Out<br />

Verticaly oder <strong>mit</strong> den Tasten Strg+L vertikal ausgerichtet. Da<strong>mit</strong> auch alle<br />

Widgets im Dialogfenster zu sehen sind, wird die Größe des Fensters <strong>mit</strong> Adjust<br />

Size oder Strg+J angepasst, zuvor muss das Fenster angeklickt werden. Die<br />

Änderungen sind in Abbildung 6.5-17 dargestellt und können nun<br />

zwischengespeichert werden.<br />

- 37 -


Abb. 6.5-17: Fertig ausgerichtetes und angepasstes Dialogfenster<br />

Die einzelnen Felder im Dialogfenster können später auch <strong>mit</strong> der Tabulatortaste<br />

angesprochen werden. In welcher Reihenfolge das erfolgt, kann festgelegt<br />

werden. Hierfür wird das Tool Tab Order in der Toolleiste aktiviert und es<br />

erscheint an je<strong>dem</strong> aktiven Feld eine Zahl (Abb.6.5-18). Durch die Reihenfolge in<br />

der die Widgets nun angeklickt werden, ordnen sich die Zahlen neu an. Zur<br />

Kontrolle kann <strong>mit</strong> Preview Form im Menü Preview oder <strong>mit</strong> <strong>dem</strong> Tastenbefehl<br />

Strg+T ein Testfenster aufgerufen werden. Hier lassen sich einige Funktionen der<br />

einzelnen Felder testen.<br />

Abb. 6.5-18: Widgets <strong>mit</strong> Tabulatornummern<br />

- 38 -


6.6 Verbinden der Widgets<br />

Die Verknüpfungen zwischen den Widgets werden im Fenster View and Edit<br />

Connections erstellt und es wird in der Werkzeugleiste <strong>mit</strong> Connect Signal/<br />

Slots oder <strong>mit</strong> der Taste F3 geöffnet. Das Dialogfenster ist in Abbildung 6.6-19<br />

dargestellt.<br />

Abb. 6.6-19: Dialogfenster zur Erstellung von Verknüpfungen<br />

Mit New wird eine Verbindung hinzugefügt und es lassen sich im jeweiligen<br />

Dropdownmenü des Senders (Sender), des Eingangssignals (Signal), des<br />

Empfängers (Receiver) und des Ausgangssignals (Slot), die vorgegebenen<br />

Einstellungen auswählen. In der Tabelle 6.6-2 sind alle benötigten Verknüpfungen<br />

aufgelistet.<br />

Sender Signal Receiver Slot<br />

' LoeschenPushbutton ' ' clicked() ' ' ZahlLineEdit ' ' clear() '<br />

' LoeschenPushbutton ' ' clicked() ' ' ErgebnisLineEdit ' ' clear() '<br />

' LoeschenPushbutton ' ' clicked() ' ' ZahlLineEdit ' ' setFocus() '<br />

' QuitPushButton ' ' clicked() ' ' UmrechnerForm ' ' close() '<br />

' UmrechnerPushButton ' ' clicked() ' ' UmrechnerForm ' ' rechnen( '<br />

' DezimalSpinBox ' ' valueChanged(int) ' ' UmrechnerForm ' ' rechnen() '<br />

' vonComboBox ' ' activated(int) ' ' UmrechnerForm ' ' rechnen() '<br />

' inComboBox ' ' activated(int) ' ' UmrechnerForm ' ' rechnen() '<br />

Tabelle 6.6-2: Einstellungen zum Verknüpfen der Widgets<br />

- 39 -


Die Auswahlmöglichkeiten der Eingangs- und Ausgangssignale passen sich <strong>dem</strong><br />

Sender an. Ein Klick auf den Button Edit Slots ermöglicht es eigene Slots, wie<br />

rechnen() zu erstellen. In Function wird der Name ' rechnen() ' eingegeben, wie<br />

Abbildung 6.6-20 zeigt, und <strong>mit</strong> OK wird der Slot hinzugefügt.<br />

Abb. 6.6-20: Hinzufügen des Slots rechnen() im Fenster Edit Function<br />

6.7 Quellkode der Funktionsdefinition<br />

Für die Umrechnung der eingegebenen Zahl wird der Programmtext von Abschnitt<br />

6.8 in die Datei ' umrechnerform.ui.h ' geschrieben, dazu wird diese im Fenster<br />

Project Overview geöffnet.<br />

In der ersten Funktionsdefinition rechnen() werden die Einheiten der Eingabe und<br />

Ausgabe definiert, dann wird die Eingabe vom Widget ZahlLineEdit abgefragt.<br />

Diese wird in Millimeter umgerechnet, da dies die meist verwendete Längen-<br />

einheit ist und diese Millimeter werden dann in Zoll und anschließend in die<br />

ausgewählte Einheit umgerechnet. Am Ende wird das Ergebnis in <strong>dem</strong> Widget<br />

ErgebnisLineEdit ausgegeben. Die zweite Funktionsdefinition wird immer auf-<br />

gerufen, wenn das Programm metric gestartet wird. Hier wird ein Validator zur<br />

Kontrolle der Eingabe eingesetzt, dieser lässt nur eine numerische Eingabe zu.<br />

Der zweite Teil dieser Funktionsdefinition legt die Schriftgröße fest und ruft<br />

rechnen() auf. Der Programmtext enthält <strong>mit</strong> // gekennzeichnete Notizen, welche<br />

zum besseren Verständnis beitragen.<br />

- 40 -


6.8 Programmtext<br />

// Funktionsdefinition rechnen()<br />

void UmrechnerForm::rechnen()<br />

{<br />

// Definieren der Einheiten als Mengen<br />

enum MetrischeEinheiten { Kilometer, Meter, Zentimeter, Millimeter};<br />

enum EnglischeEinheiten { Meilen, Yards, Fuss, Zoll};<br />

// Abfrage der Eingabe<br />

double Eingabe = ZahlLineEdit->text().toDouble();<br />

double gewandelteEingabe = Eingabe;<br />

// gewandelteEingabe wird in Millimeter umgerechnet<br />

}<br />

switch ( vonComboBox->currentItem() )<br />

{<br />

case Kilometer:<br />

gewandelteEingabe *= 1000000;<br />

break;<br />

case Meter:<br />

gewandelteEingabe *= 1000;<br />

break;<br />

case Zentimeter:<br />

gewandelteEingabe *= 10;<br />

break;<br />

// gewandelteEingabe wird in Zoll umgerechnet<br />

double Ergebnis = gewandelteEingabe * 0.0393701;<br />

switch ( inComboBox->currentItem() )<br />

{<br />

case Meilen:<br />

Ergebnis /= 63360;<br />

break;<br />

case Yards:<br />

Ergebnis /= 36;<br />

break;<br />

case Fuss:<br />

Ergebnis /= 12;<br />

- 41 -


}<br />

break;<br />

// Dezimalstelle festlegen<br />

Dezimalstelle = DezimalstellenSpinBox->value();<br />

ErgebnisLineEdit->setText( QString::number( Ergebnis, 'f', Dezimalstelle ) );<br />

ZahlLineEdit->setText( QString::number( Eingabe, 'f', Dezimalstelle ) );<br />

}<br />

// Funktionsdefinition init() lässt nur Eingabe von Zahlen zu<br />

#include <br />

void UmrechnerForm::init()<br />

{<br />

ZahlLineEdit->setValidator( new QDoubleValidator( ZahlLineEdit ) );<br />

ZahlLineEdit->setText( "10" );<br />

rechnen();<br />

ZahlLineEdit->selectAll();<br />

}<br />

6.9 Kompilieren der Anwendungsprogramme<br />

Zum Kompilieren wird die Datei main.cpp benötigt und zum Erstellen wird im<br />

Menü File <strong>mit</strong> New das Dialogfenster New Item geöffnet. In diesem wird die C ++ -<br />

Main-File (main.cpp) markiert und <strong>mit</strong> OK erstellt. Das Fenster Configure Main-<br />

File öffnet sich und der vorgeschlagene Filename sowie die Mainform kann <strong>mit</strong><br />

OK übernommen werden. Der Programmtext erscheint automatisch (Abb.6.9-21).<br />

Das Projekt wird <strong>mit</strong> save gespeichert.<br />

Abb. 6.9-21: Programmtext der main.cpp<br />

- 42 -


Zum Kompilieren wird eine Konsole gestartet und in das Verzeichnis gewechselt<br />

in <strong>dem</strong> sich die Projektdateien befinden. Anschließend werden die Befehle:<br />

qmake -o makefile metric.pro und<br />

make<br />

ausgeführt. Es wird eine ausführbare Datei <strong>mit</strong> <strong>dem</strong> Namen „metric“ erstellt, wenn<br />

sich keine Fehler im Programm eingeschlichen haben. Die Fehler werden <strong>mit</strong><br />

Zeilennummern angegeben, so dass eine schnelle Korrektur möglich ist.<br />

Das Programm wird <strong>mit</strong> folgen<strong>dem</strong> Befehl gestartet.<br />

./metric<br />

Es öffnet sich das Fenster wie in Abbildung 6.9-22 und das Programm kann<br />

benutzt werden.<br />

Abb.6.9-22: Fenster des ausgeführten Programms metric<br />

- 43 -


7 Zusammenfassung<br />

Die <strong>Studienarbeit</strong> dient als Leitfaden für spätere Anwendungen <strong>mit</strong> <strong>dem</strong> <strong>Topas</strong> <strong>LX</strong><br />

Starter Kit und dokumentiert:<br />

– das Einrichten des Ethernetzwerkes sowie das Installieren und<br />

Konfigurieren der dafür benötigten Programme,<br />

– einige wichtige Arbeitsschritte für den Umgang <strong>mit</strong> SuSE Linux,<br />

– den Aufbau des <strong>Topas</strong> <strong>LX</strong> Starter Kit,<br />

– die Installation des Betriebssystems auf <strong>dem</strong> Starter Kit,<br />

– das Kompilieren von C- und C ++ - Programmen für den Toshiba<br />

Mikroprozessor und<br />

– die Entwicklung eines Qt- Programms <strong>mit</strong> <strong>dem</strong> Qt Designer.<br />

Bei <strong>dem</strong> Einrichten des Netzwerkes und <strong>dem</strong> Installieren des Kernelimages<br />

tauchten unerwartete Probleme auf, unteranderem war die Netzwerkkarte im Bios<br />

nicht aktiviert und manche Angaben in der „Quick Start Manual“ /QuSt/ waren<br />

uneindeutig. Dadurch stand für die Installation von Qt-Embedded nicht genügend<br />

Zeit zur Verfügung. Um die anfängliche Aufgabenstellung vollständig auszu-<br />

führen, muss für das Parallelport ein Treiberprogramm sowie für die Ansteuerung<br />

des Adapters ein Qt-Programm geschrieben werden.<br />

Für Fragen zu den einzelnen Bauteilen des Starter Kits befinden sich die dazu<br />

gehörigen Datenblätter /DaBl/ auf der beiliegenden CD.<br />

Weiterhin beschäftigen sich folgende Institute <strong>mit</strong> <strong>dem</strong> <strong>Topas</strong> <strong>LX</strong> Starter Kit:<br />

– Universität Stockholm<br />

Ansprechpartner: Hans Ake Gustafsson,<br />

Hans-Ake.Gustafsson@iar.se<br />

– FH Westküste<br />

Ansprechpartner: Prof. Dr.-Ing. Detlef Jensen,<br />

jensen@fh-westkueste.de<br />

- 44 -


Literaturverzeichnis<br />

Zur Erstellung dieser Arbeit wurden die verschiedenen man-, info-, readme-, und<br />

HOWTO- Dokumente der jeweiligen Kommandos und Programme sowie das KDE<br />

Hilfezentrum 3.1 verwendet. Die Angaben zur Dokumentation und Bearbeitung für<br />

das <strong>Topas</strong> <strong>LX</strong> Starter Kit wurden aus der beiliegenden CD:<br />

TAK for <strong>Topas</strong> <strong>LX</strong> Starter Kit, IAR Systems,<br />

Toshiba Electronics Europe GmbH<br />

entnommen. Die Dokumente sind hier <strong>mit</strong> ihren Verzeichnispfaden aufgelistet.<br />

/DaBl/ Datenblätter der einzelnen Komponenten,<br />

~/TOSHIBA/hardware_documentation/datasheets<br />

/HHL/ Hard Hat Linux® 2.0 Journeyman Edition<br />

Installation and Reference Quide<br />

~/docs/HHL-JE-20.pdf<br />

/HwMa/ Hardware Manuel,<br />

~/TOSHIBA/hardware_documentation/<strong>Topas</strong><strong>LX</strong>_HwMan_100.pdf<br />

/QuSt/ Quickstart Anleitung,<br />

Bücher<br />

~/TOSHIBA/quickstart/<strong>Topas</strong>LxQuickStart.pdf<br />

/BH99/ Beierlein,T., Hagenbruch, O.: Taschenbuch Mikroprozessortechnik.<br />

München, Wien: Fachbuchverlag Leipzig im Carl Hanser Verlag 1999<br />

/CTL93/ Collin, S. M. H., Torkar, E., Livesey, R.: PONS Fachwörterbuch Daten-<br />

verarbeitung: Englisch-Deutsch, Deutsch-Englisch. 1. Aufl., Nachdruck,<br />

Stuttgart, Dresden: Klett Verlag für Wissen und Bildung 1993<br />

/Kof03/ Kofler, M.: Linux, Installation, Konfiguration, Anwendung. 6. vollst.<br />

überarb. und erw. Aufl., München: Addison Wesley 2003<br />

/Rad02/ Radde, K.-H. Routledge Langenscheidts Fachwörterbuch kompakt<br />

Informationstechnik. Englisch-Deutsch, Deutsch-Englisch, 1. Auflage,<br />

gekürzte Ausgabe des Routledge German Dictionary of Information<br />

Technology, München : Langenscheidt 2002<br />

- 45 -


Abbildungsverzeichnis<br />

Abb. 4-1: Mainboard <strong>mit</strong> CPU-<strong>Board</strong> (weiß eingerahmt) (Quelle:/HwMa, S. 5/) __12<br />

Abb. 4.1-2: Block Diagramm vom CPU-<strong>Board</strong> (Quelle:/HwMa, S. 6/) __________13<br />

Abb. 4.2-3: Blockdiagramm des Mainboards (Quelle:/HwMa, S. 7/) ___________15<br />

Abb. 4.3-4: Anschlussschema des Mainboards (Quelle:/HwMa, S. 11/) ________16<br />

Abb. 4.4-5: Schalteranordnung des Mainboards (Quelle:/HwMa, S. 5/) ________17<br />

Abb. 5.1.2-6: Konfigurationsmenü von Minicom __________________________19<br />

Abb. 5.1.2-7: Untermenü Mo<strong>dem</strong> and dialing ____________________________19<br />

Abb. 5.2.2-8: Fenster Symbolischer Link ________________________________26<br />

Abb. 5.3-9: Auszug der Protokollansicht des Ethereal ______________________28<br />

Abb. 5.4.1-10: Ausgeführtes „Hello world!“- Programm _____________________29<br />

Abb. 6.1-11. Ansicht der Programmieroberfläche des Qt Designers ___________32<br />

Abb. 6.4-12: Anordnung der Textlabel im Dialogfenster Längenumrechner _____33<br />

Abb. 6.4-13: Dialogfenster Längenumrechner <strong>mit</strong> Pushbuttons ______________35<br />

Abb. 6.4-14: Anordnung der Spacers im Dialogfenster Längenumrechner ______36<br />

Abb. 6.4-15: Fenster Edit Listbox der vonComboBox ______________________36<br />

Abb. 6.5-16: Markierte Widgets im Dialogfenster Längenumrechner __________37<br />

Abb. 6.5-17: Fertig ausgerichtetes und angepasstes Dialogfenster ___________38<br />

Abb. 6.5-18: Widgets <strong>mit</strong> Tabulatornummern ____________________________38<br />

Abb. 6.6-19: Dialogfenster zur Erstellung von Verknüpfungen _______________39<br />

Abb. 6.6-20: Hinzufügen des Slots rechnen() im Fenster Edit Function ________40<br />

Abb. 6.9-21: Programmtext der main.cpp _______________________________42<br />

Abb.6.9-22: Fenster des ausgeführten Programms metric __________________43<br />

Tabellenverzeichnis<br />

Tabelle 5.1.3.3-1: Host- Konfiguration des Starter Kits______________________21<br />

Tabelle 6.6-2: Einstellungen zum Verknüpfen der Widgets__________________39<br />

- 46 -

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!