¿Por qué tengo que desconectar y volver a conectar el Microchip ICD3 después de cada programación?

4

Tengo un problema con el programador ICD3 de Microchip.

Tengo problemas de conexión, me conecto al programador, incluso cuando utilizo el modo autocomprobación con la placa de hardware autocompensador provista por Microchip.

Después de conectar el ICD3 a mi computadora portátil, siempre funciona la primera vez que ejecuto el autoprueba.

La segunda vez, aparece este mensaje de error:

"No se pudo conectar con la herramienta de hardware seleccionada. Asegúrese de que otro proyecto no esté utilizando la herramienta en MPLAB X."

Si desconecto y vuelvo a enchufar el ICD3 a la computadora portátil, vuelve a funcionar una vez más.

Estoy ejecutando Linux Mint Qiana. Lo he intentado en Windows 7, y allí funciona de manera confiable cada vez. También lo he probado en Debian Jessie, y ahí falla como en Linux Mint Qiana. También lo probé en Redhat Fedora Core 22, y allí la computadora se bloquea al final de la instalación de MPLabX (la pantalla se apaga, la computadora deja de responder).

He estado usando la versión v3.05 de MPLabX (también la he probado con la versión 2.x-algo, pero falla de la misma manera con un mensaje de error ligeramente diferente).

Por lo tanto, lo anterior elimina las siguientes causas:

  • Mi programa PIC / PIC (ya que ni siquiera está involucrado)
  • Mi hardware ICD3 (ya que funciona en Windows)

Por lo tanto, el problema debe estar en mi instalación de Linux. Supongo que Microchip, al ser una empresa grande y de calidad, debe probar su software antes de su lanzamiento. Así que supongo que el ICD3 funcionó al mismo tiempo para un empleado de Microchip. Así que mi pregunta es básicamente, ¿qué distro de Linux estaban usando y qué difiere entre eso y el mío para que el mío no funcione?

    
pregunta avl_sweden

4 respuestas

1

En este momento desea quedarse con 2.15, si desea que su depurador funcione en Linux. El controlador USB estaba defectuoso antes de esta versión, luego MC lo arregló y luego retrocedió. Definitivamente funciona en jessie de 64 bits con librerías de 32 bits, en 2 lugares que conozco.

    
respondido por el Oleg Mazurov
5

Realmente no he resuelto el problema, pero he encontrado una solución bastante fea que es apenas mejor que nada.

He escrito la siguiente secuencia de comandos de python para restablecer el puerto USB. Esto hace que el ICD 3 vuelva a funcionar cuando deja de funcionar, sin tener que desconectarlo y enchufarlo nuevamente.

import os
import sys
import fcntl
import re
lsusb=os.popen("lsusb -d 04d8:9009").read().strip()
if not lsusb:
    print "No ICD3 seems to be connected."
    sys.exit(0)
bus,busid,device,deviceid=re.split(r'[\t :]',lsusb)[:4]
if bus.lower()!="bus" or device.lower()!="device": raise Exception("Unexpected output from lsusb command. Maybe it doesn't work as is expected by this program, any longer")
dev="/dev/bus/usb/%s/%s"%(busid,deviceid)
print "Resetting USB ICD3 device at",dev
fd=os.open(dev,os.O_WRONLY)
USBDEVFS_RESET = ord('U') << (4*2) | 20 
fcntl.ioctl(fd,USBDEVFS_RESET,0)
os.close(fd)

Stackexchange no es el formato óptimo para entregar programas de Python, pero creo que copiar y pegar lo anterior en un archivo llamado fixicd3.py, y luego ejecutarlo usando:

python fixicd3.py

funcionará. Esto es solo para Linux, y puede que no funcione con concentradores USB (no lo he intentado). Además, el programa es un completo y completo truco.

Agregar el script anterior como un comando "Ejecutar después de construir" en MPLabX funciona casi bien para programar la placa. Sin embargo, para la depuración, no resuelve el problema, ya que cuando se pierde la conexión durante una sesión de depuración, el restablecimiento del dispositivo USB no sirve (no se puede continuar con la misma sesión de depuración).

    
respondido por el avl_sweden
3

Hay una configuración en MPLabX:

"Mantener la conexión activa a la herramienta de hardware", bajo Herramientas- > Opciones- > Incrustado- > Configuración genérica

Al marcar esta casilla se resuelve el problema.

    
respondido por el avl_sweden
2

Ocasionalmente obtengo esto en la consola MPLAB-IDE en Ubuntu. Es engañoso porque le dice que el problema está en el tablero de destino. No es. Es un problema de permisos con el controlador usb.

Transmission on endpoint 2 failed
The target circuit may require more power than 
the debug tool can provide. An external power 
supply might be necessary.
Connection Failed.
If the problem persists, please disconnect and 
reconnect the ICD 3 to the USB cable. If this 
does not fix the problem verify that the proper 
MPLAB X USB drivers have been installed.

Esto lo arregla.

$ cd /dev/bus/usb
$ sudo chmod 777 *
    
respondido por el Robin

Lea otras preguntas en las etiquetas