26.02.2014 Aufrufe

LinuxUser Python-CODE, Embedded-Einstieg, Crosscompiling (Vorschau)

Erfolgreiche ePaper selbst erstellen

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

SCHWERPUNKT<br />

<strong>Crosscompiling</strong><br />

Das erste Helloworld-Programm<br />

in C<br />

auf dem (virtuellen)<br />

Commodore 64.<br />

GLOSSAR<br />

Hardware-Sprites: Die<br />

Sprites waren kleine<br />

Grafiken im Format 24 x<br />

21 Pixel. Die Hardware<br />

unterstützte wichtige<br />

Features wie das Positionieren<br />

auf dem Bildschirm<br />

und die Kollisionserkennung<br />

direkt.<br />

Das vereinfachte insbesondere<br />

die Spieleprogrammierung<br />

enorm,<br />

bei der die Sprites etwa<br />

als Spielfigur oder Opponent<br />

Verwendung<br />

fanden.<br />

INSTALLATIONSPAKETE FÜR WINDOWS<br />

Ein mit freier Software erzeugtes meinprogramm.exe ist ja ganz<br />

nett, und jeder Linux-User weiß auch, wie er so etwas startet –<br />

Windows-User dagegen tun sich damit oft schwer. Sie suchen<br />

nach einem Installer namens setup.exe, der auf dem Desktop<br />

noch ein Icon und zusätzlich einen Eintrag im Startmenü erzeugt.<br />

Auch so etwas lässt sich unter Linux realisieren: Beim Nullsoft<br />

Scriptable Install System (NSIS, [4]) handelt es sich um freie<br />

Software, die auch nativ unter Linux läuft.<br />

DER BROTKORB<br />

Viele Leser dürften ihre ersten Erfahrungen mit Rechnern in den<br />

1980ern mit einem der damals verbreiteten sogenannten Heimcomputer<br />

gemacht haben. Das erfolgreichste Modell dieser Gattung<br />

war der Commodore 64 (Abbildung , vorige Seite), der von<br />

1982 bis 1994 gebaut wurde. Seine 8-Bit-CPU des Typs MOS<br />

Technology 6510 war mit 1 MHz getaktet, als Arbeitsspeicher<br />

brachte er 64 KByte RAM mit. Daneben gab es 20 KByte ROM, in<br />

denen unter anderem das Betriebssystem und der eingebaute<br />

Basic-Interpreter lagerten. Der Grafikchip VIC-II brachte es auf<br />

eine Auflösung von 320 x 200 Pixeln bei 16 Farben und steuerte<br />

bis zu acht Hardware-Sprites an. Als Soundchip kam ein 3-stimmiger<br />

SID 6581 zum Einsatz. Die Daten speicherte man auf externen<br />

Massenspeichern. Dazu fand zunächst die „Datasette“<br />

Verwendung, ein Bandlaufwerk mit Musikkassetten. Diese löste<br />

später eine 5¼-Zoll-Floppydisk ab, die 170 KByte Kapazität bot.<br />

Spielen), müssen Sie von der SDL-<br />

Homepage [2] erst die entsprechenden<br />

Windows-Pakete herunterladen<br />

und unter /opt/cross einrichten<br />

(Listing 4, vorige Seite).<br />

Erst dann klappt das Kompilieren<br />

eines SDL-Programms.<br />

Der Aufruf von /opt/cross/bin/<br />

sdl-config am Ende der Compiler-<br />

Zeile von Listing 4 liefert Pfade<br />

und Libraries für die Windows-<br />

Umgebung – für ein Linux-Programm<br />

würde man stattdessen<br />

sdl-config heranziehen.<br />

Um das Programm unter Linux<br />

(Wine) oder Windows zu testen,<br />

benötigen Sie dann noch die Datei<br />

SDL.dll aus SDL-1.2.14-win32.<br />

zip. Auch andere Bibliotheken gilt<br />

es gegebenenfalls für Windows<br />

