Voy a postear esto en el foro para ir completándolo de a poco, todavía no cubre todo lo que quiero abarcar (crear isos booteables desde linux y otras cositas más), pero les va a servir para montar un entorno básico descargando el toolchain ya compilado y compilando el kos y los kos-ports. Ahí les va, por favor no escatimen en comentarios y sugerencias:
Instalar y configurar un entorno de desarrollo en Linux:
Bueno este tutorial esta destinado a configurar un entorno de desarrollo en Linux, similar al que podemos usar con el Dreamcast Development Enviroment.
Hay muchos tutoriales disponibles en internet (bueno no tantos), yo me basé en el de Dreamcast Scene, pero lo modifiqué un poco con el objetivo de que se parezca más al DDE (así la transición de Cygwin a Linux es más natural).
Como principio les explico que esto fué hecho sobre un Ubuntu 8.04, no se como funcionará sobre otras distribuciones (no debería ser muy diferente).
Muchos de los comandos aquí presentados pueden también hacerse de forma visual (como crear carpetas). Es indistinto.
Empezando el trabajo: Abran una consola de Linux (en Ubuntu pueden ir a aplicaciones, accesorios, terminal). Parece un poco tonta mi explicación pero la intención es que hasta el mas inexperto pueda seguir estos pasos.
Creando un directorio de trabajo:
Suponemos que queremos crear el directorio de trabajo dentro de nuestro home
mkdir /home/usuario/dreamcast
cd /home/usuario/dreamcast
Descargando el KOS:
En el directorio de trabajo, tipeen (mejor copien y peguen, menos trabajo):
git clone git://git.code.sf.net/p/cadcdev/kallistios kos
git clone git://git.code.sf.net/p/cadcdev/kos-ports kos-ports
Con eso se descarga la última revisión del KallistiOS (sistema operativo para Dreamcast) y los ports de librerías de desarrollo.
Compilando el Toolchain: Descarga
Hay varias razones por la que es muy recomendable compilar nuestra toolchain, y no descargarnos una versión binaria:
- La versión binaria está desfasada (ej: el binutils es el 2.15 y actualmente vamos por el 2.22)
- Los
binarios de las librerías que podemos obtener
no nos funcionarán si no compilamos nuestra toolchain.
- Además, si lo hacemos podremos después compilar el dc-tool ip/serial :)
Primero vamos a la carpeta del kos donde hay un script que nos facilita la vida:
cd kos/utils/dc-chain
sh -e download.sh
Se descarga unos 40 MB, a esperar un ratillo. Una vez descargados ejecutamos:
Compilando el Toolchain: Configuración
Ahora toca configurar el Makefile de la siguiente forma, ábranlo con su editor favorito:
Tendréis que cambiar:
- kos_root por vuestra carpeta inicial
- sh_prefix y arm_prefix son los directorios,
cambiar /opt/toolchains/dc/ por /usr/local/dc
- gcc_ver es la versión de GCC que compilará KOS. Las disponibles y recomendadas son 3.4.6, 4.5.2 y 4.7.0
- Si usáis GCC 4.7.0, debéis mantener
arm-eabi y no arm-elf.
sh_target=sh-elf
arm_target=arm-eabi
kos_root=/home/usuario/dreamcast
sh_prefix := /usr/local/dc/$(sh_target)
arm_prefix := /usr/local/dc/$(arm_target)
binutils_ver=2.22
gcc_ver=4.7.0
newlib_ver=1.20.0
gdb_ver=6.7.1
insight_ver=6.7.1
Guardad y salid del editor.
La carpeta del sh y arm pueden que no estén creadas. Antes, hemos de crear esas carpetas y darles permisos de escritura.
cd /usr/local/
sudo mkdir dc
sudo chmod 755 dc
sudo chown usuario:usuario dc
IMPORTANTE: aseguraros de crear estas dos carpetas ANTES de compilar!!!
sudo mkdir /usr/local/dc/sh-elf/sh-elf/include
sudo mkdir /usr/local/dc/sh-elf/sh-elf/include/sys
cd /home/usuario/dreamcast/kos/utils/dc-chain
Compilando el Toolchain: Compilación
Finalmente, nos situamos en el directorio "dc-chain" y escribid "make". Ahora toca esperar un buen rato, por lo que os podéis ir a tomar una vuelta :)
Si todo ha ido bien, felicidades, hoy es tu día de suerte!!! :D :D
Nota: Si falla la compilación y la queréis hacer de nuevo, es aconsejable deshacer primero los parches de KOS y luego reaplicarlos:
cd gcc-4.7.0
patch -R -p1 < /home/usuario/dreamcast/kos/utils/dc-chain/patches/gcc-4.7.0-kos.diff
cd newlib-1.20.0
patch -R -p1 < /home/usuario/dreamcast/kos/utils/dc-chain/patches/newlib-1.20.0.diff
Configurando el KOS: Basics
Copien el archivo environ.sh.sample de la carpeta
/home/usuario/dreamcast/kos/doc
a la carpeta
/home/usuario/dreamcast/kos
y cambienlé el nombre por environ.sh. Ábranlo para editarlo con su editor favorito.
Editen las siguientes lineas para que queden como les indico:
export KOS_BASE="/home/usuario/dreamcast/kos/"
export KOS_CC_BASE="/usr/local/dc/sh-elf"
export KOS_CC_PREFIX="sh-elf"
export DC_ARM_BASE="/usr/local/dc/arm-eabi"
export DC_ARM_PREFIX="arm-eabi"
NEW!! Configurando el KOS: Activar STACK TRACE: FRAME POINTERS
¿Más opciones? Pues sí jeje. Cuando un juego crashea (es decir, lanza una "exception"), KOS nos dice el estado de la máquina. Hay una serie de valores que nos interesan:
*
PC: Program Counter. Nos dice exactamente en qué punto terminó la ejecución.
*
Stack: La pila nos es muy útil, ya que indica de qué funciones venimos (es decir, en qué función se encuentra y tal).
Por defecto, KOS no tiene activado la traza de la pila. Aunque activándola se reduce un poco el rendimiento, vale la pena!
Para activarla:
Hay que editar el fichero environ.sh y cambiar el KOS_CFLAGS.
#export KOS_CFLAGS="-O2 -fomit-frame-pointer"
export KOS_CFLAGS="-O2 -DFRAME_POINTERS"
IMPORTANTE! : Tenéis que recargar el entorno de KOS! Lo mejor sería cerrar y volver a abir la ventana, para después hacer un "source environ.sh"
Si ya tenías KOS, tendréis que volver a recompilarlo.
Después, en vuestros Makefiles de los programas, aseguraros que se compila con -g (por defecto ya es así), y no se usa el -fomit-frame-pointers.
Configurando el KOS: Inicializar
Para inicializar las variables de entorno necesarias tienen que ejecutar lo siguiente:
Configurando el KOS: Compilar
Para compilar el KOS simplemente pónganse en el directorio raíz (con la consola, en nuestro caso /home/usuario/dreamcast/kos) y tipeen
Una vez finalizado vayan al directorio /home/usuario/dreamcast/kos-ports y también tipeen:
(siempre seguido de la tecla enter, no os olvidéis cheee).
¡Listo! Tenemos un toolchain básico completamente funcional.
NOTA: Cada vez que vayan a usar el toolchain DC tienen que ejecutar "source environ.sh", a menos que agreguen esas lineas a su archivo .bashrc dentro de su carpeta de usuario (por ejemplo /home/usuario/.bashrc, quedaría algo como "source /home/usuariol/dreamcast/kos/environ.sh")
NOTA 2: KOS 2.0.0 ya define la versión en la consola cuando ejecutamos un binario! (ejecuta el make_banner.sh durante la compilación)
Instalando LXDREAM:
Para probar lo que compilamos podemos usar el LXDREAM, simplemente entren al sitio web www.lxdream.org y pueden bajar el paquete para DEBIAN o los sources (y compilarlos).
http://www.lxdream.org/download.php
Enviando con el DC-TOOL
Ver apartado
COMPILAR DC-TOOL del TUTORIAL de DEPURACIÓN:
http://www.dreamcast.es/forum/viewthr...ad_id=1460
Uso: Si usamos la ip 0.0.0.0, antes de enviar un binario hay que hacer un arp de la siguiente forma:
Nota: Substituid 10.0.0.3 por una dirección IP libre de vuestra red, y 00:11:22:33:44:55 por la MAC que os da el BBA al poner el cd en la DC. En entornos Mac OS X, antes debéis editar la configuración de red de vuestra tarjeta Ethernet y ponerla en modo manual, sin DHCP, y en el rango adecuado que le queréis asignar.
sudo arp -s 10.0.0.3 00:11:22:33:44:55
Ahora ya sólo nos queda enviar los binarios unscrambleados:
./dc-tool-ip -x "ruta relativa binario" -t 10.0.0.3 -i file.iso
El parámetro i sólo lo usamos si queremos que los datos se lean desde el PC y no desde el cd de la Dreamcast. Un comando rápido para crear un iso:
mkisofs -r -J -o nombre.iso Carpeta_de_los_ficheros
Crear imágenes CDI "a la bootdreams"
Ver apartado
¡Yo controlo! Manejar imágenes CDI por Terminal "like a boss" :) :
http://www.dreamcast.es/forum/viewthr...ad_id=2147