Detectando pinout de JTAG

3

Quiero identificar el pinout de JTAG en el tablero de destino, usando la herramienta JTAGenum. He leído el código JTAGenum y deseo aclarar algunos puntos sobre la configuración del usuario. JTAGenum puede identificar 4 pines obligatorios (TCK, TMS, TDI, TDO), ¿existe algún método para definir los pines opcionales? (TRST, RST, RTCK)

Alguien puede aclarar acerca de la parte de configuración del usuario en el código JTAGenum: se requiere definir los pines [] y los pines [], y el mapa de los nombres de los pines a los pines para escanear. ¿Sería correcto especificar la configuración para el encabezado JTAG de 8 pines (uno de los cuales es GND) de la siguiente manera?

byte      pins[] = { 2, 3, 4, 5, 6, 7, 8 };
char * pinnames[] = { "TCK ", "TMS ", "TDI ", "TDO ", "DIG_6", "DIG_7", "DIG_8" };
    
pregunta minto

2 respuestas

3

Probablemente pueda ignorar los pines "opcionales" excepto RTCK, no debería haber un escenario de depuración donde estos pines sean necesarios a menos que su parte tenga el puerto JTAG deshabilitado al estar en estado de "restablecimiento". Si el objetivo implementa estos pines opcionales, es probable que el PCB los conecte por cable o los exponga a un conector. Si tiene un conector identificado como un puerto JTAG candidato, también puede proporcionar una referencia 3v3 (riel de suministro de destino) que se espera que use su sonda (y probablemente también pueda ignorarse).

RTCK puede estar presente en un antiguo objetivo Arm, cualquier ARM11 y anterior. Esta es una versión muestreada y demorada de la entrada TCK, que se vuelve a sincronizar con el reloj central interno. Si RTCK está en uso, debe ejecutar su JTAG con lentitud o esperar los bordes de RTCK. Cualquier cosa que use el CoreSight DAP no usará RTCK (posiblemente podría ser cableado como un loopback de TCK, pero no sirve para nada).

Tenga en cuenta que los puertos de depuración Serial-Wire de 2 pines ahora son comunes, necesitará una secuencia diferente para detectarlos (del orden de 100 bits por pin que se prueba como datos). No hay un FSM simple en este caso como en JTAG.

Noté que la documentación actual de Open-OCD sugiere que la velocidad del reloj JTAG está limitada a ~ CPU / 6. Esto solo es cierto para los núcleos ARM más antiguos en los que RTAG TAP se interconecta directamente con el procesador. Cualquier procesador con un CoreSight DAP tiene el reloj de depuración completamente asíncrono a los relojes internos, e incluso puede funcionar con el reloj JTAG / SW más rápido que el procesador.

Consulte aquí para los conectores estándar. También puede encontrar un suministro, una referencia de voltaje objetivo y una restablecimiento funcional del objetivo, pero esto dependerá del plan del diseñador para la depuración de la placa.

    
respondido por el Sean Houlihane
1

Sólo estoy aprendiendo, pero por lo que entendí, lo primero es que necesitas el pin de tu propio arduino. Por ejemplo en mi caso tengo arduino nano.

Comopuedesver,haynúmerosenpúrpura,quepuedesusar.Cuantomáspinestengasdisponiblesentuarduino,máspinespuedesprobarentutableroobjetivoalmismotiempo.

Paraquepuedasescribiruncódigocomoeste:

bytepins[]={0,1,2,3,4,5,6,7,8,9,1011,12,13,14,15,16,17,18,19};char*pinnames[]={"DIG_0 ", "DIG_1 ", "DIG_2", "DIG_3", "DIG_4", "DIG_5", "DIG_6", "DIG_7", "DIG_8", "DIG_9", "DIG_10", "DIG_11", "DIG_12", "DIG_13", "DIG_14", "DIG_15", "DIG_16", "DIG_17", "DIG_18", "DIG_19" };

Sin embargo, hay un problema con esto. El número de combinaciones es enorme y probablemente en el objetivo tenga una idea de cuáles 6 pines pueden ser la interfaz JTAG.

Para que puedas simplificar usando el número mínimo:

byte      pins[] = { 0, 1, 2, 3, 4, 5};

char * pinnames[] = { "DIG_0 ", "DIG_1 ", "DIG_2", "DIG_3", "DIG_4", "DIG_5" };

En ambos casos, debe conectar todos los pines registrados en el arduino a cualquiera de los pines sospechosos en el objetivo (en los primeros casos, tal vez algunos de los 20 pines estén vacíos).

Luego, debe conectarse al puerto serie al programa JTAGEnum y después de escanear (comandos) debe obtener los resultados de las pruebas (si las hay).

Si has encontrado un JTAG, el programa te dirá qué pines de tu arduino coinciden con los pines JTAG identificados.

Por ejemplo:

ENCONTRADO! tck: DIG_0 tms: DIG_1 tdo: DIG_2 tdi: DIG_3

Así que puedes seguir la DIG_0 para saber cuál es tck en el objetivo, ...

Lo siento si no me explico muy bien y espero que esto pueda ayudar

    
respondido por el jpalanco

Lea otras preguntas en las etiquetas