Core alternativo de Kyp

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Core de Spectrum alternativo

Mensaje por antoniovillena » 07 Sep 2016, 23:08

jepalza escribió:Eso es mas liante de explicar. Básicamente, necesitas crear un MCS que es el que se graba en la flash. Se crea en el Impact. A groso modo (explicarlo bien lo dejo para mañana) se trata de hacer "boundary scan" (todo dentro de impact), seleccionamos el BIT mezclado, picamos en la flash a trazos que sale dibujada, y ahí se complica. Debemos elegir "single spi" o algo parecido, elegir una de 8mbits, pulsar la flecha verde para pasarlo al centro, elegir el lugar donde irá el MCS creado, y listo por ese lado.
Ahora, picamos en "create PROM file", y elegimos el bit nuevamente. Nos crea el MCS propiamente. Ya podemos ir a "boundary scan" y picar abajo a la izquierda, donde pone "program", elegimos el MCS, le decimos el tipo que es de la lista que sale (yo uso la mas simple M25P80 o algo asi), y damos a programar.
De los .MCS dejamos de dar soporte por varias razones. Un .MCS te machaca toda la flash (no te permite grabar partes de flash). Son muy lentos a la hora de grabarse. Necesitan una configuración muy específica (seleccionar el modelo de flash, grabarse a 4x). Requiren herramientas específicas para mezclar/modificar. Y un largo etcétera.

Si necesitas grabar toda la flash el procedimiento es el siguiente:
-Cargas el fichero recovery.bit, que incluye su propio firmware (funciona aunque la flash esté totalmente borrada).
-Desde ese firmware, y con el archivo FLASH.ZX1 en la SD procedes a upgradear toda la flash.

Avatar de Usuario
Quest
Mensajes: 900
Registrado: 27 Sep 2015, 00:20

Re: Core de Spectrum alternativo

Mensaje por Quest » 07 Sep 2016, 23:12

Kyp escribió: Por cierto, una pregunta, estoy mirando como hacerlo pero no lo veo. Cuando le ponga al módulo del teclado la combinación de teclas para el Hard-Reset... ¿Cómo hago el hard-reset? Me refiero a hacer que se borre mi core y arranque el firmware.
Para eso simplemente, copia en tu proyecto el archivo que preparé para ello: multiboot_v4.v, lo tienes en muchos de nuestros cores ya incluido, en los fuentes. No lo cojas de los fuentes del core de spectrum, cogelo de otros (bbc micro, appleII...), porque estos llevan ya "hard-coded" la dirección de la spi para el arranque del core principal y luego crea la instancia de la entidad MULTIBOOT en tu top module. Envía un 1 al pin de REBOOT cuando quieras hacer el hard-reset, y voila.

En realidad lo que hace dicho módulo es usar la primitiva ICAP de la FPGA para indicarle mediante comandos, la escritura de ciertos registros especiales de la FPGA (sólo funciona con Spartan-6, ninguna otra tiene esa opción específica, que yo sepa), la posición de la SPI flash donde debe cargar el nuevo biststream para su auto-reconfiguración, y los comandos SPI que debe usar para ello. En nuestro caso (hard-reset), le proporcionamos la dirección de la flash donde está el bitstream del core de Spectrum oficial del ZX-UNO, y mandamos el comando de reset para que se reconfigure y arranque como si acabáramos de darle corriente.
antoniovillena escribió: Lo más cómodo es que escribas machacando un bitstream existente, por elemplo el 9. Las direcciones de los bitstreams dentro de la flash son [...]
Dado que le están aconsejando que concatene datos al bitstream, no va a ocupar lo mismo que un bitstream normal, y por tanto ese método no sirve. Ha de lograrlo de otro modo.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Core de Spectrum alternativo

Mensaje por antoniovillena » 07 Sep 2016, 23:31

Quest escribió:Dado que le están aconsejando que concatene datos al bitstream, no va a ocupar lo mismo que un bitstream normal, y por tanto ese método no sirve. Ha de lograrlo de otro modo.
Entonces desaconsejo que concatene datos al bitstream, ya que de ocupar más de un bitstream estarías invadiendo el espacio del siguiente bitstream, y en el caso del último bitstream también datos de ROMs de Spectrum. Hay 2 formas no invasivas de hacer esto:
  • Usas compresión de bitstream, con lo cual el bitstream ocupará menos de 336K. Así puedes usar el restante para datos. Desventaja: no sabes cuánto te va a sobrar y a medida que ocupes la FPGA te sobrará menos.
  • Ocupas el hueco de otro bitstream completo para datos. Así tienes 336K para ti y no te complicas. Yo creo que es la mejor opción, aunque necesites 2 bitstreams para tu core. Tienes un fichero .ZX1 de 336K de datos para ti solito, con una dirección fija dentro de la Flash y que puedes editar como quieras (con un editor hexadecimal) mientras mantengas el tamaño de 336K

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Core de Spectrum alternativo

Mensaje por antoniovillena » 07 Sep 2016, 23:34

También puedes usar las propias ROMs que trae el ZX-Uno. El formato de la FLASH está en la wiki:

http://www.zxuno.com/wiki/index.php/Boot_Firmware

Avatar de Usuario
jepalza
Mensajes: 613
Registrado: 02 Oct 2015, 18:52

Re: Core de Spectrum alternativo

Mensaje por jepalza » 08 Sep 2016, 06:55

antoniovillena escribió: De los .MCS dejamos de dar soporte por varias razones. Un .MCS te machaca toda la flash (no te permite grabar partes de flash). Son muy lentos a la hora de grabarse. Necesitan una configuración muy específica (seleccionar el modelo de flash, grabarse a 4x). Requiren herramientas específicas para mezclar/modificar. Y un largo etcétera.

Si necesitas grabar toda la flash el procedimiento es el siguiente:
-Cargas el fichero recovery.bit, que incluye su propio firmware (funciona aunque la flash esté totalmente borrada).
-Desde ese firmware, y con el archivo FLASH.ZX1 en la SD procedes a upgradear toda la flash.
No sabía eso, llevo tiempo desconectado. Pero ese método, entiendo, que solo sirve con el core multiboot del ZXUNO instalado, y eso ¿ya permite meter nuevos cores puros que se lo "comen todo"? (o sea, no preparados para el ZXUNO)

Tendré que probarlo, pero de momento, mientras acabo el BombJack no cambio de método, por que me lio.

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Core de Spectrum alternativo

Mensaje por antoniovillena » 08 Sep 2016, 12:17

jepalza escribió: No sabía eso, llevo tiempo desconectado. Pero ese método, entiendo, que solo sirve con el core multiboot del ZXUNO instalado, y eso ¿ya permite meter nuevos cores puros que se lo "comen todo"? (o sea, no preparados para el ZXUNO)

Tendré que probarlo, pero de momento, mientras acabo el BombJack no cambio de método, por que me lio.
Claro. El core de spectrum, el firmware y las ROMs deben respetarse. A cambio tienes disponibles 8 cores que se lo "comen todo". Y sin necesidad del cable USB JTAG, por lo que todos los backers podrán probarlo.

Ahora bien, nada te impide crear un .mcs y hacerlo a tu manera. Puedes subir ese .mcs y que los que tengamos cable USB quizás probemos. Digo quizás porque previamente hay que hacer un backup de toda la flash y posteriormente una recuperación.

Avatar de Usuario
carmeloco
Mensajes: 751
Registrado: 25 Dic 2015, 12:02

Re: Core de Spectrum alternativo

Mensaje por carmeloco » 08 Sep 2016, 12:26

antoniovillena escribió:
jepalza escribió: No sabía eso, llevo tiempo desconectado. Pero ese método, entiendo, que solo sirve con el core multiboot del ZXUNO instalado, y eso ¿ya permite meter nuevos cores puros que se lo "comen todo"? (o sea, no preparados para el ZXUNO)

Tendré que probarlo, pero de momento, mientras acabo el BombJack no cambio de método, por que me lio.
Claro. El core de spectrum, el firmware y las ROMs deben respetarse. A cambio tienes disponibles 8 cores que se lo "comen todo". Y sin necesidad del cable USB JTAG, por lo que todos los backers podrán probarlo.

Ahora bien, nada te impide crear un .mcs y hacerlo a tu manera. Puedes subir ese .mcs y que los que tengamos cable USB quizás probemos. Digo quizás porque previamente hay que hacer un backup de toda la flash y posteriormente una recuperación.
Bueno, el .mcs se puede convertir a .ZX1 con srec_cat.exe con la siguiente orden:

Código: Seleccionar todo

srec_cat archivo.mcs -Intel -o FLASH.ZX1 -binary
Al menos, los .mcs del :zxuno: . Otros creados de otra forma no lo se...
Última edición por carmeloco el 08 Sep 2016, 16:59, editado 1 vez en total.

Avatar de Usuario
jepalza
Mensajes: 613
Registrado: 02 Oct 2015, 18:52

Re: Core de Spectrum alternativo

Mensaje por jepalza » 08 Sep 2016, 14:44

Entonces, Antonio, este "finde" quito la Flash "vieja-80" y pongo la "nueva-32" , la que me permite multicores a "punta-pala" y haré como dices.
Ya ves, esto es lo que tiene desconectarse unos meses, que se pierde uno lo mejor de la infancia.

Avatar de Usuario
Kyp
Mensajes: 240
Registrado: 18 May 2016, 20:16

Re: Core de Spectrum alternativo

Mensaje por Kyp » 08 Sep 2016, 16:31

Uff, demasiada información :veoestrellas: Iré procesándola poco a poco.

Creo que la opción de reemplazar un bitstream e ir tirando de las ROMs que ya están del core de Spectrum, al fin y al cabo son las que necesito, es la más atractiva.

Gracias a todos por la ayuda :D

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Core de Spectrum alternativo

Mensaje por mcleod_ideafix » 14 Sep 2016, 01:18

Kyp escribió:Por cierto, una pregunta, estoy mirando como hacerlo pero no lo veo. Cuando le ponga al módulo del teclado la combinación de teclas para el Hard-Reset... ¿Cómo hago el hard-reset? Me refiero a hacer que se borre mi core y arranque el firmware.
Ve al repositorio y entra en el core del Jupiter ACE (cores\jupiter_ace_spartan6\test4). Dentro de common verás varios archivos Verilog. Uno de ellos es multiboot.v . Llévatelo e intégralo en tu proyecto. El modulo no puede ser más simple: necesita un reloj de no más de 20MHz (clk_icap), y una señal activa a nivel bajo (mrst_n). Cuando mrst_n se ponga a nivel bajo, se activa el multiboot de la Spartan y volverá a cargar el core principal.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Responder