Académique Documents
Professionnel Documents
Culture Documents
Arquitectura y Programación
9 de mayo de 2003
Índice general
1. Introducción 2
2. Arquitectura de la PS2 5
2.1. Emotion Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2. IO Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3. Sintetizador Gráfico (GS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1
Capítulo 1
Introducción
La PlayStation 2 (PS2) de Sony, fué uno de los productos más esperados del 2001. Las ca-
racterísticas técnicas de la consola son impresionantes.
Esta consola ha sido diseñada desde el pricipio con un claro objetivo: Juegos 3D. Es por eso
que todo el harware está orientado a que se puedean realizar juegos que lleven al usuario a una
inmersión en un mundo audiovisual en tres dimensiones.
La PS2 es la evolución de la primera consola desarrollada por Sony, la Playstation (PSX),
que fué puesta en el mercado en el año 1995. La PSX fué de las primeras consolas cuyos juegos
se distribuian en soporte CDROM. Los juegos de la PS2 se distribuyen en DVD aunque también
es capaz de reproducir los juegos de la PSX en CDROM. Gracias a la gran capacidad de los
DVDs (4.7 GB), los juegos de la PS2 están repletos de videos, música y sonido en 3D. Además
de juegos, la PS2 puede reproducir CDs de audio y películas en DVD por tanto es una completa
plataforma de entretenimiento.
El panel frontal contiene, además de la bandeja para los DVDs/CDs:
2 slots para las tarjetas de memoria que son de 8 MB normalmente, aunque el formato es
el mismo que las de la PSX por lo que se pueden intercambiar.
2 slots para los nuevos controles, también funcionan los controles antiguos de la PSX.
2 puertos USB que pueden ser usados con cualquier dispositivo USB compatible como
teclados, ratones, impresoras, etc.
La parte trasera contiene conectores para la salida de televisión, para televisión de alta definición
y salidas de sonido surround, DTS y Dolby Digital 5.1.
2
CAPÍTULO 1. INTRODUCCIÓN 3
Los mandos estándar, Dual Shock 2, tienen 15 botones; todos son analógicos, excepto Ana-
log, Start y Select.
Arquitectura de la PS2
Emotion Engine (EE): El Emotion Engine es el corazón de la PS2, y la parte que la hace
única. El Emotion Engine realiza las siguientes funciones:
El resultado del trabajo del Emotion Engine son display lists, esto es, secuencias de co-
mandos de rendering que son enviados al sintetizador gráfico (GS).
Sintetizador Gráfico (GS): El sintetizador gráfico recoge los display list que le envía el
EE y los representa en la pantalla. Es lo que sería la “tarjeta gráfica” de la PS2.
5
CAPÍTULO 2. ARQUITECTURA DE LA PS2 6
El rendimiento combinado de todos estos elementos permite calculos físicos complicados, gene-
ración de superficies NURBS y transformaciones geométricas 3D.
Además de procesar los datos a 128-bits, es posible procesar y transferir volúmenes masivos
de datos multimedia. Los 32 MB de RAM de memoria principal que soportan la velocidad de la
CPU son Direct Rambus DRAM de dos canales para conseguir un ancho de banda de 3.2 GB/seg.
Unas cuatro veces el rendimiento de las memorias PC-100 que se montaban en los ultimos PCs
cuando salió al mercado la PS2.
Con la incorporación del decodificador MPEG-2 en un chip, es posible procesar en paralelo
datos gráficos 3D de alta resolución y imágenes DVD de alta calidad.
Con una capacidad de calculo en punto flotante de 6.2 GFLOPS/seg, el rendimiento de esta
CPU alcanza el de algunos supercomputadores. Cuando es aplicado al procesamiento de trans-
formaciones de perspectiva y geométricas, que son las que se usan normalmente para el cálculo
de gráficos en 3D, el rendimiento llega a 66 millones de polígonos por segundo. Este rendimiento
es comparable con las estaciones gráficas usadas en la producción de películas de animación.
CAPÍTULO 2. ARQUITECTURA DE LA PS2 8
2.2. IO Processor
El IOP es el procesador que tenía la ’antigua’ PSX. Con la inclusión de este procesador dentro
de la PS2 se ha conseguido la compatibilidad al 100 % con la PSX. Además, se le ha añadido al
procesador soporte para IEEE 1394, también conocido como Firewire y para USB ya que estos
son los nuevos estándares de interocnectividad.
El nuevo IOP también incorpora las siguientes novedades sobre la CPU de la PSX: memoria
cache mejorada, una nueva arquitectura DMA de alto rendimiento que permite un incremento
de hasta 4 veces en la transferencia de datos. La interface serie también ha sido actualizada y es
unas 20 veces más rápida que la de la PSX.
La interfaz USB es compatible con OHCI (Open Host Controller Interface) y puede mane-
jar transferencias de datos desde 1.5 Mbps hasta 12 Mbps. IEEE 1394 puede manejar tasas de
transferencia desde 100 Mbps hasta 400 Mbps.
El uso de estas interfaces permiten la futura conectividad de la PS2 a un gran variedad de
otros sistemas como los VCR, Camaras digitales, Impresoras, Joysticks, Teclados, Ratones, etc.
nos por segundo y el sistema puede dibujar 150 millones de partículas por segundo. Con esta
capacidad, es posible generar imágenes con calidad de cine. Se pueden llegar a 20 millones de
poligonos dibujados de forma sostenida usando Z-buffering, texturas, luces y transparencias.
Esta nueva arquitectura puede ejecutar procesamiento en pasadas múltiples de forma recur-
siva y operaciones de filtrado a alta velocidad sin la asistencia de la CPU principal o el acceso al
bus principal.
Capítulo 3
10
CAPÍTULO 3. PROTECCIÓN ANTICOPIA DE LA PS2 Y MODCHIPS 11
Protección de juegos
En principio, el sistema de protección de la PS2 para los juegos en CDROM y en DVD es
igual al de la PSX y consiste en la generación incorrecta de los códigos ECC y EDC de ciertos
sectores del CD o del DVD.
La especificación de la estructura del CDROM/XA se encuentra en el libro amarillo[9], en
este documento se divide la estructura del cd en sectores de 2352 bytes cada uno. Al final de
cada sector se encuentran los bytes de los códigos ECC (Error Correction Codes) y EDC (Error
Detection Codes) que emplean información redundante sobre el sector para poder detectar y
corregir los fallos de lectura. Tanto los códigos ECC y EDC son calculados por la grabadora a la
hora de escribir los sectores.
La protección se basa en emplear unas grabadoras especiales que permitan modificar estos
códigos ECC y EDC, en el caso de la Playstation, los códigos de los 16 primeros sectores del
disco han sido manipulados. Estos sectores contienen ceros en la información correspondiente
al EDC y al ECC. Las grabadoras normales al intentar copiar estos discos, corrigen los códigos
EDC y ECC automáticamente. La Playstation al no encontrar los ceros en estos sectores, supone
que hemos introducido un CD de música y muestra el menú de audio o nos dice que el CD no es
válido.
Por otro lado, las pistas de datos están almacenadas en el sistema de ficheros ISO9660[10].
Cuando cualquier pista de datos esté seguida por una pista de audio, tiene que haber una sepa-
ración a continuación de la de datos de al menos 150 sectores (2 segundos aprox.). Aplicado al
disco de Playstation tenemos que siempre van 150 sectores llenos de ceros (0s) detrás de la pista
del juego. El propósito de esta separación ’fisica’ es el de tener un buffer para ’ayudar’ a los
lectores de CD que no siempre son capaces de pasar directamente de datos a audio o viceversa
sin una separación mínima.
Además, cuando una pista de audio sigue a una de datos tiene que empezar con otra separa-
ción de al menos 150 sectores que sirve para lo mismo que el postgap: separar pistas de datos
y audio. En la PlayStation, los pregaps que normalmente encontramos son de 150 sectores (2
segundos) o 300 sectores (4 segundos). Cuando los pregaps separan dos pistas de audio pueden
ser de 0 o 150 sectores según el disco.
Por último, el leadout se escribe directamente por la grabadora (excepto en algunos modelos)
CAPÍTULO 3. PROTECCIÓN ANTICOPIA DE LA PS2 Y MODCHIPS 12
Bloqueo regional
Además de la protección contra copias ilegales, la consola utiliza un sistema de ’bloqueo re-
gional’. Esto se hace porque Sony tiene acuerdos distintos en los mercados Asiáticos, Americano
y Europeo y entonces tienen que proteger los juegos para que no se puedan utilizar más que en
el área geográfica para el que fueron distribuidos. El bloqueo regional funciona de la siguiente
manera:
Los primeros cinco sectores (000000-000004) contienen la información del área para el que
se edita un determinado juego. Básicamente identifican el CD como Japonés, Americano o Eu-
ropeo. Si la información que envía el CD no cuadra con la que tiene almacenada la consola nos
vuelve a avisar que el CD introducido no es válido.
y es fácil encontrar parches en Internet específicos para cada juego y que desabilita la protección
de ese juego permitiendo su copia.
esta forma se ejecutará el juego sin llevar a cabo los chequeos anticopia.
Hay varios métodos para abrir la bandeja sin que se le notifique a la PS2, los métodos van
desde forzar la bandeja con un cuchillo hasta hacer una palanca especial para este menester. El
método está comentado en detalle en [12].
Este método tiene varios inconvenientes aparte de que podemos romper la bandeja. Estos
inconvenientes vienen de que la tabla de contenidos del nuevo disco introducido no se lee, por lo
tanto la PS2 tiene los datos del disco anterior. Esto se traduce en que el fichero SYSTEM.CNF
de la copia debe estar en la misma posición que tiene en el AR2. Esta posición en el LBA es
la 12231. Por lo tanto debemos parchear la imagen ISO antes de pasarla a CD. Existen varios
programas que se encargan de mover el SYSTEM.CNF a la posición correspondiente y rellenar
el hueco que quede de ceros si es necesario. En [1] podemos encontrar varios programas que
realizan esta función. A partir de la versión 1.3, el AR2 utiliza un método de carga del juego
diferente y ya no es necesario que el SYSTEM.CNF se encuentre en la posición 12231.
Otro de los inconvenientes es que la Playstation no leerá más del tamaño del AR2. Cada
versión del AR2 tiene un tamaño, por ejemplo, el límite de la versión 2 es de 74 min.
La única ventaja de este método con respecto a los chips, es que no se pierde la garantía de
la PS2 puesto que no se abre.
3.5. Modchips
El sistema más cómodo, aunque también el más complicado de instalar, es el uso de Mod-
chips. Los Modchips interceptan los datos de protección anticopia enviados por el disco y envía
los que la Playstation espera. De esta forma basta con introducir la copia y la Playstation auto-
máticamente lo reconocerá como válido.
Este método no tiene ninguna limitación de los métodos de swap, el único inconveniente es
que, dependiendo del tipo de chip, hay que realizar hasta 40 soldaduras en distintos puntos para
poder engañar a la BIOS.
El modchip más fiable hasta la fecha es el Messiah 2. El uso y la venta de estos chips es
perfectamente legal en España, por lo que se pueden encontrar en diversas tiendas por unos 40
E, incluso existen tiendas que venden la Playstation con el chip instalado, eso sí, sin garantía.
Si disponemos de la imagen del sistema de ficheros (iso9660) podemos usar el cdrecord[15] para
grabar el CD, el comando sería:
o bien
Para generar el sistema de ficheros del CD con los ficheros de los programas que estemos de-
sarrollando usaremos el mkisofs que viene incluido con las cdrtools junto con el cdrecord. Para
generar la imagen con nuestro programa, metemos todos los ficheros que van a ir en el CD en un
directorio y usamos el siguiente comando:
Si queremos que el CD generado funcione con los métodos swap hay que parchearlo para que
el SYSTEM.CNF esté en la posición adecuada. Normalmente los ficheros se almacenan en la
imagen ISO ordenados alfabéticamente. En el caso de nuestros programas de prueba, al ser pe-
queños, el SYSTEM.CNF se encontrará por debajo del sector 12231 de la imagen. Para ver la
posición donde se encuentra el fichero en la iso usaremos el comando isoinfo que se encuentra
en el mismo paquete que mkisofs.
Normalmente tendremos que generar un fichero vacio para empujar al SYSTEM.CNF a la
posición conveniente. Como ejemplo vamos a ver el proceso de creación de una iso para la demo
starsim. Una vez compilada la demo tenemos un fichero ejecutable, starsim.elf, este fichero es el
que grabaremos en el CD junto con el SYSTEM.CNF que tendremos que generar para la ocasión.
# cd starsim
# ls
starsim.elf system.cnf
# cat system.cnf
BOOT2 = cdrom0:\STARSIM.ELF;1
VER = 1.10
VMODE = PAL
# cd ..
# mkisofs -o starsim.iso starsim
# isoinfo -l -i starsim.iso
Directory listing of /
d--------- 0 0 0 2048 May 6 2003 [ 23 02] .
d--------- 0 0 0 2048 May 6 2003 [ 23 02] ..
---------- 0 0 0 126615 May 6 2003 [ 24 00] STARSIM.ELF;1
---------- 0 0 0 56 May 6 2003 [ 86 00] SYSTEM.CNF;1
Como podemos observar, el SYSTEM.CNF está en la posición 86. Cada sector de la imagen iso
es de 2048 bytes. Por lo tanto habrá que mover el SYSTEM.CNF 12231 - 86 = 12145 sectores.
Creamos pues el fichero, que llamaremos 0.0 para que se ponga el primero y regeneramos la iso.
CAPÍTULO 3. PROTECCIÓN ANTICOPIA DE LA PS2 Y MODCHIPS 17
La PS2 TEST, es igual que una PS2 normal pero puede leer cdr sin necesidad de modchips.
La PS2 TOOL, es bastante más grande que una PS2 normal debido al aumento de los
componentes con respecto a esta, entre las diferencias, destacan:
Sony proporciona a los desarrolladores esta máquina de tal forma que compilan su código y se
ejecuta sobre el hardware de esta PS2. Sony sólo proporciona el hardware y las librerias,así como
asesoría y ejemplos.
Existen una serie de entornos de desarrollo comerciales. Entre ellos los dos mas conocidos:
ProDG de Snsys. Tienen diferentes módulos, incluido uno muy interesante llamado pro-
view que permite mediante el uso del interfaz firewire conectar una PS2 modelo DTL-H
18
CAPÍTULO 4. MÉTODOS DE PROGRAMACIÓN DE LA PS2 19
Test Unit a un pc. Este modelo de PS2 tiene la peculiaridad de que es capaz de leer y
ejecutar cdr ( sin chip ni nada parecido dado que es una unidad de testeo para desarrolla-
dores). Snsys te proporciona con el proview los archivos de una iso que corre en esta PS2
a modo de programa monitor permitiendo la comunicación con el software que corre en el
PC. ¿Y para que demonios sirve esto? Pues muy fácil, para subir el código que tu compilas
directamente y ejecutarlo sin necesidad de grabar un cd por cada prueba. También tiene
heramientas de debug que redirigen la salida al lado del pc para facilitar el desarrollo.
Para tener acceso a estas herramientas es necesario ser desarrollador oficial de Sony y estar
registrado como tal.
un teclado usb
un ratón usb
El primero contiene el entorno de ejecución (RTE) y los manuales de la PS2 que Sony
suele incluir en el kit de desarrollo.
El kernel de Linux contiene drivers que ocultan el hardware e impiden el acceso directo a la IOP.
Sony proporciona solo los binarios de estos drivers por lo que existen limitaciones a la hora de
programar la PS2 con este kit. Por ejemplo estos drivers no proporcionan interfaz con el puerto
Firewire, por lo que es imposible de programar este puerto.
El Kit viene con el compilador de GNU gcc, las xfree y muchas otras utilidades. Por lo que
tenemos un completo entorno de desarrollo. Aunque los programas o juegos que se desarrollen
sobre el kit de Linux solo podrán ejecutarse en una PS2 que tenga el kit.
El procesador principal es un MIPS R5900[16], este procesador implementa todas las ins-
trucciones del MIPS III ISA, algunas del MIPS IV y un conjunto propietario de instruccio-
nes multimedia. Información sobre el conjunto de instrucciones y su uso se encuentran en
[17, 18]
Existen herramientas libres de desarrollo libres capaces de generar código para todos los proce-
sadores de la PS2. Estas herramientas son:
binutils Es una colección de herramientas multiplataforma para trabajar con ficheros ejecuta-
bles, entre las que destacan:
gcc Es la colección de compiladores de GNU. Estos compiladores son capaces de generar código
para una gran cantidad de plataformas. Nos interesa especialmente el compilador de C.
ps2lib Es una librería open-source para desarrollar directamente con la PS2. Esta librería ha
sido desarrollada a base de ingeniería inversa. La librería proporciona un gran número de
funciones básicas para acceder al hardware de la PS2. Como la PS2 tiene dos CPUs (EE e
IOP), la librería está formada por dos partes, cada una con funciones para una CPU.
Newlib Es la librería que implementa las funciones de estándar de C (libc) y las funciones ma-
temáticas (libm). Es una librería de Cygnus usada en muchos sistemas empotrados debido
a su pequeño tamaño que ha sido adaptada para la PS2.
Cuando comenzó la programación RAW de la PS2, para probar los programas que se estaban
desarrollando había que grabarlos en un CD y ejecutarlos con alguno de los métodos vistos
anteriormente. Esto hacía muy engorroso (y caro) el desarrollo. Con el tiempo han ido surgiendo
programas que mediante la conexión de la PS2 al PC permiten enviar los programas compilados
del PC a la PS2 para que esta la ejecute. De esta forma el proceso de desarrollo se ha dinamizado
bastante.
Existen tres programas de este tipo, uno para cada forma de conectar la PS2 con el PC[19]:
Pukklink/InLink, que usa la tarjeta de red que se encuentra en el kit de Linux para trans-
mitir los ejecutables.
En este capítulo vamos a ver como instalar el entorno de desarrollo para empezar a programar
la PS2. El entorno de desarrollo se compone de los compiladores cruzados de C y ensamblador
para el EE y el IOP. También compilaremos las binutils para que se puedan programar las uni-
dades vectoriales en ensamblador. Por último hay que instalar las librerías que nos facilitarán la
tarea de acceso al hardware.
El método de instalación descrito es para máquinas Unix, aunque también se puede instalar
en Windows usando el entorno Cygwin que simula un entorno Unix en Windows.
# cd /opt
# mkdir ps2dev
# cd ps2dev
# mkdir ee iop newlib ps2lib
22
CAPÍTULO 5. INSTALACIÓN DEL ENTORNO DE PROGRAMACIÓN RAW 23
A continuación crearemos el script ps2dev.sh que irá en /opt/ps2dev y que servirá para poner
las variables de entorno necesarias para compilar. Habrá que ejecutar este script antes de empezar
a programar. No es mala idea incluir las variables de entorno en el .bashrc para que estén siempre
cargadas. El contenido del script es el siguiente:
PS2DEV=/opt/ps2dev
EE=$PS2DEV/ee
IOP=$PS2DEV/iop
PS2LIB=$PS2DEV/ps2lib
NEWLIB=$PS2DEV/newlib
PATH=$PATH:$PS2DEV/bin:$EE/bin:$IOP/bin
export PS2DEV EE IOP PS2LIB NEWLIB PATH
# source /opt/ps2dev/ps2dev.sh
# tar xzvf gnu-ee-binutils-gcc-1.1.tar.gz
# cd gnu-ee-binutils-gcc
# ./configure --prefix=$EE --target=mips64r5900-sf-elf
# make LANGUAGES="c"
# make install
Esta versión tiene algunos problemas para compilar con los últimos compiladores, estos son los
cambios que he tenido que hacer para que compile en mi ordenador:
#include "rtl.h"
#include <sys/utime.h>
por:
#include <utime.h>
por:
int devstudioflag;
por:
#include "parse.h"
Creamos enlaces simbolicos a los programas recien compilados para que los nombres sean más
manejables:
# cd /opt/ps2dev/ee/bin
# ln -s mips64r5900-sf-elf-addr2line ee-addr2line
# ln -s mips64r5900-sf-elf-ar ee-ar
# ln -s mips64r5900-sf-elf-as ee-as
# ln -s mips64r5900-sf-elf-c++filt ee-c++filt
# ln -s mips64r5900-sf-elf-gasp ee-gasp
CAPÍTULO 5. INSTALACIÓN DEL ENTORNO DE PROGRAMACIÓN RAW 25
# ln -s mips64r5900-sf-elf-gcc ee-gcc
# ln -s mips64r5900-sf-elf-ld ee-ld
# ln -s mips64r5900-sf-elf-nm ee-nm
# ln -s mips64r5900-sf-elf-objcopy ee-objcopy
# ln -s mips64r5900-sf-elf-objdump ee-objdump
# ln -s mips64r5900-sf-elf-protoize ee-protoize
# ln -s mips64r5900-sf-elf-ranlib ee-ranlib
# ln -s mips64r5900-sf-elf-readelf ee-readelf
# ln -s mips64r5900-sf-elf-size ee-size
# ln -s mips64r5900-sf-elf-strings ee-strings
# ln -s mips64r5900-sf-elf-strip ee-strip
# ln -s mips64r5900-sf-elf-unprotoize ee-unprotoize
# cd libiberty
# sh ./configure --target=dvp-elf --prefix=$EE
# make all
# make install
# cd ../bfd
CAPÍTULO 5. INSTALACIÓN DEL ENTORNO DE PROGRAMACIÓN RAW 26
Ya solo queda generar los enlaces correspondientes con nombres más manejables:
# cd $EE/bin
# ln -s dvp-elf-addr2line dvp-addr2line
# ln -s dvp-elf-ar dvp-ar
# ln -s dvp-elf-as dvp-as
# ln -s dvp-elf-c++filt dvp-c++filt
# ln -s dvp-elf-gasp dvp-gasp
# ln -s dvp-elf-ld dvp-ld
# ln -s dvp-elf-nm dvp-nm
# ln -s dvp-elf-objcopy dvp-objcopy
# ln -s dvp-elf-objdump dvp-objdump
# ln -s dvp-elf-ranlib dvp-ranlib
# ln -s dvp-elf-readelf dvp-readelf
# ln -s dvp-elf-size dvp-size
# ln -s dvp-elf-strip dvp-strip
CAPÍTULO 5. INSTALACIÓN DEL ENTORNO DE PROGRAMACIÓN RAW 27
5.4. IOP
El procesador de la IOP está soportado por las utilidades estándar de las GNU, por lo que
usaremos el gcc[23] y las binutils bajadas del sitio de GNU[22].
# cd $IOP
# ln -s mipsel-sf-elfl-addr2line iop-addr2line
# ln -s mipsel-sf-elfl-ar iop-ar
# ln -s mipsel-sf-elfl-as iop-as
# ln -s mipsel-sf-elfl-gasp iop-gasp
# ln -s mipsel-sf-elfl-gcc iop-gcc
# ln -s mipsel-sf-elfl-ld iop-ld
# ln -s mipsel-sf-elfl-nm iop-nm
# ln -s mipsel-sf-elfl-objcopy iop-objcopy
CAPÍTULO 5. INSTALACIÓN DEL ENTORNO DE PROGRAMACIÓN RAW 28
# ln -s mipsel-sf-elfl-objdump iop-objdump
# ln -s mipsel-sf-elfl-ranlib iop-ranlib
# ln -s mipsel-sf-elfl-readelf iop-readelf
# ln -s mipsel-sf-elfl-size iop-size
# ln -s mipsel-sf-elfl-strings iop-strings
# ln -s mipsel-sf-elfl-strip iop-strip
También es necesario para compilar, un script para el ld que le indique la posición de inicio del
código ejecutable, el alineamiento de las secciones y algunos parámetros más, ya que los valores
por defecto del ld no son los correctos. Este fichero se llama linkfile y también viene con la demo.
El fichero se añada con -Tlinkfile al comando de linkado.
Tendremos que editar el Makefile para indicarle los nombres de nuestras utilidades. Habrá
que cambiar:
CPATH = ../ee-bin/bin/mips64r5900-sce-elf-
CAPÍTULO 5. INSTALACIÓN DEL ENTORNO DE PROGRAMACIÓN RAW 29
CC = $(CPATH)gcc.exe
VAS = $(CPATH)dvp-as.exe
AS = $(CPATH)as.exe
LD = $(CPATH)ld.exe
OBJCOPY = $(CPATH)objcopy.exe
por:
CPATH = $(EE)/bin
CC = $(CPATH)/ee-gcc
VAS = $(CPATH)/dvp-as
AS = $(CPATH)/ee-as
LD = $(CPATH)/ee-ld
OBJCOPY = $(CPATH)/ee-objcopy
Tambien hay que compilar con el compilador normal de nuestra máquina el fichero rawasm.c
que se usará para convertir una imagen de la demo a asm:
# make
Si todo ha ido bien, se habra generado el ejecutable main.elf. Podremos probar la demo con el
Naplink, si poseemos el cable apropiado o grabando el ejecutable junto con un system.cnf que
tendremos que generar en un CD y probándolo directamente.
Bibliografía
30
BIBLIOGRAFÍA 31