我的目标是使用以下命令通过 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 系统并重试。