我在使用 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
可能 属于同一组?serial
ls -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
。