¿Existe el riesgo de que el HW depure un software integrado si la integridad de JTAG es mala?

4

Tuve que depurar un software embebido en C en un entorno ruidoso. Como resultado, la prueba de integridad de la conexión JTAG tuvo una tasa de falla entre el 30% y el 60%.

¿Cuáles son los riesgos de hacer accesos JTAG en tales condiciones? Quiero decir:

  • ¿Puedo quemar el microcontrolador?
  • ¿Es posible corromper la memoria no volátil para siempre?
  • ¿Existe un mecanismo de protección HW que proteja el chip? (evitando así cualquier acceso JTAG [actualización del programa, sesión de depuración, etc.])
  • ¿Es posible que los datos mostrados por el depurador sean incorrectos?

El objetivo es una TI C2000. Pero preferiría una respuesta general si es posible.

    
pregunta Plouff

4 respuestas

4

Es poco probable que dañe la pieza, pero es posible que no pueda usar la conexión con éxito o de manera útil para depurar el dispositivo. Nunca estará seguro de que está viendo un error de software o una falla de su depurador, ya que algunos modos de falla pueden resultar en una falla de la interfaz de depuración en cualquier caso.

Los problemas de integridad de la señal a menudo se pueden resolver reduciendo la velocidad de reloj de JTAG. Esto afectará el rendimiento de la carga de software y los grandes volcados de memoria o los registros de datos, pero para una simple depuración de punto de interrupción y paso a paso se mantendrá utilizable incluso a frecuencias relativamente bajas. Si ya está viendo un error del 60%, no será peor que reducir de 10MHz a 4MHz por ejemplo, y puede caer a cero. Sugiero intentar 1MHz como punto de partida. Si el rendimiento no es satisfactorio, puede intentar aumentarlo de forma incremental para determinar la tasa máxima de error libre, de manera similar, si aún sigue obteniendo errores, redúzcalo aún más.

En general, el cable JTAG debe ser lo más corto posible (< 20 cm como guía), preferiblemente el cable original del fabricante de la sonda sin adaptadores ni extensiones.

Cuando esta pregunta se publicó en SO, agregó un comentario de que la sonda era un Blackhawk USB200 - el producto tiene un adaptador de aislamiento opcional para entornos hostiles para evitar problemas de bucle a tierra. Eso puede resolver su problema por completo.

Finalmente, ¿está seguro de que la tasa de error se debe al ruido? Un error bastante común es acceder a los pines utilizados para JTAG como GPIO en el software, por ejemplo.

    
respondido por el Clifford
4

Añadiendo mis 2 centavos. No se puede comentar!

Nos enfrentamos a un problema similar con el mismo objetivo (C2000). Muy a menudo, el dispositivo se desconectaba y teníamos que reiniciar el IDE y volver a actualizar el código para depurar. Nos pusimos en contacto con TI y obtuvimos la siguiente sugerencia.

1) Use un aislador digital como esto entre el depurador y el objetivo.

2) Reduzca la longitud del cable JTAG. Normalmente el nuestro es menos de 5 cm.

Funcionó bien.

Editar: Clifford señaló estas cosas ya. Simplemente añadiendo mi experiencia.

    
respondido por el seetharaman
4

Puede dañar absolutamente el hardware.

Diga que su cambio de IR se corrompe en una MCU o FPGA y accidentalmente carga EXTEST o ingresa una instrucción ISC IEEE 1532, y no establece valores seguros en las celdas BSR. Cada pin BSR en ese dispositivo afirmará inmediatamente cualquier estado que se encuentre en esas celdas.

Por ejemplo, si tiene algunos dispositivos que funcionan con electrónica de potencia y no hay protección externa, puede disparar ambos MOSFET en un controlador de conmutación y un voltaje corto a GND. He visto esto suceder varias veces. EXTEST es probablemente la instrucción más riesgosa que se define en la especificación.

Si no puede confiar en la configuración de JTAG, me detendría y solucionaría el problema antes de continuar. Incluso fuera del daño del hardware, piense en todo el tiempo de ingeniería que perderá persiguiendo a los Heisenbugs que resultaron ser un poco cambiando de vez en cuando en un cambio de DR.

Básicamente, mire su diseño y considere qué sucede si cada pin en un dispositivo JTAG salta a un estado desconocido (o todos 0s o todos 1s) - es probable que no esté satisfecho con el resultado.

Otras cosas que he hecho en el pasado debido a la mala integridad de JTAG es el disparo accidental de fusibles de seguridad y similares. Esto haría que la pieza se bloquee y requiera reemplazarla. Por diseño, JTAG no tiene comprobación de integridad ni corrección de errores, es uno de los buses más simples posibles por diseño.

    
respondido por el Krunal Desai
3

Si bien el daño físico directo al dispositivo de hardware parece poco probable, si un dispositivo incluye algún tipo de fusibles de configuración de una sola escritura, existe una posibilidad muy real de que una conexión JTAG ruidosa pueda hacer que dicho fusible se configure de forma errónea. Eso haría al chip permanentemente inútil. Además, muchos procesadores se utilizan de maneras que podrían causar daños a los circuitos de la CPU u otro hardware si los pines de E / S se establecieran en condiciones erróneas.

Básicamente, me imagino que una conexión JTAG ruidosa podría hacer que el sistema crea erróneamente que le está dando la combinación que sea más peligrosa de comandos y datos. Si no hay nada que alimente el dispositivo que sería particularmente dañino, entonces nada se dañará. Pero si es posible dañar deliberadamente el dispositivo utilizando el JTAG, uno debería asumir que dicho daño también podría ocurrir accidentalmente, a menos que haya hecho un esfuerzo sistemático para evitarlo.

    
respondido por el supercat

Lea otras preguntas en las etiquetas