帮助打开 USB 串行链接

帮助打开 USB 串行链接

我的目标是使用以下命令通过 Segger 串行链路与 ARM mmc 进行通信:

python3 -m serial.tools.miniterm -e /dev/ttyUSB3 115200

但是,我收到以下错误消息:

No such file or directory: '/dev/ttyUSB3'

如果我使用 dmesg,我可以看到连接到 USB 端口的 Segger 串行设备(见下文):

[159707.574338] usb 1-3: new full-speed USB device number 17 using xhci_hcd
[159707.724537] usb 1-3: New USB device found, idVendor=1366, idProduct=0101, bcdDevice= 1.00
[159707.724542] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[159707.724545] usb 1-3: Product: J-Link
[159707.724546] usb 1-3: Manufacturer: SEGGER
[159707.724548] usb 1-3: SerialNumber: 000801025943

因此,在我看来,我已连接到 USB3,但无法打开串行链接。另请参阅此:

USER@USERdev:/dev$ ls -ld ttyU*
ls: cannot access 'ttyU*': No such file or directory

知道为什么我无法打开串行链接吗?我正在运行 Debian 11.7

谢谢你的帮助 :)

答案1

许多设备访问问题可以通过组成员身份更改来解决。

sudo journalctl --follow您可以通过观看连接设备来找到设备名称。或者ls -1 /dev >dev.before,连接设备,等待 10 秒ls -1 /dev >dev.after;diff dev.{before,after}

具体来说,如果ls -l 显示组权限(第二个“ rwx”三元组)为“ rw”(例如“ -rw-rw----”),则将自己添加到拥有该设备的组中将授予rw访问权限。

就是这样:

# change to your device name 
device="/dev/ttyUSB3"
sudo adduser $USER $(stat -c "%G" $device)

这允许您成为可以使用该设备的组的成员身份rw但还有一步。

要使所有进程成为新组的成员,请注销并登录。小组成员资格是按时间设立的login

要在新组中创建单个进程(用于测试,在注销/登录之前):

newgrp $(stat -c "%G" $device)  

或者,只需键入组名称。看man newgrp

答案2

我认为您正在尝试使用 J-Link SEGGER 的一项功能数据表调用“虚拟 COM 端口”(数据表中的第 5.14 章)。

但是,可能需要首先使用“J-Link Commander”或“J-Link Configurator”打开该功能。这两个似乎都是 Windows 应用程序。

/dev/ttyUSB*Linux 中的设备节点与 USB 转 RS232(或 RS485)适配器关联。在 Windows 中,RS232 或 RS485 端口称为 COM 端口。

但是 J-Link SEGGER(JTAG 调试器)承诺的数据传输速率比经典 RS232 式串行端口的典型数据传输速率高一个数量级,因此我认为“虚拟 COM 端口模式”是不是设备通过 USB 的主要通信模式。相反,它可能使用本机 USB 协议来实现更高的数据速率,并且如果需要,需要将相对较慢的虚拟 COM 端口仿真作为辅助功能激活。

如果您没有可用的 Linux 版本的 J-Link 配置软件,您可能必须将 J-Link 设备临时连接到具有适当软件的 Windows 系统,使用它来更改设备的设置以启用“虚拟 COM 端口”并将新设置保存到设备,然后将重新配置的设备移回 Linux 系统并重试。

相关内容