« Arquitectura de la PlayStation Portable (PSP) (index)

Arquitectura de la PlayStation Portable (PSP)

Chapter 8: Sistema operativo


Tabla de contenidos

  1. Arquitectura y diseño
    1. Módulos
    2. Kernel/IPL
    3. Otras partes
  2. Proceso de arranque
  3. Visual Shell
  4. Actualizabilidad

Con el paso de los años, el programa encargado de controlar una consola antes de que arranque un juego se ha vuelto cada vez más complejo, impulsado principalmente por la creciente necesidad de seguridad y servicios (APIs actualizables, multijugador en línea, multimedia, etc.). La PSP intenta acomodar todo esto en un hardware muy limitado. No quiero decir con esto que el resultado sea mediocre, pero muchas de las decisiones de diseño son fruto del equilibrio entre costes, rendimiento y robustez.

Arquitectura y diseño

Ante todo, la PSP contiene una ROM de 4 KB oculta y sin documentar dentro del Tachyon, donde reside el bootloader . En otras palabras, al encender la consola, la CPU comienza buscando instrucciones en esa ROM, que recibe distintos nombres: 'Bootrom', 'Pre-IPL' y 'Lib-PSP iplloader'.

El resto del sistema está instalado en 32 MB de memoria NAND Flash ubicada en la placa base, donde reside la mayor parte del sistema operativo (SO) de la PSP.

El SO se compone de los siguientes elementos:

Módulos

Un módulo es lo que en el mundo del PC/Windows llamaríamos un 'programa' o 'driver'. Una vez cargados, los módulos pueden residir en memoria y realizar las siguientes tareas :

El binario de un módulo puede estar cifrado o descifrado, e incluye metadatos que indican si se trata de un 'módulo de usuario' o un 'módulo del kernel'; este último permite al módulo controlar zonas privilegiadas de la memoria (donde reside el kernel).

Los módulos son invocados por el 'kernel' o la 'Visual Shell' (VSH). Los módulos de usuario pueden ejecutar otros módulos a discreción del kernel, lo que refuerza la seguridad: por ejemplo, el kernel jamás carga módulos del kernel desde los Universal Media Discs (UMD).

Kernel/IPL

Aunque este SO no contiene un kernel per se, sí dispone de múltiples componentes que asumen las funciones de un kernel tradicional.

El primero es el IPL, que es cargado por el Pre-IPL y se encarga de inicializar el hardware. Una parte del IPL, denominada IDStorage, almacena también información exclusiva de la consola (como su dirección MAC, el número de serie y las claves de autenticación de UMD) . ¡Sobrescribir esta última área tiene consecuencias catastróficas! Por ello, las claves de UMD se duplican varias veces para sobrevivir a posibles corrupciones.

El IPL carga a continuación un conjunto de módulos del kernel que gestionan operaciones de bajo nivel (gestión de memoria, multihilo y sistema de archivos). También implementan las excepciones de acceso a memoria provocadas por la MPU (¿recuerdas el apartado sobre segmentación?). Para simplificar, cuando use la palabra 'kernel' en este artículo, me referiré a estos módulos del kernel.

Dicho esto, el kernel no implementa multitarea, pero sí soporta multihilo cooperativo para procesos individuales.

El kernel permanece en memoria mientras la consola tenga alimentación. Por esa razón, los programas (módulos de usuario) no se escriben para bare-metal; en su lugar, dependen de las funciones que exponen los módulos del kernel. En consecuencia, el kernel reserva 4 MB de la RAM principal y otros 4 MB para 'memoria volátil' (un búfer temporal para numerosas operaciones, cuyo acceso se concede bajo demanda). Esto deja únicamente 24 MB de RAM principal (de los 32 MB totales) para los programas de usuario.

Otras partes

La NAND también aloja otras secciones del firmware.

En primer lugar, está la Visual Shell o 'VSH', que es lo primero que percibe el usuario al encender la PSP. La VSH es una interfaz gráfica de usuario que permite ejecutar juegos y otros módulos (únicamente los de tipo usuario). Está compuesta por múltiples módulos, algunos de los cuales solo se cargan cuando se solicitan.

Dato curioso: la llamada al sistema que se utiliza para iniciar los juegos comerciales funciona primero reiniciando la consola y luego cargando el ejecutable. Es probable que esta estrategia se adoptara para descargar la VSH y liberar recursos para el juego.

En segundo lugar, existe una segunda partición en la NAND que almacena datos relacionados con el usuario, como la configuración de red. Esta partición se denomina 'flash1' (a diferencia de 'flash0') y su contenido se llama configuración del sistema.

Proceso de arranque

Ahora que hemos identificado las principales partes, examinemos cómo trabajan juntas para llevar la consola a un 'estado operativo' (una vez que se enciende). La seguridad solo se menciona brevemente aquí; la sección 'Antipiratería y homebrew' la analiza con más profundidad.

El complejo proceso de arranque funciona de la siguiente manera :

  1. El vector de reset de la CPU principal apunta a 0x1FC00000, que a su vez señala a la ROM Pre-IPL dentro del Tachyon.
    1. La primera mitad del Pre-IPL ordena a la CPU copiar su segunda mitad en la memoria scratchpad y continuar la ejecución desde allí.
      • El Pre-IPL busca la siguiente etapa en la NAND o en un Memory Stick externo. Cuando se selecciona este último (nunca bajo un uso normal), la PSP entra en un modo denominado factory service mode. Para simplificar, nos centraremos en el modo normal (selección de NAND).
    2. El Pre-IPL inicializa el controlador de NAND y continúa la ejecución desde allí. La segunda parte del Pre-IPL ejecuta el IPL, que está cifrado; por ello se descifra (mediante 'KIRK', cuyos detalles veremos más adelante) y se copia en la eDRAM (dentro del Graphics Engine) como área de trabajo.
    3. Una vez finalizado el descifrado, la ejecución continúa en la eDRAM, donde reside el IPL descifrado.
  2. El proceso de ejecución del IPL se divide en tres etapas.
    1. La primera etapa, llamada loader, resetea la CPU principal y oculta la ROM Pre-IPL del mapa de memoria. El loader también inicializa el hardware mínimo y descomprime 'Main.bin', la siguiente etapa, en la eDRAM.
    2. Main.bin se centra en inicializar el resto del hardware, incluida la memoria principal. Una vez finalizado, descifra la tercera etapa en la memoria principal y continúa la ejecución desde allí.
    3. La etapa final, denominada payload, carga el kernel. Este se almacena en forma de múltiples binarios, módulos y metadatos que, una vez cargados en la RAM principal, dan vida al sistema. A continuación se muestra la interfaz interactiva.

Visual Shell

Internacionalmente, esta consola debuta con la famosa interfaz XrossMediaBar o 'XMB', la completa Interfaz Gráfica de Usuario (GUI, del inglés Graphical User Interface) con la que se entregó la PSP.

Image
La pantalla principal (sin juego insertado o instalado).

Image
El XMB incluye un visor de fotos y vídeos.

Image
La categoría 'Juego' permite ejecutar un juego, gestionar partidas guardadas o buscar otras PSP (Game Sharing).
Al situarse sobre el propio juego, el XMB se adapta visualmente con los recursos del juego, hasta que el usuario selecciona otro elemento de la categoría.

Image
La categoría 'Configuración' ofrece numerosas opciones de personalización.
Algunas entradas agrupan varios controles de configuración.

Image
Así se escribe en esta consola, al más puro estilo de los teléfonos móviles de antes.

Desde el punto de vista de la interacción persona-ordenador, el diseño del XMB ofrece soluciones muy ingeniosas a los retos de navegación (moverse por múltiples niveles de información, evitar saturar al usuario con opciones y encajar todas las entradas en una pantalla de 4,3"). En esencia, la información se organiza en 'categorías' y 'elementos', y el D-pad permite navegar entre ellos: las flechas izquierda y derecha cambian de categoría, mientras que las flechas arriba y abajo seleccionan un elemento dentro de la categoría actual. Cabe destacar que todas las categorías están al mismo nivel jerárquico, por lo que ninguna entrada se superpone a las demás. Esto impide la inserción de publicidad que distraiga la atención.

Por otro lado, el XMB ofrece opciones de personalización, como cambiar el color de fondo y reorganizar los elementos. Además, da acceso a servicios multimedia y, por supuesto, permite cargar el juego (ya sea desde un UMD o un Memory Stick).

También cuenta con un visor de archivos integrado, que se usa tanto para la gestión multimedia como para la de partidas guardadas.

Actualizabilidad

Como hemos visto, todo excepto el Pre-IPL está almacenado en un soporte de escritura y, por tanto, es 'actualizable'. Sony distribuyó las actualizaciones de firmware en forma de archivos descargables, que los usuarios podían descargar manualmente o a través del asistente de 'Actualización del sistema', el cual también instalaba dichos paquetes.

Image
El 'Asistente' de actualización del sistema.

Algunas actualizaciones reforzaron el sistema de seguridad de la PSP añadiendo capas de cifrado al proceso de arranque y comprobaciones de integridad para los módulos del kernel.

Desde el punto de vista del desarrollador, algunas actualizaciones mejoraron las APIs añadiendo nuevas funciones y corrigiendo las existentes. En consecuencia, los juegos quedaban vinculados a la versión del sistema para la que se desarrollaron, y los usuarios debían actualizar el firmware para jugar a los más recientes. Sin embargo, las actualizaciones siempre mantenían la compatibilidad con versiones anteriores, por lo que los juegos más antiguos nunca deberían romperse en un sistema actualizado (al menos, en teoría).

Desde la perspectiva del usuario, algunas actualizaciones introdujeron nuevos servicios, como un navegador web, un lector de RSS y otros. Tras el lanzamiento de la PlayStation 3, muchas aplicaciones en línea se portaron a la PSP, incluyendo la 'PlayStation Store' y el 'Remote Play'.


Previous: 7. E/S

Next: 9. Juegos


Rodrigo Copetti © 2026 RSS Feed

Ir a la edición moderna

Inicio · Escritos · Soporte · Acerca del autor · Acerca del sitio web