domingo, 2 de agosto de 2015

Diversão do dia: aventuras debugando hardware.

No começo do ano eu tinha adaptado o Aleste 2 do MSX para rodar em cartucho, ao invés de rodar em disquete (muito mais rápido para carregar, não precisa ficar trocando de disco, etc). Mas eu nunca tinha testado no MSX de verdade, só no emulador, porque eu não tinha um cartucho de 2MB.

Aí eu comprei um de um francês, mas ele não mandou um cartucho, mandou um kit para você montar seu próprio cartucho. Como eu sou uma negação com solda, levei ontem no Garoa Hacker Clube​ e a Erin Pinheiro​ soldou o cartucho para mim.

O problema é que não funcionou. Quando eu tentava carregar o jogo, dava esse erro aí do screenshot.



Eu já estava meio cansado ontem, então deixei para debugar hoje, em casa. Mas em casa eu não tenho osciloscópio, nem analisador lógico. Tive que me virar só com o que eu tinha aqui: multímetro e cérebro.

Pois bem, uma solução seria checar solda por solda para ver se tinha algum erro de montagem, mas isso ia levar muito tempo. Melhor usar a cabeça. O screenshot disse que conseguiu apagar a flash e conseguiu gravar o conteúdo até um certo ponto. Isso significa que os pinos de dados e de controle estão ok, senão não teria ido até esse ponto. O pau tinha que ser num pino de address.

Mas qual pino? Bem, cada bloco de gravação tem 16kb, e, segundo o screenshot, ele dá o erro quando vai tentar gravar o bloco 8. 16kb são 14 bits de address, log2(8)=3, então o pau tem que estar no A17. Olhando no datasheet da flash, A17 é o pino 37, e olhando no esquemático, ele tinha que estar ligado no pino 2 da mapper. Então eu chequei o pino 2 da mapper com o pino 37 da flash e bingo! Não tinha contato!

Como eu sou ruim de solda e não tenho paciência de ficar checando se era trilha rompida ou solda fria, simplesmente meti um fiozão ligando os dois pinos. Fechei o cartucho, liguei no turboR e pronto, funcionou de primeira :)

Nenhum comentário:

Postar um comentário