Resuelva el problema de que pyocd en Ubuntu no puede reconocer algunos DAPLinks hechos por usted mismo

Registre el proceso de solución de problemas cuando pyOCD no pueda reconocer el DAPLink de fabricación propia en Ubuntu, que cubre los permisos de udev, la enumeración de dispositivos, la compatibilidad del firmware y los métodos de verificación de conexión.

Hardware de https://oshwhub.com/xivn1987/daplink El firmware proviene de https://github.com/XIVN1987/DAPLink/tree/master

Otro firmware no oficial también debería tener problemas similares

No se puede reconocer la descripción del fenómeno

1
2
3
4
$ pyocd list
  #   Probe/Board               Unique ID    Target  
-----------------------------------------------------
  0   Segger J-Link (unknown)   4294967295   n/a     

Pyocd se instala normalmente y otros depuradores de Jlink pueden reconocerlo normalmente.

1
2
$ pyocd list
No available debug probes are connected

Pero el DAPLink casero no se puede reconocer.

Al mismo tiempo, este DAPLink también se utiliza normalmente en Keil.

Procesamiento

  1. Compruebe si hay un dispositivo USB
1
2
3
4
5
6
$ lsusb
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 001 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 001 Device 007: ID 2e3c:5021 XIVN1987 XV-Link CMSIS-DAP
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Puedes ver que el dispositivo está correctamente identificado XIVN1987 XV-Link CMSIS-DAP

  1. Agregar reglas de Udev Consulte este procesamiento de URL https://github.com/pyocd/pyOCD/tree/main/udev

Descargar catálogo

1
2
3
4
5
6
7
8
$ git clone https://github.com/pyocd/pyOCD.git
Cloning into 'pyOCD'...
remote: Enumerating objects: 18824, done.
remote: Counting objects: 100% (507/507), done.
remote: Compressing objects: 100% (166/166), done.
remote: Total 18824 (delta 416), reused 341 (delta 341), pack-reused 18317 (from 3)
Receiving objects: 100% (18824/18824), 29.53 MiB | 9.65 MiB/s, done.
Resolving deltas: 100% (13713/13713), done.

La ubicación de la regla udev. El DAPLink del firmware oficial puede utilizar directamente el archivo anterior.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
cd pyOCD/udev/

$ ll
total 40
drwxrwxr-x  2 knightli knightli 4096 Apr 17 21:26 ./
drwxrwxr-x 11 knightli knightli 4096 Apr 17 21:26 ../
-rwxrwxr-x  1 knightli knightli  540 Apr 17 21:26 49-stlinkv2-1.rules*
-rwxrwxr-x  1 knightli knightli  450 Apr 17 21:26 49-stlinkv2.rules*
-rwxrwxr-x  1 knightli knightli 1007 Apr 17 21:26 49-stlinkv3.rules*
-rw-rw-r--  1 knightli knightli   89 Apr 17 21:26 49-vtlinkii.rules
-rw-rw-r--  1 knightli knightli  699 Apr 17 21:26 49-wch-link.rules
-rw-rw-r--  1 knightli knightli 2836 Apr 17 21:26 50-cmsis-dap.rules
-rw-rw-r--  1 knightli knightli  445 Apr 17 21:26 50-picoprobe.rules
-rwxrwxr-x  1 knightli knightli 1685 Apr 17 21:26 README.md*

Es necesario modificar la versión de fabricación propia. De hecho, sólo necesitas agregar la siguiente línea

1
2
# 2e3c:5021 XIVN1987 XV-Link CMSIS-DAP
SUBSYSTEM=="usb", ATTR{idVendor}=="2e3c", ATTR{idProduct}=="5021", MODE:="666"

La primera línea de arriba es un comentario.

1
2
3
4
5
6
$ lsusb
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 001 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 001 Device 007: ID 2e3c:5021 XIVN1987 XV-Link CMSIS-DAP
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Los números de la segunda línea corresponden a los de lsusb.

Copie los archivos modificados correspondientes a /etc/udev/rules.d

1
2
$ sudo udevadm control --reload
$ sudo udevadm trigger

Cargar reglas modificadas

1
2
3
4
$ pyocd list
  #   Probe/Board                  Unique ID      Target  
----------------------------------------------------------
  0   XIVN1987 XV-Link CMSIS-DAP   1F75F4F81CA2   n/a     

Después de que la modificación sea exitosa, verá su DAPLink

记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy