串行:无法获取带有 NI PCI 8431/16 接口的串行端口

串行:无法获取带有 NI PCI 8431/16 接口的串行端口

我在使用 NI PCIe 仪器卡获取串行端口时遇到问题。我正在运行 Ubuntu 20.04

最初我尝试使用

sudo setserial -g /dev/ttyS*

它显示了串行端口列表,但只有 /dev/ttyS0 显示 uart:16550A,如下所示

/dev/ttyS0, uart: 16550A, port :0x03f8, irq: 4
/dev/ttyS1, uart: unknown, port: 0x02f8, irq:3
/dev/ttyS2, uart: unknown, port: 0x03e8, irq:4
/dev/ttyS3, uart: unknown, port: 0x02e8, irq:3
.....

其余的甚至没有分配端口和 irq。我相信 /dev/ttyS0 被分配为“通用”端口,而不是 NI 卡提供的端口。

接下来我尝试查询 pci 信息

sudo lspci -vvv > pci.txt

并发现被禁用的卡的内存区域

.....
Region 0: memory at d8e00000(32bit, non prefectable) [disabled][size 4k]
....

我尝试使用设定点再次启用它

sudo setpci -s [设备 ID]:[内存地址] COMMAND=0x02

再次使用 lspci 检查,单词 [disabled] 已被删除。然后再次使用 setserial 命令检查,没有任何变化。

重新安装驱动程序

尝试重新安装驱动程序 ni-ubuntu2004-drivers-2023Q3.deb,但似乎没有任何变化

如何进行

不知道我还能尝试什么?是 irq 冲突的情况吗?

谢谢

答案1

这是否表明您与id可能 属于同一组?serialls -l /dev/tty*

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

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

就是这样:

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

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

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

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

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

或者,只需键入组名。请参阅man newgrp

相关内容