Recovery with USB-Blaster and Mac or Linux

This commit is contained in:
kounch 2023-10-11 20:41:11 +02:00
parent 1a4a2bc431
commit d4468686ba
4 changed files with 155 additions and 17 deletions

Binary file not shown.

Binary file not shown.

View File

@ -3109,7 +3109,7 @@ image:img/middleboardtop.jpg[scaledwidth=40%] image:img/middleboardbottom.jpg[sc
==== Recuperación vía USB
En algunas situaciones puede ser necesario reinstalar el firmaware de arranque (bootstrap) de algún https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html%23rp2040-device[microcontrolador RP2040] de la tarjeta.
En algunas situaciones puede ser necesario reinstalar el firmware de arranque (bootstrap) de algún https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html%23rp2040-device[microcontrolador RP2040] de la tarjeta.
*Material necesario*:
@ -3405,8 +3405,6 @@ Notar que se pueden acumular varias órdenes en una única línea de comandos. P
<<<
<<<
=== Recuperación del firmware
En algunos casos (por ejemplo al instalar un core experimental o hacer una actualización del core de ZX Spectrum o la BIOS) puede suceder que el ZXTRES deje de arrancar. Se encienden los LEDs pero no hay imagen ni responde a las distintas combinaciones de teclado para acceder a la BIOS, etc.
@ -3415,10 +3413,13 @@ En esta situación, existen diferentes métodos de recuperación que permiten vo
==== Preparación del cableado
En los siguientes pasos de recuperación se habla de conectar cables puente o USB-Blaster a la placa de ZXTRES. Para ello, usar la siguiente imagen como referencia.
En los siguientes pasos se habla de conectar cables puente o USB-Blaster a la placa de ZXTRES. Para ello, usar las siguientes imágenes como referencia.
[.text-center]
image:img/jtagzxtres.jpg[scaledwidth=80%]
image:img/jtagzxtres.jpg[scaledwidth=40%]
[.text-center]
image:img/usbblasterzxtres.jpg[scaledwidth=60%]
[WARNING]
====
@ -3427,6 +3428,135 @@ image:img/jtagzxtres.jpg[scaledwidth=80%]
<<<
==== Recuperación usando macOS o Linux y USB-Blaster
*Material necesario*:
- Sistema Operativo Linux o macOS, en una máquina física o en una máquina virtual, con conexión USB y acceso a internet (únicamente para descargar el software)
- Adaptador USB-Blaster
- Tarjeta microSD para el ZXTRES con la primera partición en formato FAT16 o FAT32
- Teclado y monitor para conectar el ZXTRES
*Software necesario*:
- Imagen Flash y recovery para ZXTRES, del https://github.com/zxtres/cores/tree/main/recovery[repositorio oficial de Github]. Notar que existe una descarga distinta para cada tipo de dispositivo:
** `recovery_a35.zip` para ZXTRES
** `recovery_a100.zip` para ZXTRES+
** `recovery_a200.zip` para ZXTRES++
- En el caso de Linux, además, hace falta un fichero de reglas de udev https://github.com/trabucayre/openFPGALoader/blob/master/99-openfpgaloader.rules[disponible aquí].
*Pasos a seguir*:
. Instalar https://openocd.org[Open On-Chip Debugger (OpenOCD)] en el sistema usando el gestor de paquetes correspondiente. Por ejemplo, para Arch Linux:
[source,shell]
----
pacman -S openocd
----
Para Debian Linux:
[source,shell]
----
apt-get install openocd
----
Para macOS (usando https://brew.sh[Homebrew]):
[source,shell]
----
brew install open-ocd
----
[start=2]
. Sólo en el caso de Linux, añadir permisos a los usuarios para poder acceder al programador JTAG, para ello, ejecutar estos comandos para copiar el fichero de reglas y activarlo:
[source,shell]
----
groupadd plugdev
sudo cp 99-openfpgaloader.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger
usermod -a $USER -G plugdev
----
<<<
[start=3]
. Conectar el USB-Blaster al ordenador, y los cables correspondientes al ZXTRES <<#_preparación_del_cableado,tal y como se explica anteriormente>>. Si ya estuviera conectado, desconectar y volver a conectar para asegurarse de que se activan las reglas de udev.
. Obtener el fichero `recovery.bit` del https://github.com/zxtres/cores/tree/main/recovery[repositorio principal de Github]. En nuestro ejemplo, se dejará en `/home/zxtres/unbrick/` (y en `/Users/zxtres/unbrick/` en el caso de macOS).
. Encender el ZXTRES.
. Asegurarse de que se está en el directorio donde se encuentra el archivo `recovery.bit`, y lanzar el comando que carga la BIOS en modo recuperación
En Linux:
[source,shell]
----
cd /home/zxtres/unbrick
sudo openocd -f /usr/share/openocd/scripts/interface/altera-usb-blaster.cfg -f /usr/share/openocd/scripts/cpld/xilinx-xc7.cfg -c "init; pld load 0 recovery.bit;"
----
En macOS:
[source,shell]
----
cd /Users/zxtres/unbrick
openocd -f /opt/homebrew/share/openocd/scripts/interface/altera-usb-blaster.cfg -f /opt/homebrew/share/openocd/scripts/cpld/xilinx-xc7.cfg -c "init; pld load 0 recovery.bit;"
----
[TIP]
====
Recordar reemplazar en los comandos anteriores `recovery.bit` por el nombre del fichero adecuado para la placa a recuperar.
====
<<<
[start=7]
. Si todo funciona correctamente, se verá cómo cambia el estado de los LED de la FPGA y se ve la imagen de la BIOS en el monitor.
En el caso de que no se vea imagen, y si no se está utilizando DisplayPort, pulsar `Bloq. Despl.`: para cambiar entre modo de video compuesto y VGA, por si acaso la BIOS ha arrancado en un modo que no corresponde a la conexión del monitor.
[.text-center]
image:img/recovery.png[scaledwidth=70%]
[start=8]
. Insertar en el ZXTRES la tarjeta microSD con la primera partición en formato FAT16 o FAT32, y en la que habremos copiado el fichero `FLASH.ZX3` descargado anteriormente.
. Desconectar el cable USB-Blaster.
<<<
[start=10]
. Elegir la opción `Upgrade Flash from SD`. Pulsar Enter, elegir `Yes`, y pulsar Enter de nuevo para comenzar el proceso que graba de nuevo la Flash.
[.text-center]
image:img/recovery2.png[scaledwidth=70%]
[WARNING]
====
Este proceso sustituirá todos los cores instalados, la BIOS, así como las ROMs de ZX Spectrum y la configuración por lo que haya en la imagen, y no se puede deshacer.
====
[TIP]
====
Recordar que también es posible navegar por las opciones de la BIOS utilizando un mando conectado en el puerto derecho.
====
[start=11]
. Tras unos minutos, el proceso finalizará, y podremos comprobar como, al apagar y encender, el ZXTRES vuelve a arrancar correctamente.
[NOTE]
====
Si no se obtiene imagen, y no se está utilizando DisplayPort, pulsar de nuevo `Bloq. Despl.` para cambiar entre modo de video compuesto y VGA. En este caso, sería necesario acceder a la BIOS y cambiar el <<#_advanced, ajuste avanzado correspondiente>> para indicar la configuración de nuestro monitor.
====
<<<
==== Recuperación usando una Raspberry Pi
*Material necesario*:
@ -3469,6 +3599,17 @@ rm -rf ./openocd-code
<<<
[start=3]
. Añadir permisos a los usuarios para poder acceder al programador JTAG, para ello, descargar el fichero de reglas https://github.com/trabucayre/openFPGALoader/blob/master/99-openfpgaloader.rules[`99-openfpgaloader.rules`] y ejecutar estos comandos:
[source,shell]
----
groupadd plugdev
sudo cp 99-openfpgaloader.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger
usermod -a $USER -G plugdev
----
[start=4]
. Conectar el USB-Blaster o los cables puente para GPIO <<#_preparación_del_cableado,tal y como se explica anteriormente>>. Si se va a hacer la conexión usando GPIO, abrir la carcasa del ZXTRES y conectar las líneas de JTAG de la FPGA (`TMS`, `TDI`, `TDO`, `TCK` y `GND`), con los cables, a los pines https://es.wikipedia.org/wiki/GPIO[GPIO] de la Raspberry Pi.
Si se hace conexión vía GPIO, tomar nota de los pines elegidos, teniendo cuidado de conectar `GND` con `GND`.
@ -3500,12 +3641,9 @@ En este ejemplo, se utilizarán los pines `31`, `33`, `35`, `37` y `39` (corresp
|`39`
|===
[start=4]
[start=5]
. Copiar en la Raspberry Pi el fichero `recovery_axx.bit` obtenido anteriormente del https://github.com/zxtres/cores/tree/main/recovery[repositorio principal de Github]. En nuestro ejemplo, se dejará en `/home/pi/zxtres/unbrick/`
<<<
[start=5]
. Para la conexión usando GPIO, realizar una copia del archivo de configuración de Open OCD, en el mismo lugar donde está `recovery.bit`. Este paso no es necesario si se usa USB-Blaster.
[source,shell]
@ -3513,7 +3651,7 @@ En este ejemplo, se utilizarán los pines `31`, `33`, `35`, `37` y `39` (corresp
cp /usr/local/share/openocd/scripts/interface/raspberrypi2-native.cfg /home/pi/zxtres/unbrick/
----
[start=6]
[start=7]
. Para la conexión vía GPIO, editar la copia de `raspberrypi2-native.cfg` actualizando `bcm2835gpio_jtag_nums` (y descomentando, si fuera necesario), según como se haya hecho la conexión entre JTAG y GPIO en la línea `bcm2835gpio_jtag_nums`. En nuestro ejemplo:
[source]
@ -3522,7 +3660,7 @@ cp /usr/local/share/openocd/scripts/interface/raspberrypi2-native.cfg /home/pi/z
bcm2835gpio_jtag_nums 26 6 13 19
----
[start=7]
[start=8]
. Comentar, si no lo está, la línea `bcm2835gpio_swd_nums` (de nuevo, no necesario si la conexión es con USB-Blaster):
[source]
@ -3530,7 +3668,7 @@ bcm2835gpio_jtag_nums 26 6 13 19
#bcm2835gpio_swd_nums 11 25
----
[start=8]
[start=9]
. Añadir, al final, la línea `adapter speed 250` (no necesario para uso con USB-Blaster):
[source]
@ -3538,12 +3676,12 @@ bcm2835gpio_jtag_nums 26 6 13 19
adapter speed 250
----
[start=9]
[start=10]
. Encender el ZXTRES
<<<
[start=10]
[start=11]
. Asegurarnos de que estamos en el directorio donde se encuentra el archivo `recovery_axx.bit`, y lanzar el comando que carga la BIOS en modo recuperación, indicando, si fuera necesario, la ruta al archivo `raspberrypi2-native.cfg` que habíamos editado anteriormente
Para conexión vía GPIO:
@ -3567,7 +3705,7 @@ sudo openocd -f /usr/local/share/openocd/scripts/interface/altera-usb-blaster.cf
Recordar reemplazar en los comandos anteriores `recovery_axx.bit` por el nombre del fichero adecuado para la placa a recuperar.
====
[start=11]
[start=12]
. Si todo va bien, veremos cómo cambia el estado de los LED de la FPGA y veremos la imagen de la BIOS en el monitor.
En el caso de que no se vea imagen, y si no se está utilizando DisplayPort, pulsar `Bloq. Despl.`: para cambiar entre modo de video compuesto y VGA, por si acaso la BIOS ha arrancado en un modo que no corresponde a la conexión del monitor.
@ -3577,7 +3715,7 @@ image:img/recovery.png[scaledwidth=70%]
<<<
[start=12]
[start=13]
. Insertar en el ZXTRES la tarjeta SD con la primera partición en formato FAT16 o FAT32, y en la que habremos copiado el fichero `FLASH.ZX3` descargado anteriormente.
. Si se está utilizando USB-Blaster, desconectar el cable.
@ -3592,7 +3730,7 @@ image:img/recovery2.png[scaledwidth=70%]
Este proceso sustituirá todos los cores instalados, la BIOS, así como las ROMs de ZX Spectrum y la configuración por lo que haya en la imagen, y no se puede deshacer.
====
[start=15]
[start=16]
. Tras unos minutos, el proceso finalizará, y podremos comprobar como, al apagar y encender, el ZXTRES vuelve a arrancar correctamente.
[NOTE]

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 KiB