Tabela de conteúdos

JTAG

NOTOC Interface JTAG com barra de pinos 5x2, 90°


ATENÇÃO

Os terminais no Zeebo onde devem ser soldados os fios são bastante frágeis. Não exerça muita força ou demore muito tempo com o ferro de solda sobre eles, ou poderão se soltar. Caso isso aconteça, dê ADEUS ao JTAG no Zeebo.

Se não tiver experiência com solda ou não estiver confiante para fazer, peça alguém que entenda. Pode ser em alguma eletrônica ou loja onde trabalhem com Xbox.


Na placa filha do Zeebo, como chamada pelo site oficial Mexicano (que deveria ser chamada de mãe :)), existem 10 pads que expõe a interface JTAG primária do MSM7201A (ele também possui a auxiliar, que comumente está ligada ao tap do ARM11, mas não é exposta no Zeebo).

Para utilizar a interface, você precisará de um dongle JTAG. Existem inúmeros modelos de dongles disponíveis no mercado. O único requisito para usá-lo no Zeebo é que ele aceite o nível de tensão que a interface JTAG do MSM7201A trabalha, ou seja, 2,6 V.

Se não pretende comprar um, você pode fabricar o famoso Wiggler, que é um pseudo-dongle que utiliza o porta paralela do PC. Muitos dos projetos deste cabo NÃO são adequados para o Zeebo, pois trabalham com níveis de tensão maiores e podem danificar o console. Por isso, é necessário o projeto de um Wiggler apropriado: a versão Baixa Tensão, ou Low Voltage (LV).

Com o cabo/dongle em mãos, está na hora de ligá-lo ao Zeebo. Já que na placa só existem os pads, você pode soldar uma barra de pinos 5×2, 90° ou 180°, assim fica mais fácil de ligar os fios. Se preferir, pode também soldar os fios diretamente. Só não demore muito com o ferro de solda nos pads.

Construindo um Wiggler-compatível

Caso queira construir um cabo, use o projeto abaixo. Ele foi baseado na versão LV encontrado no fórum XDA-Developers ( http://forum.xda-developers.com/showpost.php?p=6055979&postcount=412 ). Seu diagrama foi modificado e simplificado e é específico para o Zeebo. Alguns outros hardwares podem, com pouca ou nenhuma adaptação, ser usados com este cabo, mas foi criado com o Z em mente.

{|class = “wikitable” style=“width: 0%;” align=“center”

O projeto em Eagle pode ser obtido aqui: http://tripleoxygen.net/files/openzeebo/hardware/zeebojtag_r2.zip

O layout foi feito para PCIs com apenas um lado cobreado, e assim facilitar a fabricação.

Abrindo o Zeebo

Para ter acesso à interface JTAG, basta remover a tampa superior do Zeebo. Siga os detalhes em Zeebo_Hardware.

Conexão

Independente de qual dongle usará, use esta referência para a pinagem no Zeebo. Pinagem JTAG no Zeebo Nos dois casos, o pino JTAG_TRST deve ser conectado ao pino VREG_MSMP, e caso o dongle não tenha clock adaptivo, o pino JTAG_RTCK do Zeebo deve ser conectado ao GND. Para os pinos que não forem citados nos diagramas abaixo, deixe-os desconectados.

Se fabricou o Wiggler (ARM 14 pinos)

{| border=“1” cellpadding=“5” cellspacing=“0” align=“center”

! Pino no Zeebo ! Pino no dongle

VREG_MSMP
JTAG_TMS
JTAG_TCK
JTAG_TDO
GND
JTAG_RTCK
JTAG_TDI
JTAG_TRST

Outro dongle com pinagem padrão ARM 20 pinos

Pinagem padrão ARM 20 pinos {| border=“1” cellpadding=“5” cellspacing=“0” align=“center”

! Pino no Zeebo ! Pino no dongle

VREG_MSMP
JTAG_TMS
JTAG_TCK
JTAG_TDO
GND
JTAG_TDI
JTAG_RTCK

Software

Com o cabo ligado, você precisará ter o OpenOCD instalado em sua máquina para comunicar com o console.

Caso esteja no Linux, é necessário compilar o OpenOCD. Siga os passos em http://www.openplug.org/plugwiki/index.php/Setting_Up_OpenOCD_Under_Linux. Siga até o passo “Building OpenOCD”, pois o resto não servirá. Se for usar Wiggler no Linux, na linha onde se lê: $ ./configure –enable-maintainer-mode –enable-ft2232_libftdi Inclua a porta paralela: $ ./configure –enable-maintainer-mode –enable-ft2232_libftdi –enable-parport –enable-parport_ppdev

Para usuários Windows, baixe-o já compilado daqui: http://www.freddiechopin.info/index.php/en/download/category/4-openocd

Nos dois casos, opte pela versão 0.4.0.

O OpenOCD necessita de um arquivo de configuração que explica como ele deve comunicar com o dispositivo: qual CPU, IDCODE, velocidade do JTAG, etc… Para o Zeebo, você necessitará de 2 arquivos: um para o ARM9 e outro para o ARM11. Copie os respectivos textos abaixo e salve na pasta “scripts/target” contida na pasta do OpenOCD:

ARM9

0@@

ARM11

1@@

Estes arquivos servem para o dongle da Signalyzer. Para usá-lo com o Wiggler, substitua o trecho:

2@@

por

3@@

Salve os arquivos com os nomes: “msm7201a_arm9.cfg” e “msm7201a_arm11.cfg”, na pasta “target” do OpenOCD. Para usuários Windows, estará na pasta de instalação do OpenOCD. Linux, geralmente em /usr/local/share/openocd.

Ligue seu Zeebo, abra uma janela do terminal e execute (de acordo com qual núcleo pretende controlar/depurar): sudo openocd -f target/msm7201a_arm9.cfg

Se obter esta saída do OpenOCD, para o ARM9:

4@@

ou para o ARM11:

5@@

Observe as linhas: Info : JTAG tap: arm9.cpu tap/device found: 0xa01700e1 (mfg: 0x070, part: 0x0170, ver: 0xa) Info : JTAG tap: arm11.cpu tap/device found: 0xa7b360e1 (mfg: 0x070, part: 0x7b36, ver: 0xa)

Dependendo de qual núcleo, aparecerá os respectivos IDCODEs: ARM9 - 0xa01700e1 ARM11 - 0xa7b360e1

Agora, abra outro terminal e digite: telnet localhost 4444

Você verá um prompt fornecido pelo OpenOCD:

6@@

Daqui você envia comandos ao OpenOCD. Agora você já pode ler, escrever na memória; executar passo a passo; modificar registradores; … enfim,agora tem controle sobre o console!

Já existem algums funções úteis que inclui no arquivo de configuração e que podem ser chamadas no OpenOCD:

*mf - Pausa a execução e desliga a MMU *mo - Liga a MMU e resume a execução *rst - Reseta o console *brew - Força a execução do BREW Appmgr como primeiro aplicativo. *em - Força a execução do EMAPPLET como primeiro aplicativo.

Estas funções serão detalhadas conforme forem usadas pelos outros artigos.