Página 1 de 8

πBacteria, emulador Bare Metal para la Raspberry Pi

Publicado: 23 Oct 2014, 06:13
por antoniovillena
¿Qué es un emulador Bare Metal? Es un emulador que corre directamente sobre la máquina, sin sistema operativo detrás.

¿Qué ventajas tiene? Que tienes toda la máquina con todos los recursos para tí, sin restricciones, y el arranque es inmediato.

¿Desventajas? Que a día de hoy no hay un driver de teclado USB en condiciones, así que no hay más remedio que conectarlo a un teclado de Spectrum por el puerto GPIO

¿Cómo se instala? Muy fácil, insertas la tarjeta SD donde tienes el SO de la Raspberry en tu PC y renombras kernel.img a kernel.bak. Te descargas de aquí kernel.img y lo guardas en la tarjeta SD, y luego insertas la tarjeta en la Raspberry. Cuando quieras volver al sistema operativo de antes, restauras kernel.bak a kernel.img.

Bajar la última versión de kernel.img pinchando aquí



¿Cómo conecto el teclado? Pues aquí dejo un esquema.

conectar_spectrum.png
conectar_spectrum.png (33.55 KiB) Visto 14221 veces


¿Funciona en la primera versión que sacaron de la Raspberry? De momento no, tendría que hacer otra versión separada porque los puertos están cambiados. Funciona en todos los demás modelos incluido el B+.

Solo veo el Basic, ¿cómo puedo cargar juegos? De momento no se puede, quiero poder cargar desde cinta pero antes tengo que sincronizar el emulador para que vaya al 100% de la velocidad. Si tenéis muchas ganas os puedo subir el kernel.img de algún juego de cartucho mientras tanto.

¿Para qué complicarse si puedes correr Fuse en la Raspberry? Este tipo de preguntas no las voy a contestar.

Es una versión alpha de un emulador así que no le pidáis más. Es el primer emulador Bare Metal para la Raspberry, con el tiempo sacarán más emuladores de este tipo y la gente cacharreará con ellos. Cabe dentro de la carcasa de un gomas y puede ir con la alimentación, el teclado y el puerto EAR. A pesar de que el arranque sea inmediato no deja de ser un emulador.

IMG_20141023_052322.jpg
IMG_20141023_052322.jpg (103.45 KiB) Visto 14221 veces


IMG_20141023_052310.jpg
IMG_20141023_052310.jpg (141.16 KiB) Visto 14239 veces

Re: πBacteria, emulador Bare Metal para la Raspberry Pi

Publicado: 23 Oct 2014, 07:46
por EdgeM
Bendito seas Antonio. Este tipo de proyectos me encantan :D

¿Está hecho en C o has tirado de ensamblador para ARM?

Por cierto, ¿cómo se sabe si tenemos un modelo de los primeros? Yo compré mi Pi casi al principio...

Re: πBacteria, emulador Bare Metal para la Raspberry Pi

Publicado: 23 Oct 2014, 07:58
por Zardoz
Que problema hay con el driver USB para el teclado ?

Re: πBacteria, emulador Bare Metal para la Raspberry Pi

Publicado: 23 Oct 2014, 08:15
por mcleod_ideafix
Zardoz escribió:Que problema hay con el driver USB para el teclado ?

Que hay que escribirlo :D

Al no haber SO detrás, todo el acceso a periféricos de la Pi tienes que hacerlo tú. Eso significa en la práctica coger el código fuente del kérnel de Linux para la Pi, y de ahí sacar:
- El código del driver para el USB host de la Pi
- El código del driver para USB HID

Leerlo, entenderlo, y a partir de ahí, escribir un driver de teclado. No es imposible, pero no es trivial.

Si la Pi fuese un PC y tuviera chipset de PC, podría incorporar emulación de los puertos 60h - 64h, y trabajar con el teclado así es muchísimo más fácil que el USB nativo.

Re: πBacteria, emulador Bare Metal para la Raspberry Pi

Publicado: 23 Oct 2014, 08:17
por Zardoz
Tomo nota

Re: πBacteria, emulador Bare Metal para la Raspberry Pi

Publicado: 23 Oct 2014, 08:58
por Zardoz
Y el código fuente? Lo tienes subido a github ?

Re: πBacteria, emulador Bare Metal para la Raspberry Pi

Publicado: 23 Oct 2014, 09:45
por antoniovillena
Zardoz escribió:Y el código fuente? Lo tienes subido a github ?


http://sourceforge.net/p/emuscriptoria/ ... iBacteria/

-- Actualizado 23 Oct 2014, 09:08 --

EdgeM escribió:Bendito seas Antonio. Este tipo de proyectos me encantan :D

¿Está hecho en C o has tirado de ensamblador para ARM?


100% ensamblador

EdgeM escribió:Por cierto, ¿cómo se sabe si tenemos un modelo de los primeros? Yo compré mi Pi casi al principio...


Los primeros disponían de 256Mb de RAM, fíjate en esta foto para ver los megas que tienes.

http://i.imgur.com/6gm8L.jpg

-- Actualizado 23 Oct 2014, 09:17 --

Cambian 3 pines entre la revisión 1.0 y el resto:

  • GPIO 0<->GPIO 2 (pin 3)
  • GPIO 1<->GPIO 3 (pin 5)
  • GPIO 21<->GPIO 27 (pin 13)

http://raspi.tv/wp-content/uploads/2014 ... inouts.png

Si cambiáis el código fuente por vuestra cuenta, los comandos para compilar son:

Código: Seleccionar todo

as -o tmp.o piBacteria.s
ld -e 0 -Ttext=0x8000 -o tmp.elf tmp.o
objcopy tmp.elf -O binary kernel.img


-- Actualizado 23 Oct 2014, 10:03 --

Tiene web propia, he subido una versión provisional.


http://πbacteria.speccy.org

Re: πBacteria, emulador Bare Metal para la Raspberry Pi

Publicado: 23 Oct 2014, 20:05
por wilco2009
Una pasada antonio. Siempre habia querido un emulador como este ya sea para pc o para arm.
Me parece una idea genial.

Re: πBacteria, emulador Bare Metal para la Raspberry Pi

Publicado: 23 Oct 2014, 20:38
por EdgeM
Gracias por la foto para diferenciar modelos... afortunadamente parece que tengo el de 512MB :D

¿Hay documentación para programar de esta manera o te lo has currado todo por tu cuenta?

Re: πBacteria, emulador Bare Metal para la Raspberry Pi

Publicado: 23 Oct 2014, 20:49
por jltursan
Impresionante, vaya partido que se le podría sacar a la Pi trabajando de esta forma :shock: