Como recuperar uma placa que não enumera
O que “brickada” realmente significa numa placa com FPGA. Por que um bitstream ruim quase sempre tem recuperação por JTAG, e o conjunto estreito de casos em que a placa está mesmo morta.
Resposta curta
Uma placa que para de enumerar depois de uma gravação quase nunca é silício morto. Ao ligar, o FPGA carrega o bitstream da flash SPI. Uma imagem ruim significa que a configuração nunca termina, então nenhum endpoint PCIe aparece. Só que o JTAG não depende do que está na flash, então a correção quase sempre é regravar.
Nesta página10
O que “brickada” quer dizer aqui
Nesta stack a palavra costuma descrever um sintoma, não um diagnóstico. A placa deixou de aparecer como dispositivo PCIe, então nada dali para frente funciona. Esse sintoma tem uma causa comum e várias raras. A comum é uma flash com uma imagem a partir da qual o FPGA não consegue se configurar. Isso deixa o dispositivo sem configuração e, portanto, invisível para o host. Sem configuração não é o mesmo que danificado. Um FPGA sem configuração é um chip esperando um bitstream válido, e fornecer um é uma operação normal.
A sequência de inicialização, e onde ela para
Cinco estágios. Saber em qual deles você falhou diz se isso é problema de flash, de encaixe ou de hardware.
- 1. Energia do slot
- A placa puxa energia do slot PCIe. Sem energia não há LED aceso e nada mais acontece
- 2. Configuração
- O FPGA lê a flash SPI e carrega o bitstream. Uma imagem corrompida ou parcial falha aqui
- 3. Done
- A configuração termina e o projeto começa a rodar. Até este ponto não existe endpoint PCIe
- 4. Treinamento do link
- O link PCIe negocia com o host. Uma placa configurada que nunca treina é problema de encaixe ou de slot
- 5. Enumeração
- O host lê o espaço de configuração e o dispositivo aparece. Este é o primeiro estágio que algo no Windows consegue ver
Por que o JTAG sobrevive a um bitstream ruim
O JTAG é uma interface de teste e depuração implementada no próprio silício. Ele sobe junto com o chip. Não se importa com o modo de configuração para o qual a placa está strapada e não se importa com o que está na flash. É essa propriedade que sustenta todo o caminho de recuperação. O FPGA pode estar completamente incapaz de se configurar e mesmo assim ser alcançável por JTAG. Na prática, a ferramenta carrega no FPGA, por JTAG, um pequeno bitstream auxiliar. Esse auxiliar dá a ela um caminho até a flash SPI, e aí a flash pode ser reescrita. A placa estar invisível do lado PCIe não muda nada disso.
O caminho de recuperação
Este é o procedimento normal de gravação, e não um modo especial. Se você conseguiu gravar a placa uma vez, consegue gravar de novo.
- Desligue o PC de jogo por completo, confirme que a placa está bem encaixada e ligue de novo
- Passe o cabo USB para a porta JTAG da placa e para uma porta USB traseira do segundo PC
- Feche tudo que possa estar segurando o dispositivo USB — o leitor, o MemProcFS, qualquer outra ferramenta de gravação
- Abra a ferramenta de gravação e confirme que ela enxerga o dispositivo e abre a cadeia JTAG antes de escolher um arquivo
- Selecione o modelo de FPGA que corresponde ao silício da placa
- Grave uma imagem comprovadamente boa para esta placa exata e este DNA ID, com o formato em BIN
- Deixe rodar até o fim sem tocar na máquina
- Dê um boot a frio no PC de jogo, passe o cabo para a porta de dados e rode de novo um teste de conexão
Como ler o sintoma
A pergunta útil não é se a placa está brickada, e sim até que estágio da sequência de inicialização ela chegou. Estas linhas ligam sintomas a estágios.
| Sintoma | Causa provável | Solução |
|---|---|---|
| Nenhum LED aceso com o PC de jogo ligado | Estágio 1. Sem energia no slot: mal encaixada, slot morto ou dano real na placa | Reencaixe em outro slot PCIe com a máquina totalmente desligada. Se continuar sem luz num slot comprovadamente bom, este é um dos poucos casos de hardware de verdade |
| LEDs acesos, mas nenhum dispositivo em lugar nenhum do host | Estágio 2. O FPGA nunca se configurou, o que significa conteúdo de flash ruim ou incompleto | Regrave por JTAG uma imagem comprovadamente boa. Este é o caso comum e ele tem recuperação |
| A ferramenta de gravação não abre a cadeia JTAG | Porta errada, driver CH347 ausente, um processo segurando o dispositivo, ou modelo errado selecionado | Porta JTAG, instale o driver, feche as outras ferramentas, rode como administrador e selecione o modelo certo. O acesso à cadeia independe do conteúdo da flash, então isso não é um brick |
| O dispositivo aparece, mas como outra coisa, ou com código de erro | Estágio 5. A configuração deu certo, então a imagem está rodando — ela só não é a imagem que você queria | Confirme que você gravou o arquivo emitido para esta placa e regrave o correto. A placa está saudável |
| A gravação termina e a placa continua invisível depois de um boot a frio | A imagem não corresponde a esta placa ou a este DNA ID | Confira o nome do arquivo contra o seu pedido e confirme a classe de FPGA. Mande a saída da ferramenta ao suporte em vez de regravar o mesmo arquivo uma quarta vez |
| Funcionava ontem, hoje não funciona, e não houve gravação no meio | Quase nunca é firmware. Normalmente é o slot, o cabo, a porta USB ou uma placa travada | Desligamento total do PC de jogo por dez segundos e depois boot a frio. Depois reencaixe, depois troque o cabo. Regravar não é o primeiro movimento aqui |
Quando a placa está mesmo morta
Acontece, e tem outra cara. A causa de sempre é dano físico. Um contato PCIe entortado, um conector USB-C arrancado, um componente queimado, ou uma placa encaixada com o slot energizado. A assinatura é falhar no estágio 1, e não no estágio 2. Ou nenhum LED num slot que você comprovou funcionar com outra placa, ou uma cadeia JTAG que você não consegue abrir. Esse segundo caso só conta com o driver certo, a porta certa e o modelo certo selecionado, numa placa que está definitivamente energizada. Conteúdo de flash corrompido não produz esses sintomas.
Antes de declarar a placa morta
Sete coisas. A maior parte dos bricks relatados deixa de ser brick em algum ponto desta lista.
- PC de jogo totalmente desligado por dez segundos e depois ligado a frio — não reiniciado
- Placa reencaixada com a trava de retenção fechada e o espelho encostado
- Testada num segundo slot PCIe
- Cabo trocado por um de dados comprovado, numa porta USB traseira e sem hub no caminho
- Confirmado que você está na porta JTAG para gravar e na porta de dados para ler
- Driver CH347 ou WCH instalado, com o leitor e o MemProcFS fechados
- Uma tentativa limpa de regravação da imagem correta, deixada terminar sem interrupção
Dica
O que mandar para o suporte
Diga a que estágio você chegou, nos termos acima. Se os LEDs acendem. Se a ferramenta de gravação abre a cadeia JTAG. O nome exato do arquivo que você gravou e o modelo que selecionou. A saída completa da ferramenta, colada e não resumida. Uma foto da placa incluindo a serigrafia e a marcação do FPGA. O ID do seu pedido. Esse conjunto costuma bastar para responder a pergunta em uma resposta, em vez de cinco.
Perguntas sobre recuperação
Eu destruí o FPGA gravando a imagem errada?
Quase certamente não. Escrever uma imagem ruim deixa o FPGA sem conseguir se configurar, o que aparece como dispositivo ausente. O silício está intocado e o JTAG continua alcançável.
A placa precisa estar no PC de jogo para ser recuperada?
Ela precisa de energia. Na maioria das placas isso quer dizer encaixada no PC de jogo, com o PC de jogo ligado. Algumas placas conseguem se alimentar só pela porta de gravação — siga a documentação da sua placa.
Dá para recuperar sem JTAG?
Na prática, não. O caminho PCIe está indisponível justamente porque a configuração falhou, então o JTAG é a porta de entrada. É por isso que a porta de gravação existe como soquete separado.
Uma gravação de recuperação exige ler o DNA de novo?
Não. O DNA fica em eFUSE e não é afetado por nada que você escreva na flash, então a imagem que você já tem continua correspondendo à placa.
A ferramenta diz sucesso toda vez e a placa continua não aparecendo. E agora?
Pare de regravar. Uma escrita bem-sucedida de uma imagem compilada para outra placa ou outro DNA se comporta exatamente assim. Confira o arquivo contra o seu pedido e leve a saída da ferramenta ao suporte.
Fontes
O mapa de estágios e as linhas de sintoma são nossos. Vêm de placas que pararam de funcionar na nossa bancada e nos chamados.
- 01AMD/Xilinx UG910, Vivado Design Suite User Guide: Getting Started
programar um dispositivo e a flash de configuração dele por JTAG, o caminho em que toda a recuperação se apoia
docs.amd.com
Leia em seguida
Ainda travado? Abra um ticket no Discord
Todos os guias