Ir al contenido

DSLinux

De Wikipedia, la enciclopedia libre
La versión para imprimir ya no se admite y puede contener errores de representación. Actualiza los marcadores del navegador y utiliza en su lugar la función de impresión predeterminada del navegador.
DSlinux
Parte de GNU/Linux

DSLinux ejecutándose en una NDS Lite usando adaptador "M3 DS" y el cartucho GBA Movie Player
Información general
Tipo de programa distribución Linux
Modelo de desarrollo código abierto
Licencia GPLv2
Estado actual estancado
Información técnica
Programado en
Núcleo Linux (μClinux)
Plataformas admitidas Nintendo DS
Interfaz gráfica predeterminada teclado virtual
Enlaces

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

Software

Ejecuta un versión modificada del núcleo μCLinux y está basado en uCLinux 2.6.14 (Linux-2.6.14-hsc0). Solo se ejecuta en modo texto y Nano-X, el cual es mostrado mediante el Controlador de dispositivo de framebuffer personalizado para la consola. Se interactúa mediante un teclado virtual mostrado en la pantalla táctil de la Nintendo DS. Está compilado usando GCC.[1]

Se han portado las bibliotecas ncurses, libpcap y SDL, junto con otras, así DSLinux es en teoría capaz de ejecutar casi cualquier aplicación cuya interfaz de usuario se base en ncurses o framebuffer. Es capaz de ejecutar aplicaciones shell básicas proporcionadas por Busybox y GNU Coreutils, tales como los editores de texto vi y nano, navegadores web como Links, y reproductores como madplay.[1]​ La biblioteca estándar de C es uClibc.

Hardware soportado

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. No está soportado por la familia Nintendo DSi.

Soporta almacenamiento de ficheros en ciertos dispositivos de hardware externos. Puede almacenar ficheros en la memoria SRAM en las tarjetas GBA Flash, CompactFlash y SD, a través de los siguientes adaptadores:[2]

  • GBAMP
  • Tarjetas M3
  • SuperCard

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

También es soportado por emuladores como DeSmuMe, el cual se puede ejecutar usando las imágenes de ROM disponibles.

Limitaciones de Memoria

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 caché de datos, entonces una escritura de 8-bit es realizada en la caché. A continuación, cuando la info de la caché es leída, 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.

Referencias

  1. a b c AurosZx (30 de diciembre de 2011). «DSLinux: Linux corriendo en un Nintendo DS». Desde Linux. Consultado el 15 de agosto de 2020. 
  2. Samathy (27 de mayo de 2018). «DSLinux on a DSLite with an M3DS Real card and SuperCard SD». Medium (en inglés). Consultado el 15 de agosto de 2020. 

Enlaces externos