close

Anmelden

Neues Passwort anfordern?

Anmeldung mit OpenID

20. - 22. MÄRZ - cs

EinbettenHerunterladen
Praktikum ASP – Blatt 1
1
L EHRSTUHL FÜR R ECHNERTECHNIK UND R ECHNERORGANISATION
Aspekte der systemnahen Programmierung
bei der Spieleentwicklung
13.10.2014 - 19.10.2014
Arbeitsblatt 1
T1 Setup und erste Schritte
Um Software für das BeagleBoard xM entwickeln zu können, ist es zunächst nötig, das
ARM DS-5 Framework einzurichten. Um den Code zu testen, muss außerdem eine
SSH-Verbindung1 zum Betriebssystem auf dem BeagleBoard xM hergestellt werden. Grafische Anwendungen benötigen außerdem eine aktive X11-Forwarding-Session2 , um
am Rechner angezeigt zu werden. Es folgt eine kurze Anleitung, die die Inbetriebnahme
so einfach wie möglich gestalten soll. Die Anleitung bezieht sich auf die Arbeit mit den
BeagleBoard xM’s in den Praktikumsräumen3 . Es stehen für die Nutzung von privaten
Rechnern zusätzlich 10 BeagleBoard xM’s mit Netzwerk Zugang zur Verfügung. Informationen zur Verwendung dieser BeagleBoard xM’s finden Sie über die im Praktikum-GitLab
bereitgestellten Materialien.
1. Zunächst muss das auf der microSD-Karte befindliche Linux auf dem BeagleBoard
xM gestartet werden. Dazu sind die folgenden Aktionen nötig:
a) Die microSD muss in den passenden Slot auf der Unterseite der Platine
gesteckt werden. Sie fungiert als beschreibbarer Datenträger und enthält auch
das Betriebssystem für das BeagleBoard xM .
1
SSH steht für Secureshell und bezeichnet ein Netzwerkprotokoll, welches unter Linux zum verschlüsselten Datenaustausch verwendet werden kann.
2
X11, X-Server, oder auch nur X, ist unter Linux dafür zuständig, grafische Bitmap-Dialoge anzuzeigen.
Durch X11-Forwarding wird es möglich, einzelne Fenster oder ganze Desktopsysteme auf entfernten
Rechnern anzuzeigen.
3
Praktikumsräume für den Studiengang Games Engineering, die mit BeagleBoard xM’s ausgestattet sind:
01.10.020 (Kein Praktikumsbetrieb, jederzeit nutzbar) und 01.05.012, 02.13.008 (Lehrveranstaltungen
haben Vorrang)
Praktikum ASP – Blatt 1
2
b) Das Netzteil einstecken und den Stromstecker in die Buchse am BeagleBoard
xM stecken. Das BeagleBoard xM fährt dann automatisch hoch.
c) Den microUSB-Stecker in den vorgesehenen Slot stecken.
d) Das BeagleBoard xM erscheint in der Netzwerkkonfiguration von Windows
in der Systemsteuerung als „Unbekanntes Netzwerk“ und erhält fortan die
statische IP-Adresse 192.168.0.1.
(Der Vollständigkeit halber: Der Windowsrechner kann vom BeagleBoard xM
aus unter der Adresse 192.168.0.2 angesprochen werden.)
2. Um den Datenaustausch zwischen dem Windowsrechner und dem Linux auf dem
BeagleBoard xM zu ermöglichen, muss eine SSH-Verbindung aufgebaut werden.
Unter Windows verwendet man dazu das Tool PuTTY.
a) Im Konfigurationsdialog von PuTTY müssen zunächst die folgenden Einstellungen gemacht werden:
• IP-Addresse: 192.168.0.1
• Zusätzlich links unter Connection → SSH → X11 einen Haken bei Enable
X11 forwarding setzen
• Optional: Die PuTTY-Session für den späteren Gebrauch speichern
b) Auf Open klicken und beim erscheinenden Fenster den Hostkey annehmen4 .
c) Es erscheint jetzt ein Fenster mit einer Passwortabfrage. Das Eingeben des
Benutzernamens debian zusammen mit dem Passwort temppwd ist der letzte
4
In sicherheitskritischen Anwendungen stellen diese sogenannten SSH-Fingerprinting-Keys die Authentizität des Verbindungspartners sicher. Ein eventueller Lauscher (Man in the Middle) wird dadurch
ausgebremst.
Praktikum ASP – Blatt 1
3
Schritt zur Herstellung der SSH-Kommunikation zwischen BeagleBoard xM
und dem Windows-PC. Das PuTTY -Fenster muss ab jetzt stets im Hintergrund geöffnet bleiben.
3. Um vom X11-Forwarding Gebrauch machen zu können, muss auf dem lokalen
Rechner ebenfalls eine Instanz des X-Server laufen. Wir verwenden hierfür das Programm Xming, welches über das Windows-Startmenü gestartet werden kann. (Eine
eventuelle Windows-Firewall-Warnung kann in unserem Setup getrost ignoriert
werden.) Damit sind alle nötigen Verbindungen hergestellt!
4. Jetzt muss die Entwicklungsumgebung konfiguriert werden. Verwendet wird das
ARM Development Studio 5, welches wir in Zukunft mit DS-5 abkürzen.
a) DS-5 setzt auf der von der Java-Programmierung bekannten Eclipse-IDE auf.
Auf dem Windowsrechner ist Eclipse for DS-5 bereits vorinstalliert. Dieses
Programm muss jetzt gestartet werden.
b) Beim ersten Start fragt DS-5 nach einem Workspace, man kann hier einen
beliebigen Ort auf dem eigenen Netzlaufwerk verwenden, wichtig ist hierbei
nur, dass das Laufwerk über den Laufwerksbuchstaben (H) angesprochen
wird. Wir gehen im Folgenden vom Ort H:\workspace aus.
Vorsicht: Das Netzlaufwerk gehört nur dem jeweils angemeldeten Benutzer, für Gemeinschaftsprojekte mit mehreren Benutzern muss der EclipseWorkspace von Hand auf andere Benutzerkonten kopiert werden, wenn jeder
Teilnehmer Zugriff auf das gleiche Projekt haben möchte!
Optional: Den soeben gewählten Workspace kann man als Standard verwenden. Ist der Haken gesetzt, fragt das Programm bei folgenden Starts nicht
mehr nach.
c) Um DS-5 verwenden zu können, wird eine gültige Lizenz benötigt. Die Gruppenlizenzierug funktioniert dabei über einen Lizenzserver. Sobald DS-5 nach
dem Nachweis einer zulässigen Lizenz fragt, muss man auf Open License
Manager → Add License → License Server klicken. Der Lizenzserver ist
unter folgender Adresse erreichbar:
• Hostname: gel.in.tum.de
• Port: 8224
Achtung: Der Lizenzserver ist nur innerhalb des LRZ-Netzes (und damit in
allen unseren Arbeitsräumen) erreichbar. Das bedeutet, dass man von allen
externen Arbeitsplätzen aus zunächst eine VPN-Verbindung mit dem LRZ
herstellen muss, um DS-5 verwenden zu können.
d) Nach der Aktivierung startet sich DS-5 neu und zeigt anschließend den
„Welcome Screen“ an.
e) Als Nächstes sollen die Beispielprojekte importiert werden. Um dies zu erreichen, klickt man auf Tutorial Videos, Cheat Sheets and Examples →
Cheat Sheets → Import Example Projects.
Praktikum ASP – Blatt 1
4
f) Im Fenster, das sich rechts öffnet, geht man auf Click to begin; danach
so oft auf Skip klicken, bis der Punkt Do you want to import the linux
example projects? erscheint. Anschließend auf Click to Perform, dann
werden die Beispielprojekte in den aktuellen Workspace importiert.
g) Sobald der Importvorgang erfolgreich abgeschlossen wurde, müsen jetzt noch
die Standard-Bibliotheken, welche es ermöglichen, Linux-Programme auf einem Windows-System zu entwickeln, importiert werden. Diese Bibliotheken
finden Sie im Verzeichnis \\software\dist. Importieren können Sie sie unter
dem Punkt der dem Import der Beispielprojekte folgt.
Praktikum ASP – Blatt 1
5
h) Sodann muss DS-5 für den Gebrauch mit dem BeagleBoard konfiguriert
werden. Dazu wechselt man in die Debugperspektive und legt im RemoteSystems-Tab des linken oberen Fensters eine neue Verbindung an. Im sich
öffnenden Dialog sind die folgenden Einstellungen zu tätigen:
• General → Linux, mit Next bestätigen
• Hostname: 192.168.0.1, abermals auf Next
• ssh.files auswählen und auf Finish klicken
i) Die letzte globale Einstellung, die in DS-5 gemacht werden muss, ist das Konfigurieren der Proxyserver-Einstellungen. Dieser wird systemweit benötigt,
um eine Verbindung mit dem Internet herzustellen. In unserem Fall, da das
BeagleBoard xM nur lokal verbunden ist, verhindert die Verwendung eines
Proxys allerdings, dass DS-5 mit der Software auf dem BeagleBoard xM kommunizieren kann. Den Proxyserver schaltet man ab, indem man unter Window
→ Preferences → General → Network-Connections den Wert Manual wählt.
5. Es folgen die Einstellungen für gnometris, das Beispielprojekt, welches wir exemplarisch auf dem BeagleBoard xM ausführen werden. Allgemein müssen diese
Einstellungen aber für jedes Projekt (Eigene wie Voreingestellte) extra vorgenommen werden.
a) Legen Sie eine Debugkonfiguration für das aktuelle Projekt an. Im Project
Explorer macht man hierzu einen Rechtsklick auf gnometris → Debug As
→ Debug Configuration . . . . Anschließend wählt man DS-5 Debugger →
gnometris-gdb-server-example.
• Im Connection-Tab → Select Target → beagleboard.org → xM → Linux
Application Debug → Download and debug application wählen
Praktikum ASP – Blatt 1
6
• Im Files-Tab ist unter Target download directory und Target working
directory jeweils /writeable einzutragen
• Im Environment-Tab die DISPLAY-Variable auf den Wert localhost:10.0
setzen. Dadurch ist DS-5 in der Lage, die X11-Fenster anzuzeigen.
b) Auf Debug klicken, im Passwortdialog die Linux-Anmeldedaten verwenden,
danach läuft der Debugger bis zum Start der main()-Funktion. Klickt man
jetzt auf den kleinen grünen Pfeil im Debug-Control-Fenster, so öffnet sich die
auf dem BeagleBoard xM laufende Instanz von gnometris.
T2 Theoretische Grundlagen zu Stellenwertsystemen
Füllen Sie die leeren Felder in der folgenden Tabelle. Dabei bezeichne g die Basis der
jeweiligen g-adischen Darstellung
n
ai · g i
Z=
i=0
g=2
g = 10
101010
1337
g = 16
0x4711
Praktikum ASP – Blatt 1
7
T3 Programmierung einer einfachen Schleife in C
Ziel dieser Aufgabe soll es sein, die aus der Oberstufenmathematik bekannte Formel des
kleinen Gauß sowohl mithilfe des grafischen DS-5 als auch auf der Linux Kommandozeile
zu implementieren. Formal ist diejenige Zahl z gesucht, die sich errechnet aus:
n
z = 1 + 2 + 3 + ··· + n =
k
k=1
Für diese Programmieraufgabe soll n = 100 gewählt werden. Außerdem wollen wir
die (naive) Lösung mithilfe einer Schleife implementieren. In C steht uns hierfür das
for-Konstrukt zur Verfügung. Nach der Berechnung soll das das Ergebnis z mithilfe der
printf()-Funktion auf die Konsole ausgegeben werden.
1. Programmieren Sie die genannte Schleife mithilfe von DS-5 . Wir ignorieren allerdings zunächst noch die DS-5 -spezifischen Eigenheiten beim Erstellen eines
neuen Projekts und bearbeiten lediglich das bei den Beispielprojekten enthaltene
HelloWorld-Programm. Zum Ausführen des Programms muss außerdem eine
passende Debugkonfiguration erstellt werden.
2. Implementieren Sie nun das gleiche Programm nur mithilfe der Kommandozeile.
a) Loggen Sie sich mit PuTTY auf das BeagleBoard xM ein.
b) Wechseln Sie in das Verzeichnis /writeable: cd /writeable
c) Erstellen Sie einen neuen Ordner gauss_ssh: mkdir gauss_ssh
d) Wechseln Sie in das Verzeichnis gauss_ssh: cd gauss_ssh
e) Erstellen Sie die Datei gauss.c: touch gauss.c
f) Schreiben Sie Ihre Implementierung mithilfe eines Texteditors Ihrer Wahl (wir
verwenden nano) in die Datei gauss.c: nano gauss.c
g) Kompilieren Sie Ihr Programm mithilfe des Gnu-C-Compilers: gcc -o gauss
gauss.c
h) Führen Sie Ihr Progamm auf der Kommandozeile aus: ./gauss
Praktikum ASP – Blatt 1
8
H1 ROT13
Wir wollen in dieser ersten Hausaufgabe die von Caesar verwendete ROT13-Chiffre
implementieren. Bei dieser Chiffre wird der Klartext einer geheimen Nachricht verschlüsselt, indem jeder Buchstabe um 13 Stellen im Alphabet „rotiert” wird. Überschreitet
man dabei den Buchstaben Z, so wird beim Zählen der 13 Positionen wieder beim A
begonnen. Das Schema ist in der untenstehenden Grafik erläutert.
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
1. Programmieren Sie eine Funktion
void rot13(char *input)
welche einen Pointer auf einen String als einzigen Parameter übergeben bekommt
und den transformierten String wieder auf die Konsole ausgibt. Achten Sie auf
korrekte Behandlung von Groß- und Kleinbuchstaben, sowie eventuelle in der
Eingabe vorkommende Sonderzeichen. Legen Sie bei der Bearbeitung der Aufgabe
den den Standardzeichensatz der englischen Sprache zugrunde (d.h. Umlaute
müssen nicht beachtet werden). Rufen Sie die Funktion von der main()-Funktion
aus auf, und übergeben Sie das erste dem Programm übergebene Argument als
Parameter für die Funktion.
2. Welche Bedeutung hat der Umstand, dass keine Unterscheidung in zwei Funktionen rot13_encrypt und rot13_decrypt erfolgt ist? Welche Rolle spielt der Begriff
Involution dabei? Entschlüsseln Sie mit diesem Wissen (und Ihrem Programm!) die
folgende geheime Botschaft (es handelt sich dabei um ein Pangramm):
Wrqre jnpxrer Onlre iregvytg ordhrz mjb Cshaq Xnyofunkra.
3. Würden Sie rot13 zur Verschlüsselung Ihrer persönlichen Daten verwenden? Was
sind Ihrer Meinung nach Stärken und/oder Schwächen dieses Verschlüsselungsverfahrens?
Anmerkung: Teil der Hausaufgabe ist es auch, sich mit den Basiskonzepten der CProgrammierung unter Linux vertraut zu machen. (Datentypen, Schleifen, if-Konstrukte,
Arrays, einfache Pointerarithmetik, sowie die Standardbibliothek).
Es besteht keine Verpflichtung, diese Hausaufgaben abzugeben. Sie dienen lediglich
der Übung und werden in der folgenden Tutorstunde besprochen.
Document
Kategorie
Technik
Seitenansichten
19
Dateigröße
897 KB
Tags
1/--Seiten
melden