Login
Newsletter
Werbung

So, 22. Januar 2006, 00:00

Nintendo DS und Linux

DSLinux

DSLinux basiert auf der µClinux-Distribution, wobei hier der 2.6er Linux-Kernel und die µClibc sowie Busybox verwendet werden. Alle Patches, die aus dem CVS von µClinux geladen werden können, beziehen sich auf die µClinux-Version vom 15.12.2004. Das originale µClinux basiert auf dem 2.0er Linux-Kernel und wurde in erster Linie für Mikrocontroller ohne MMU (Memory Management Unit) entwickelt. µClinux wurde mittlerweile auf eine große Menge von Architekturen wie z.B. ARM portiert. Im Moment können nur Tools innerhalb der Busybox und wenige direkte Tools aus µClinux in das DSLinux-Image mit einkompiliert werden. Dies liegt an der fehlenden XIP-Unterstützung (XIP bedeutet, dass das auszuführende Programm nicht komplett ins RAM geladen werden muss, um es auszuführen). Das Standard-Passwort für die Distribution ist »uClinux«.

µClinux

Kernel

Der Hacker Pepsiman erstellte die ersten Patches für den 2.0er-Kernel. Er ist verantwortlich für einige der wichtigsten Schritte bei der Umsetzung des Kernels auf den NDS. Zudem hat er die Umstellung auf den 2.6er Kernel aus Gründen wie der Performance und Stabilität durchgeführt.

Mittlerweile wurde auf den 2.6er Kernel umgesattelt und fast jede Hardware wird unterstützt. Was fehlt, sind Device-Treiber für den Sound und das WLAN. Der Kernel läuft ausschließlich auf der ARM9-CPU. SMP wird es trotz zweiter CPU nicht geben, da die ARM7-CPU in einer Endlosschleife hängt und nur als eine Art Gateway zu Hardware wie z.B. Sound, WIFI und oder dem Touchscreen benutzt wird.

Userland

Es hat sich während der Entwicklung bereits früh herausgestellt, dass Busybox sowie das Umstellen von uc-libc, welche anfänglich verwendet wurde, zur uClibc nötig war. Seit dieser Umstellung sind viele Tools für den NDS wie z.B. vi verfügbar. Desweiteren sind bereits jetzt Textadventures und ncurses-Spiele in der Distribution enthalten. Natürlich nur solche, die per Online-Tastatur spielbar sind.

Imagedateien

.gba

Ein ROM-Image eines originalen GameBoy Advanced-Spiels oder eigener GBA-Software.

.ds.gba

Diese Dateien wurden entwickelt, um von GBA-Flashkarten gestartet zu werden. Manche .ds.gba-Images sind .nds-Dateien mit einem speziellen Loader vor dem eigentlichen Code, der den auszuführenden Code vor dem Ausführen in das RAM kopiert. dslinux.ds.gba von der Nightly Builds-Seite oder nach dem Compilieren einer eigenen Version von .ds.gba µClinux sind keine dieser .nds-Images mit Loader. Bei einer direkten .ds.gba-Datei wird der Code direkt von der Flashkarte ausgeführt, was zu deutlichen Unterschieden in der Bootgeschwindigkeit führt.

.nds

Diese Dateien werden in den folgenden Fällen verwendet: In Emulatoren (wie iDeaS, dsemu, dualis), bei Wireless Multiboot (Starten von Software über WLAN) und GBA Movie Player (GBAMP). Die meisten .nds-Dateien werwenden mittlerweile einen eingebauten Loader, der erlaubt, dass sie auch auf GBA-Flashkarten verwendet werden können, ohne einen Loader zusätzlich voranstellen zu müssen. Dies funktioniert jedoch nicht mit allen Flashcards oder einer SuperCard.

.nds.gba

Hierbei handelt es sich um eine .nds-Datei, die umbenannt wurde, um mit einem FlashLinker-Tool (dem Tool des Herstellers, mit dem eine GBA-Flashcard beschrieben werden kann) auf eine GBA-Flashkarte speichern zu können.

Howto compile µClinux

Hierzu wird eine der folgenden Toolchains benötigt: devKitArm, arm-elf-gcc, arm-uclinux oder arm-uclinux aus dem µClinux ARM 2.6-Projekt. Je nach Betriebssystem muss auf die entsprechende Toolchain zurückgegriffen werden. Grundsätzlich ist die Distribution auf jedem Rechner kompilierbar. Man hat jedoch auf manchen Systemen wie Windows und Mac OS X (hier müssen zusätzlich XCode und die Darwinports installiert sein) einen entsprechend größeren Aufwand, bis µClinux sich dazu überreden lässt.

  1. uClinux-dist-20041215.tar.gz herunterladen, DSLinux bezieht sich auf diese µClinux-Version.
  2. Entpacken
  3. cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/dslinux login
  4. cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/dslinux co -P dslinux
  5. cp dslinux/* uClinux-dist
  6. cd uClinux-dist
  7. make menuconfig
  8. make CROSS_COMPILE=arm-elf-
  9. Fertig

Bei »make menuconfig« muss der Vendor auf Nintendo und das Zielimage auf den entsprechenden Typ wie z.B. NDS (.nds) gesetzt werden. Wird die µClinux-Chain verwendet, muss unter 8. »arm-uclinux-« angegeben werden.

Andere Projekte um den NDS

dsdev.org

DSDev.org entstand ursprünglich aus der GameBoy-Advanced-Entwickler-Seite GBADev.org. Nach dem Release des NDS wurde diese jedoch nicht eingestellt, sondern die neue Plattform DSDev.org aufgebaut. Auf dieser Seite werden ständig neue Demos und Neuheiten präsentiert. Zudem ist das Forum auf dieser Seite sehr gut besucht. Es wird nicht nur die Entwicklung von eigener Software diskutiert, sondern auch die Hardware-Entwicklung und allgemeine Themen wie z.B. Designfragen und News.

devkitPro und die libnds

In diesem Projekt geht es um die Entwicklung von Tools zum Erstellen von eigener Software für den Nintendo DS. Aktuell sind Toolchains für den GameBoy Advanced, GP32 (Handheld der südkoreanischen Firma GamePark, Konkurrenzprodukt zum GBA), Playstation Portable sowie den GameCube verfügbar. Für den NDS, den GBA und GP32 wird die Toolchain devkitARM benötigt. Für den GameCube devkitPPC und es gibt eine Toolchain devkitPSP für die PSP (Playstation Portable). Für jede dieser Toolchains wurde eine eigene Mailingliste eingerichtet, da die Anfragen sonst nicht mehr überschaubar wären. Die IRC-Channels #gbadev, #gp32dev, #gcdev und #dsdev können auf irc.efnet.org betreten werden. Die Channelsprache ist Englisch. Hier treffen sich ununterbrochen Entwickler für eigene Software. Die libnds ist ein zusätzliches Produkt der dsdev-Entwickler. In dieser Library, welche in C geschrieben ist, werden alle Möglichkeiten der DS-Hardware implementiert und auch dokumentiert. Es gibt mittlerweile für alles Unterstützung, sogar eine OpenGL-Schnittstelle, Audio und WLAN.

Ausblick in die Zukunft

  • Der Treiber für die WLAN-Hardware wird in Angriff genommen, sobald auf den Kernel 2.6.14 umgestiegen wurde.
  • XIP für die gesamte µClinux -Distribution
  • X11
  • Diverse Anwendungen

7 Anhang

Kosten

  • Nintendo DS: 118-161 EUR
  • NDS-Spiel: 39 EUR
  • Movieplayer (M2): 20 EUR
  • Supercard (CF & SD): 59 EUR
  • PassMe: 25 EUR

Danksagung

Danke an alle, die an den beschriebenen Projekten und an diesem Artikel mitgewirkt haben. Bei den großen Menge von Personen, die hierbei teilgenommen haben, ist es so gut wie unmöglich, jeden einzeln aufzuzählen, so dass ich zu dem Entschluss gekommen bin, es hierbei zu belassen. In diesem Sinne, macht weiter so, und gute Arbeit!

Bei Fragen oder Anregungen zu diesem Artikel bitte einfach eine Email an klaute@web.de schicken.

Die Originalfassung des Artikels ist als PDF-Datei unter http://www.digital-dreaming.de/trans/nds-dslinux.pdf zu finden.

  • Dieses Werk wurde unter der GNU Free Documentation License veröffentlicht. Das Kopieren, Verbreiten und/oder Modifizieren ist erlaubt unter den Bedingungen der GNU Free Documentation License, Version 1.2 oder einer späteren Version, veröffentlicht von der Free Software Foundation.

    - Weitere Informationen
Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung