Dudas sobre piBacteria
Moderador: Fundadores
- neuro_999
- El infierno es su lugar
- Mensajes: 161
- Registrado: 18 Mar 2015, 19:03
Re: Dudas sobre piBacteria
Aqui te dejo el Kernel (es para funcionar si tienes el telcleator original de la plaquita de antonio que tenia un fallito e intercambiana el GPIO18 x el GPIO15
Si necesitas compilado para algo que has construido tu siguiendo los esquemas, tendria que recompilarlo para usar el GPIO18 porque sino te fallara una semifila de teclas.
Ya me contaras.
Si necesitas compilado para algo que has construido tu siguiendo los esquemas, tendria que recompilarlo para usar el GPIO18 porque sino te fallara una semifila de teclas.
Ya me contaras.
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
- zx81
- Demonio tercer orden
- Mensajes: 502
- Registrado: 19 Oct 2013, 16:27
- Ubicación: Valencia
- Has thanked: 15 times
- Been thanked: 6 times
- Contactar:
Re: Dudas sobre piBacteria
Gracias neuro_999 pero lo que buscaba no es un kernel.img, sino el pibBacteria.s. No sé porqué, el del repo de Antonio no consigo que funcione de ninguna manera. Es raro. Si puedes dejar el fuente te lo agradecería.
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek
Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator
John Sladek
Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator
- neuro_999
- El infierno es su lugar
- Mensajes: 161
- Registrado: 18 Mar 2015, 19:03
Re: Dudas sobre piBacteria
¿pero que es lo que no te funciona? Porque yo si compilo de pibacteria del repo de Antonio me funciona perfectamente. Has probado si te funciona el kernel.img que te he pasado en tu pi? xq si no te funciona tampoco no te vale de nada el fuente.
- zx81
- Demonio tercer orden
- Mensajes: 502
- Registrado: 19 Oct 2013, 16:27
- Ubicación: Valencia
- Has thanked: 15 times
- Been thanked: 6 times
- Contactar:
Re: Dudas sobre piBacteria
Pues carga el moon.mem (todo por defecto como está en el repo de Antonio) y se queda con la pantalla mal dibujada y el borde haciendo colorillos como si fuera una carga turbo.neuro_999 escribió:¿pero que es lo que no te funciona? Porque yo si compilo de pibacteria del repo de Antonio me funciona perfectamente. Has probado si te funciona el kernel.img que te he pasado en tu pi? xq si no te funciona tampoco no te vale de nada el fuente.
No he probado tu kernel.img porque se que ni siquiera va a arrancar. Resulta que yo cargo programas bare-metal usando u-boot. Y el bueno de u-boot lo deja todo preparadito para que arranque un kernel como si él no estuviera excepto por dos detalles, uno menor y otro muy, pero que muy mayor. El menor es que deja activo el "Strict Alignment Fault Checking". El mayor es que deja la tabla de excepciones, que debería estar en la dirección 0x00000000, donde Cristo perdió las alpargatas y, obviamente, no funciona.
Haciendo pruebas he arreglado los ejemplos de las "PracticasArm' de Antonio, pero quería probar también el piBacteria y no hay forma de que termine de funcionar. Por eso quería la versión apañada por ti, con alguno de los problemillas descritos solucionados.
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek
Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator
John Sladek
Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator
- antoniovillena
- Demonio segundo orden
- Mensajes: 1596
- Registrado: 02 Abr 2013, 19:06
- Been thanked: 1 time
Re: Dudas sobre piBacteria
Lo único que uso de la tabla de excepciones es la rutina IRQ
Esta rutina es la que escribe en la tabla de excepciones. A la entrada r2 vale 0. Tan sólo tienes que cambiar r2 con la dirección de la nueva tabla de excepciones.
Código: Seleccionar todo
ldr r0, irqh @IRQ vector
lsr r0, #2
orr r0, #0xea000000
str r0, [r2, #0x18]
- zx81
- Demonio tercer orden
- Mensajes: 502
- Registrado: 19 Oct 2013, 16:27
- Ubicación: Valencia
- Has thanked: 15 times
- Been thanked: 6 times
- Contactar:
Re: Dudas sobre piBacteria
La solución la tengo, porque he probado con varios de tus ejemplos que usan las interrupciones (INT & FIQ) y funciona de coña. Incluso se lo he notificado al autor de la librería Circle para que lo solucionara en su software, cosa que ya ha hecho.
Por describir el problema, hay un registro de CP15 que, si no se han seleccionado la posibilidad de meter la tabla de vectores en 0xFFFF0000, permite poner la tabla donde quieras. Es el registro VBAR, sección 3.2.43, página 253 del ARM1176JZF-S TRM. El caso es que u-boot lo toca y no está claro que ponga lo mismo en cada versión del bootloader así que yo he puesto, tanto en tus ejemplos como en piBacteria.s:
como primera línea de código después de la directiva ".text", aprovechándome de que r0 ya está a cero cuando se comienza la ejecución, cosa que sí respeta u-boot (comprobado).
El problema viene después, porque se queda como en un "paralís", pantalla mal dibujada y borde de muchos colores, como si cargara un turbo. Ni cambiando la variable fast ni cambiando la imagen usada se soluciona. Por eso tenía curiosidad por saber si las versiones apañadas por neuro_999 iban mejor. Y me encontré con que los .zip se corrompen. Genial.
Por describir el problema, hay un registro de CP15 que, si no se han seleccionado la posibilidad de meter la tabla de vectores en 0xFFFF0000, permite poner la tabla donde quieras. Es el registro VBAR, sección 3.2.43, página 253 del ARM1176JZF-S TRM. El caso es que u-boot lo toca y no está claro que ponga lo mismo en cada versión del bootloader así que yo he puesto, tanto en tus ejemplos como en piBacteria.s:
Código: Seleccionar todo
mcr p15, 0, r0, c12, c0, 0
El problema viene después, porque se queda como en un "paralís", pantalla mal dibujada y borde de muchos colores, como si cargara un turbo. Ni cambiando la variable fast ni cambiando la imagen usada se soluciona. Por eso tenía curiosidad por saber si las versiones apañadas por neuro_999 iban mejor. Y me encontré con que los .zip se corrompen. Genial.
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek
Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator
John Sladek
Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator
- neuro_999
- El infierno es su lugar
- Mensajes: 161
- Registrado: 18 Mar 2015, 19:03
Re: Dudas sobre piBacteria
A ver si el sabado que andare con el ordenata donde esta el pibacteria subo el fuente. Pero es el mismo de antonio simplemente añadiendole puerto kemstom y sonido de load y save.
Enviado desde mi ONE A2003 mediante Tapatalk
Enviado desde mi ONE A2003 mediante Tapatalk
- zx81
- Demonio tercer orden
- Mensajes: 502
- Registrado: 19 Oct 2013, 16:27
- Ubicación: Valencia
- Has thanked: 15 times
- Been thanked: 6 times
- Contactar:
Re: Dudas sobre piBacteria
Bueno, asunto resuelto. Aunque solo sirva para que quede constancia para el futuro, finalmente el otro problema es el bit1 del registro de CP15 c1, que u-boot deja activado y que es el 'Strict Alignment Fault Cheking'. Finalmente el inicio de piBacteria queda así:
Ya temía que u-boot modificara algún otro oscuro registro más y ponte a buscarlo, pero afortunadamente no es así. Con esas dos modificaciones se puede usar u-boot que es más cómodo y rápido (cargas las imágenes vía TFTP). Gracias a Antonio y a neuro_999 por sus sugerencias.
Código: Seleccionar todo
.text
iyi .req r0
mem .req r1
stlo .req r2
pcff .req r3
spfa .req r4
bcfb .req r5
defr .req r6
hlmp .req r7
arvpref .req r8
ix .req r9
@ Reset VBAR register modified by u-boot (added by zx81)
mcr p15, 0, r0, c12, c0, 0
@ Permito lecturas/escrituras desalineadas y cargo puntero a memoria
mrc p15, 0, r0, c1, c0, 0 @ read control register
orr r0, r0, #(1 << 22) @ set the U bit (bit 22)
bic r0, r0, #0x00000002 @ unset the A bit (bit 1) (added by zx81)
mcr p15, 0, r0, c1, c0, 0 @ write control register
ldr mem, memo
@ Esto es para configurar el buffer de video a 352x264x4
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek
Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator
John Sladek
Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator
- antoniovillena
- Demonio segundo orden
- Mensajes: 1596
- Registrado: 02 Abr 2013, 19:06
- Been thanked: 1 time
- zx81
- Demonio tercer orden
- Mensajes: 502
- Registrado: 19 Oct 2013, 16:27
- Ubicación: Valencia
- Has thanked: 15 times
- Been thanked: 6 times
- Contactar:
Re: Dudas sobre piBacteria
Compilarlo es fácil. Lo que me resultó trabajoso es generar una imagen que funcione por el método correcto. Si te atascas (lo dudo mucho) no pelees. Pregunta y tus dudas serán respondidas en la medida de lo posible, claro.antoniovillena escribió:Gracias a ti, zx81. Le echaré un vistazo al u-boot
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek
Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator
John Sladek
Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator