DSlinux

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
DSLinux
Ds lite with slot-2 device running dslinux.jpg
DSLinux ejecutándose en una NDS Lite usando el M3 DS Simply y el adaptador "M3 DS Adapter"
Desarrollador
?
Información general
Modelo de desarrollo ?
Tipo de núcleo μClinux modificado
Plataformas soportadas Linux
Licencia GPLv2
En español ?

DSLinux es una adaptación del sistema operativo Linux para la Nintendo DS.

Software[editar]

Ejecuta un versión modificada del núcleo μCLinux y está basado en uCLinux 2.6.14 (Linux-2.6.14-hsc0). Sólo se ejecuta en modo texto y nano-x el cual es mostrado mediante el Controlador de dispositivo de framebuffer personalizado para la consola. Se interacciona mediante un teclado mostrado en la pantalla táctil de la Nintendo DS.

Está compilado usando GCC —basado en un grupo de herramientas de compilación cruzada para procesadores de arquitectura ARM.

Las ncurses, libpcap y SDL, junto con otras muchas librerías, han sido portadas, así DSLinux es en teoría capaz de ejecutar casi cualquier aplicación cuya interfaz de usuario se base en ncurses o framebuffer. Ejecuta aplicaciones shell básicas proporcionadas por Busybox y las GNU Coreutils han sido también portadas. La librería de C es uClibc.

DSLinux no tiene sistema de gestión de paquetes. En cambio, las compilaciones de DSLinux se distribuyen como un sólo archivo tar.

Hardware soportado[editar]

A excepción del micrófono, todo el hardware interno de la Nintendo DS, incluyendo la red inalámbrica está soportada por DSLinux. El firmware de Nintendo DS se puede leer desde /dev/firmware, pero el soporte de escritura no se ha incluido por medidas de seguridad.

Soporta almacenar ficheros en ciertos dispositivos de hardware externos, ninguno de ellos está oficialmente apoyado por Nintendo. Puede almacenar ficheros en la memoria SRAM sita en las tarjetas GBA Flash, CompactFlash y SD; las antedichas pueden ser usadas con cualquiera de los siguientes adaptadores:

  • GBAMP
  • M3
  • SuperCard

Versiones más recientes han incluido soporte para DLDI, permitiendo un más amplio rango de compatibilidad.

Limitaciones de Memoria[editar]

La Nintendo DS no tiene Unidad de manejo de memoria (MMU), y consta tan sólo de 4 MB de RAM. Tanto la ejecución espacio de núcleo, como en espacio de usuario "execute in place" XIP, como la reserva de memoria de SLOB fueron las primeras técnicas usadas para incrementar un poco la cantidad disponible de RAM. Posteriormente, el soporte para la RAM interna presente en ciertos dispositivos adicionales, tales como la SuperCard o M3, ha sido añadido, ofreciendo una memoria extra de 32MB.

Esto último no fue trivial, pues las ranuras del bus GBA únicamente soportan escrituras de 16-bits. Si se envía sólo 8 bits por el bus, el resultado que queda en memoria es basura. Un desarrollador, llamado Amadeus, encontró una solución para ello, que requiere del reemplazo de la instrucción de ensamblador ARM "strb" por "swpb" (swap byte). Dicha instrucción primero lee de la dirección de memoria requerida, poblando la cache de datos, entonces una escritura de 8-bit es realizada en la caché. A continuación, cuando la info de la cache es sacada, se usan lecturas de 16-bit, eliminando todas las escrituras de 8-bit en el bus. Amadeus modificó la generación de código de GCC para ARM, tal que todo lo compilado para DSLinux usa ahora instrucciones swpb en vez de strb. El código Ensamblador en el núcleo Linux ha tenido que ser adaptado manualmente.

Enlaces externos[editar]