Recuperar una tarjeta que ya no se enumera
Qué significa de verdad «brickeada» en una tarjeta FPGA. Por qué un bitstream malo casi siempre se recupera por JTAG, y los pocos casos en los que una placa está realmente muerta.
Respuesta corta
Una tarjeta que deja de enumerarse después de un flasheo casi nunca es silicio muerto. Al encenderse, la FPGA carga su bitstream desde la flash SPI. Una imagen mala significa que la configuración nunca se completa, así que no aparece ningún endpoint PCIe. Pero JTAG no depende de lo que haya en la flash, así que el arreglo casi siempre es volver a flashear.
En esta página10
Qué significa aquí «brickeada»
En este montaje la palabra suele describir un síntoma, no un diagnóstico. La tarjeta ya no aparece como dispositivo PCIe, así que nada de lo que viene después funciona. Ese síntoma tiene una causa común y varias raras. La causa común es una flash con una imagen desde la que la FPGA no consigue configurarse. Eso deja el dispositivo sin configurar y, por tanto, invisible para el host. Sin configurar no es lo mismo que dañado. Una FPGA sin configurar es un chip esperando un bitstream válido, y darle uno es una operación normal.
La secuencia de encendido y dónde se para
Cinco etapas. Saber en cuál fallaste te dice si esto es un problema de flash, de asiento en el slot o de hardware.
- 1. Corriente del slot
- La tarjeta toma corriente del slot PCIe. Sin corriente no hay LED y no pasa nada más
- 2. Configuración
- La FPGA lee la flash SPI y carga el bitstream. Una imagen corrupta o parcial falla aquí
- 3. Done
- La configuración se completa y el diseño empieza a funcionar. Hasta este punto no hay ningún endpoint PCIe
- 4. Entrenamiento del enlace
- El enlace PCIe negocia con el host. Una tarjeta configurada que nunca entrena es un problema de asiento o de slot
- 5. Enumeración
- El host lee el espacio de configuración y el dispositivo aparece. Esta es la primera etapa que puede ver algo en Windows
Por qué JTAG sobrevive a un bitstream malo
JTAG es una interfaz de test y depuración implementada en el propio silicio. Arranca con el chip. Le da igual para qué modo de configuración esté cableada la placa y le da igual lo que haya en la flash. Esa es la propiedad sobre la que se apoya toda la vía de recuperación. La FPGA puede ser completamente incapaz de configurarse y seguir siendo accesible por JTAG. En la práctica, la herramienta carga por JTAG un pequeño bitstream auxiliar en la FPGA, y ese auxiliar le da una vía hasta la flash SPI para poder reescribirla. Que la tarjeta sea invisible por el lado PCIe no influye en nada de esto.
La vía de recuperación
Este es el procedimiento de flasheo de siempre, no un modo especial. Si pudiste flashear la tarjeta una vez, puedes volver a flashearla.
- Apaga del todo el PC de juego, confirma que la tarjeta está bien asentada y vuelve a encenderlo
- Pasa el cable USB al puerto JTAG de la tarjeta y a un puerto USB trasero del segundo PC
- Cierra todo lo que pueda estar ocupando el dispositivo USB: el software del lector, MemProcFS, cualquier otra herramienta de flasheo
- Abre la herramienta de flasheo y confirma que ve el dispositivo y que abre la cadena JTAG antes de elegir ningún archivo
- Selecciona el modelo de FPGA que coincide con el chip de la placa
- Flashea una imagen que sepas que es buena para esta placa exacta y este DNA ID, con el formato puesto en BIN
- Déjalo llegar hasta el final sin tocar la máquina
- Haz un arranque en frío del PC de juego, pasa el cable al puerto de datos y repite la prueba de conexión
Leer el síntoma
La pregunta útil no es si la tarjeta está brickeada, sino a qué etapa de la secuencia de encendido llegó. Estas filas asocian síntomas con etapas.
| Síntoma | Causa probable | Solución |
|---|---|---|
| Ningún LED con el PC de juego encendido | Etapa 1. No hay corriente en el slot: mal asentada, slot muerto o daño real en la placa | Vuelve a montarla en otro slot PCIe con la máquina apagada del todo. Si sigue sin encenderse ninguna luz en un slot que sabes que funciona, este es uno de los pocos casos de hardware de verdad |
| Los LED encienden, pero el dispositivo no aparece por ninguna parte en el host | Etapa 2. La FPGA nunca se configuró, lo que significa que el contenido de la flash está mal o incompleto | Vuelve a flashear por JTAG una imagen que sepas que es buena. Este es el caso común y tiene arreglo |
| La herramienta de flasheo no consigue abrir la cadena JTAG | Puerto equivocado, falta el driver CH347, un proceso ocupando el dispositivo o el modelo mal seleccionado | Puerto JTAG, instala el driver, cierra las demás herramientas, ejecútala como administrador y selecciona el modelo correcto. El acceso a la cadena no depende del contenido de la flash, así que esto no es un brick |
| El dispositivo aparece, pero como otra cosa o con un código de error | Etapa 5. La configuración salió bien, así que la imagen está funcionando: simplemente no es la imagen que querías | Confirma que flasheaste el archivo emitido para esta placa y vuelve a flashear el correcto. La tarjeta está sana |
| El flasheo termina y la tarjeta sigue invisible después de un arranque en frío | La imagen no corresponde a esta placa o a este DNA ID | Compara el nombre del archivo con tu pedido y confirma la clase de FPGA. Envía a soporte la salida de la herramienta en vez de flashear el mismo archivo por cuarta vez |
| Ayer funcionaba, hoy nada, y no ha habido ningún flasheo por medio | Casi nunca es el firmware. Suele ser el slot, el cable, el puerto USB o una tarjeta colgada | Apagado completo del PC de juego durante diez segundos y arranque en frío. Luego vuelve a montarla, luego cambia el cable. Volver a flashear no es el primer movimiento aquí |
Cuándo una tarjeta está muerta de verdad
Pasa, y tiene otra pinta. La causa habitual es un daño físico: un contacto PCIe doblado, un conector USB-C arrancado, un componente quemado o una placa que se montó en caliente en un slot con corriente. La firma es que el fallo está en la etapa 1 y no en la etapa 2. O no hay ningún LED en un slot que has demostrado que funciona con otra tarjeta, o hay una cadena JTAG que no consigues abrir. Ese segundo caso solo cuenta con el driver correcto, el puerto correcto y el modelo correcto seleccionado, en una tarjeta que tiene corriente con seguridad. Una flash con contenido corrupto no produce esos síntomas.
Antes de dar una tarjeta por muerta
Siete cosas. La mayoría de los bricks que nos reportan dejan de serlo en algún punto de esta lista.
- PC de juego apagado del todo durante diez segundos y arrancado en frío, no reiniciado
- Tarjeta vuelta a montar con el clip de retención cerrado y el soporte a ras
- Probada en un segundo slot PCIe
- Cable cambiado por uno de datos que sabes que funciona, a un puerto USB trasero y sin ningún hub por el camino
- Confirmado que estás en el puerto JTAG para flashear y en el de datos para leer
- Driver CH347 o WCH instalado, con el software del lector y MemProcFS cerrados
- Un intento limpio de volver a flashear la imagen correcta, dejándolo terminar sin interrupciones
Consejo
Qué enviarle a soporte
Di a qué etapa llegaste, con los términos de arriba. Si los LED encienden. Si la herramienta de flasheo consigue abrir la cadena JTAG. El nombre exacto del archivo que flasheaste y el modelo que seleccionaste. La salida completa de la herramienta, pegada y no resumida. Una foto de la placa donde se vea la serigrafía y la marca del chip FPGA. Tu ID de pedido. Con ese conjunto normalmente se responde a la pregunta en una sola respuesta en lugar de en cinco.
Preguntas sobre la recuperación
¿He destruido la FPGA al flashear la imagen equivocada?
Casi con total seguridad, no. Escribir una imagen mala deja a la FPGA incapaz de configurarse, y eso se ve como un dispositivo que falta. El silicio está intacto y JTAG sigue siendo accesible.
¿La tarjeta tiene que estar en el PC de juego para recuperarla?
Necesita corriente. En casi todas las placas eso significa montada en el PC de juego y con el PC de juego encendido. Algunas placas pueden alimentarse solo desde el puerto de flasheo: sigue la documentación de la tuya.
¿Puedo recuperarla sin JTAG?
En la práctica, no. La vía PCIe no está disponible precisamente porque la configuración falló, así que JTAG es la puerta de entrada. Por eso el puerto de flasheo existe como conector aparte.
¿Un flasheo de recuperación necesita una lectura nueva del DNA?
No. El DNA está en eFUSE y no le afecta nada de lo que escribas en la flash, así que la imagen que ya tienes sigue correspondiendo a la placa.
La herramienta dice que todo ha ido bien cada vez y la tarjeta sigue sin aparecer. ¿Ahora qué?
Deja de flashear. Una escritura correcta de una imagen compilada para otra placa u otro DNA se comporta exactamente así. Verifica el archivo contra tu pedido y lleva la salida de la herramienta a soporte.
Fuentes
El mapa de etapas y las filas de síntomas son nuestros. Salen de tarjetas que dejaron de funcionar en nuestro banco de pruebas y en los tickets.
- 01AMD/Xilinx UG910, Vivado Design Suite User Guide: Getting Started
programar un dispositivo y su flash de configuración por JTAG, la vía sobre la que se apoya toda la recuperación
docs.amd.com
Sigue leyendo
¿Sigues atascado? Abre un ticket en Discord
Todas las guías