Mini2440 SDL GUI Programmierung: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „Wer ein kleines Linuxboard mit Display hat, möchte sicher nicht nur die Kernelausgaben auf der Framebuffer-Konsole ansehen oder sich für die popligsten Anwendun…“)
 
(Seite erstellt)
Zeile 3: Zeile 3:
Viel einfacher geht es in einigen Fällen mit [http://www.libsdl.org SDL]. Dieser Artikel beschreibt die Einrichtung einer Cross-Toolchain mit SDL-Support für das [[Mini2440]].  
Viel einfacher geht es in einigen Fällen mit [http://www.libsdl.org SDL]. Dieser Artikel beschreibt die Einrichtung einer Cross-Toolchain mit SDL-Support für das [[Mini2440]].  
Die unterschiede von Board zu Board sind meist sehr gering, was die Display-Ausgabe angeht. Daher lässt sich dieser Artikel auch für einige andere Boards verwenden.
Die unterschiede von Board zu Board sind meist sehr gering, was die Display-Ausgabe angeht. Daher lässt sich dieser Artikel auch für einige andere Boards verwenden.
Hier ein Screenshot von einem meiner SDL-Programme:<br>
[[Bild:mini2440_sdl_menu_screenshot.png|100px]]


Die Vorraussetzungen hierfür sind:
Die Vorraussetzungen hierfür sind:
Zeile 14: Zeile 17:
== libsdl ==
== libsdl ==
<pre>
<pre>
cd ~
wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz
wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz
tar xvfz SDL-1.2.14.tar.gz
tar xvfz SDL-1.2.14.tar.gz
cd SDL-1.2.14
cd SDL-1.2.14
./configure --build=arm-linux --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/ --enable-input-tslib --enable-input-events --enable-video-fbcon --disable-nasm --enable-alsa --enable-audio --enable-video
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/ \
--enable-input-tslib --enable-video-fbcon --disable-audio --disable-video-x11 --disable-video-directfb
time make
time make
sudo time make install
sudo time make install
</pre>
</pre>
Diese Schritte dauerten bei mir ca 5 Minuten. Mein Rechner ist ein DualCore 2x1.8Ghz, 4GB RAM.
Diese Schritte dauerten bei mir ca 5 Minuten.


Nun lassen sich schon die ersten Programme mittels SDL compilieren. Allerdings fehlen noch zusätzliche libs, wie z.B. [http://www.ferzkopp.net/joomla/content/view/19/14/ sdl_gfx] und [http://www.libsdl.org/projects/SDL_image/ sdl_image] um Grafiken, Texte und Bilder anzeigen zu können. SDL alleine steht da ein wenig auf dem Schlauch.
Nun lassen sich schon die ersten Programme mittels SDL compilieren. Allerdings fehlen noch zusätzliche libs, wie z.B. [http://www.ferzkopp.net/joomla/content/view/19/14/ sdl_gfx] und [http://www.libsdl.org/projects/SDL_image/ sdl_image] um Grafiken, Texte und Bilder anzeigen zu können. SDL alleine steht da ein wenig auf dem Schlauch.
Einen Haken hat die Sache noch. Dadurch, dass SDL in seinem Audio-Code auch Assembler verwendet habe ich es noch nicht hinbekommen, SDL mit ALSA oder OSS Support zu compilieren.
Wer dazu einen Tip hat, immer her damit :)


== libsdl_image ==
== libsdl_image ==
Mit dieser lib lassen sich recht einfach Bilder laden und anzeigen.
<pre>
cd ~
wget http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz
tar xvfz SDL_image-1.2.10.tar.gz
cd SDL_image-1.2.10
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/ \
--enable-gif --enable-jpg --enable-bmp
***HACK*** (siehe Text unter diesem Kasten)
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.la /usr/local/lib/libts.la
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.so /usr/local/lib/libts.so
***/HACK***
time make
sudo time make install
</pre>
Anmerkungen zum "Hack". Beim compilieren spuckt mir SDL_image einen Fehler aus. Es sagt mir, dass er in /usr/local/lib/ die tslib nicht finden kann. Dort hat er aber nichts zu suchen, da dies kein Pfad zum Cross-Compiling ist. Wie ich das abstelle, habe ich noch nicht herausgefunden, also habe ich einfach einen symbolischen Link angelegt.
== libsdl_gfx ==
== libsdl_gfx ==
Diese lib stellt einen Haufen Grafikfuntkionen bereit, wie Polygone, Rechtecke, Kreise, Linien, ...
Ausserdem beinhalten sie eine Textausgabe und Funktionen und Surface zu rotieren und zu zoomen.
== libsdl_ttf ==
== libsdl_ttf ==
== libsdl_net ==
Diese lib kann mit TrueType Fonts umegehen und sie anzeigen.
== libsdl_mixer ==


= Verwenden von SDL =
= Verwenden von SDL =
Zeile 36: Zeile 62:
== Bild-Funktionen ==
== Bild-Funktionen ==
== Threads ==
== Threads ==
== Audio ==
== Netzwerk ==

Version vom 23. Juli 2010, 05:55 Uhr

Wer ein kleines Linuxboard mit Display hat, möchte sicher nicht nur die Kernelausgaben auf der Framebuffer-Konsole ansehen oder sich für die popligsten Anwendungen einen X-Server+Window Manager installieren, sich eine Anwendung schreiben und dann erst loslegen können.

Viel einfacher geht es in einigen Fällen mit SDL. Dieser Artikel beschreibt die Einrichtung einer Cross-Toolchain mit SDL-Support für das Mini2440. Die unterschiede von Board zu Board sind meist sehr gering, was die Display-Ausgabe angeht. Daher lässt sich dieser Artikel auch für einige andere Boards verwenden.

Hier ein Screenshot von einem meiner SDL-Programme:
Mini2440 sdl menu screenshot.png

Die Vorraussetzungen hierfür sind:

Einrichten der Cross-Toolchain

Ich gehe davon aus, dass man alle kommenden Schritte als "normaler" User erledigt. Sämtliche Schritte, die als "root" erledigt werden müssen, wird ein "sudo" vorangestellt. Wenn das bei dir anders gehen sollte (z.B. su -c '...'), dann ändere es für dich!

libsdl

cd ~
wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz
tar xvfz SDL-1.2.14.tar.gz
cd SDL-1.2.14
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/ \ 
--enable-input-tslib --enable-video-fbcon --disable-audio --disable-video-x11 --disable-video-directfb
time make
sudo time make install

Diese Schritte dauerten bei mir ca 5 Minuten.

Nun lassen sich schon die ersten Programme mittels SDL compilieren. Allerdings fehlen noch zusätzliche libs, wie z.B. sdl_gfx und sdl_image um Grafiken, Texte und Bilder anzeigen zu können. SDL alleine steht da ein wenig auf dem Schlauch.

Einen Haken hat die Sache noch. Dadurch, dass SDL in seinem Audio-Code auch Assembler verwendet habe ich es noch nicht hinbekommen, SDL mit ALSA oder OSS Support zu compilieren. Wer dazu einen Tip hat, immer her damit :)

libsdl_image

Mit dieser lib lassen sich recht einfach Bilder laden und anzeigen.

cd ~
wget http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz
tar xvfz SDL_image-1.2.10.tar.gz
cd SDL_image-1.2.10
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/ \ 
--enable-gif --enable-jpg --enable-bmp
***HACK*** (siehe Text unter diesem Kasten)
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.la /usr/local/lib/libts.la
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.so /usr/local/lib/libts.so
***/HACK***
time make
sudo time make install

Anmerkungen zum "Hack". Beim compilieren spuckt mir SDL_image einen Fehler aus. Es sagt mir, dass er in /usr/local/lib/ die tslib nicht finden kann. Dort hat er aber nichts zu suchen, da dies kein Pfad zum Cross-Compiling ist. Wie ich das abstelle, habe ich noch nicht herausgefunden, also habe ich einfach einen symbolischen Link angelegt.

libsdl_gfx

Diese lib stellt einen Haufen Grafikfuntkionen bereit, wie Polygone, Rechtecke, Kreise, Linien, ... Ausserdem beinhalten sie eine Textausgabe und Funktionen und Surface zu rotieren und zu zoomen.

libsdl_ttf

Diese lib kann mit TrueType Fonts umegehen und sie anzeigen.

Verwenden von SDL

tslib-Maus

Grafik-Funktionen

Bild-Funktionen

Threads