25.12.2013 Aufrufe

Gecko3 - CCC Event Weblog

Gecko3 - CCC Event Weblog

Gecko3 - CCC Event Weblog

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.

7. Hostsoftware<br />

(www.trolltech.com), da dieses auf Windows, Linux und MacOS X verfügbar ist, sehr ausgereift<br />

ist und wir von der Erfahrung von Andreas Eicher, Assistent im Microlab, profitieren<br />

konnten. Qt ist ein Framework für C++, so stand auch die Programmiersprache fest. Java<br />

war keine Option, weil die USB Schnittstelle nicht unterstützt wird.<br />

Qt wird von Trolltech unter verschiedenen Lizenzen angeboten. Eine Variante ist die GNU<br />

Public License (GPL), die einen Entwickler dazu zwingt ein Projekt, das GPL Software benutzt,<br />

auch unter die GPL zu stellen und mit allen Sourcecodes zu veröffentlichen. Qt wird<br />

nur in der Version 4 und höher auch auf Windows unter der GPL angeboten. Die andere<br />

Variante ist eine kommerzielle Lizenz, die von Trolltech erworben werden kann. Damit muss<br />

der Sourcecode eines Projektes nicht veröffentlicht werden. Zur Zeit wird von uns Qt 4.1.2 in<br />

der GPL Version benutzt aber die Frage der Veröffentlichung unserer Software konnte noch<br />

nicht geklärt werden.<br />

Um zu verhindern, dass unter Linux ein eigenes Kernelmodul entwickelt werden muss,<br />

greiffen wir auf die libusb zurück (libusb.sourceforge.net, Version 0.1.12), ein Open-Source<br />

Projekt unter der LGPL. Die LGPL erlaubt eine uneingeschränkte Verwendung in eigenen<br />

Projekten aber Änderungen an der libusb müssen veröffentlicht werden. Mit der libusb kann<br />

direkt aus einem Anwenderprogramm auf USB Geräte zugegriffen werden. Folgende Plattformen<br />

werden unterstützt: Linux, *BSD und MacOS X<br />

Für Windows existiert ein anderes Projekt (libusb-win32.sourceforge.net), das die libusb<br />

portiert hat und die selbe API besitzt. So ist es theoretisch möglich, unsere Hostsoftware<br />

auf Windows, Linux und MacOS X einzusetzen. Die Software wurde unter Linux entwickelt<br />

und getestet. Leider reichte die Zeit nicht aus, die Portierbarkeit unserer Software und der<br />

libusb zu testen.<br />

Unter Windows steht als Option weiterhin die Entwicklung eines eigenen Treibers zur Verfügung,<br />

da von Cypress dazu Beispiele vorhanden sind. Dies erleichtert den Einstieg in die<br />

Treiberprogrammierung enorm.<br />

7.2. Realisierung<br />

Da keiner von uns Erfahrung in der C++ Programmierung hatte, mussten wir in kurzer Zeit<br />

einen Überblick bekommen. Dabei war uns Andreas Eicher und das Buch [Bre03] behilflich.<br />

Die Hostsoftware wurde in mehrere Klassen und mehrere Applikationen unterteilt. Das<br />

zentrale Element ist die QGecko Klasse. Sie ist von der Klasse QObject, der Grundklasse<br />

des Qt Frameworks, abgeleitet. Sie stellt alle Funktionen bereit, die zur Administration und<br />

Kommunikation mit dem Gecko Board benötigt werden. Die USB Zugriffe sind vollständig<br />

gekapselt.<br />

Aufbauend auf dieser Klasse wurden zwei Applikationen erstellt: Der Gecko Administrator<br />

und das Simplecom. Der Gecko Administrator stellt ein graphisches Interface für alle<br />

administrativen Aufgaben des Gecko Boards zur Verfügung. Das Simplecom diente uns zum<br />

testen der Kommunikation mit dem FPGA und zeigt, wie einfach eine Applikation mit dem<br />

FPGA Daten austauschen kann. Der Sourcecode vom Simplecom dient als Beispiel zur Verwendung<br />

der QGecko Klasse zur Kommunikation mit dem Gecko Board. Die Sourcecodes<br />

sind im Anhang E.3 zu finden.<br />

Die implementierten Funktionen der Hostsoftware wurden getestet und funktionierten.<br />

Ein kurzer Blindtest, von Personen die die Software noch nicht kannten, hat ergeben, dass<br />

sie keine Fehlfunktion auslösen konnten. Limitierend ist zur Zeit einzig, dass unter Linux<br />

38 Christoph Zimmermann

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!