nachzuinstallieren. Hier verwenden<br />

Sie, sofern vorhanden, die<br />

Entwicklerpakete für Windows<br />

oder müssen anderenfalls die Bibliotheken<br />

selbst crosskompilieren.<br />

LISTING 5<br />

$ make -f make/gcc.mak<br />

$ su -c "make -f make/gcc.mak<br />

install"<br />

LISTING 6<br />

#include <br />

int main()<br />

{<br />

VIC.bordercolor = COLOR_GREEN;<br />

VIC.bgcolor0 = COLOR_BLACK;<br />

return(0);<br />

}<br />

Spezial-Crosscompiler<br />

Der bislang in diesem Artikel verwendete<br />

GCC unterstützt als<br />

Crosscompiler zwar eine beeindruckende<br />

Menge an Targets,<br />

doch gibt es auch viele mehr oder<br />

weniger exotische Plattformen,<br />

die er nicht ansteuert. Für diese<br />

existieren oft Spezial-Crosscompiler,<br />

die meist ausschließlich Code<br />

für die Zielplattform erzeugen.<br />

Ein typisches Beispiel für eine<br />

solche exotische Plattform ist der<br />

Commodore 64 (C64) aus den<br />

80er-Jahren des letzten Jahrhunderts<br />

(siehe Kasten Der Brotkorb).<br />

Solche Heimcomputer wurden<br />

entweder in Basic (eingebaut,<br />

langsam) oder in Assembler programmiert.<br />

Sprachen wie Logo,<br />

Forth oder Pascal standen zwar<br />

auch zur Auswahl, wurden aber<br />

selten benutzt. Ein Compiler für<br />

C – heute die führende Programmiersprache<br />

– existierte 1982<br />

noch nicht. Heute gibt es ihn.<br />

6502-Crosscompiler<br />

Das freie Softwareprojekt CC65<br />

[3] stellt einen C-Crosscompiler<br />

für die MOS-6502-CPU-Familie<br />

zur Verfügung, wie sie nicht nur<br />

im Commodore 64, sondern auch<br />

in Heimcomputern wie dem<br />

VC20, C16, Apple II oder Atari<br />

verwendet wurde. Damit lassen<br />

sich C64-Programme auch in C<br />

programmieren.<br />

Mit den Befehlen aus Listing 5<br />

übersetzen Sie den Compiler<br />

recht einfach aus dem Quellcode<br />

selbst und installieren ihn nach<br />

/ usr/local. Alternativ finden Sie<br />

auf der Homepage auch RPM-Pakete<br />

sowie ein Debian-Repository.<br />

Nach der Installation stehen neben<br />

dem C-Compiler cc65 unter<br />

anderem ein Assembler (ca65), ein<br />

Disassembler (da65) und ein Linker<br />

(cl65) zur Verfügung. Als besonders<br />

praktisch erweist sich<br />

das Compile-and-Link-Dienstprogramm<br />

cl65: Es erkennt die Inputfiles<br />

(Assembler, Object-File, C-<br />

File) automatisch anhand der Endung<br />

und generiert ein ausführbares<br />

Programm. Das Kompilieren<br />

und Ausführen unseres kleinen<br />

Helloworld-Programms aus<br />

Listing 1 klappt daher ohne großen<br />

Aufwand:<br />

$ cl65 helloworld.c<br />

$ x64 -autoload helloworld<br />

In der zweiten Zeile lädt und startet<br />

der C64-Emulator x64 (siehe<br />

Kasten Commodore 64 emulieren)<br />

das Programm helloworld von<br />

der virtuellen Floppy. Mit dem<br />

Basic-Befehl LIST lassen Sie sich<br />

das Programm anzeigen – ein Basic-Programm,<br />

das nur aus einem<br />

Befehl besteht: SYS 2061. Das bedeutet:<br />

Rufe das Assemblerprogramm<br />

an der Speicherstelle 2061<br />

40 02 | 11<br />

www.linux-user.de

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!