![如何查明是否有东西正在使用串行端口?](https://linux22.com/image/60532/%E5%A6%82%E4%BD%95%E6%9F%A5%E6%98%8E%E6%98%AF%E5%90%A6%E6%9C%89%E4%B8%9C%E8%A5%BF%E6%AD%A3%E5%9C%A8%E4%BD%BF%E7%94%A8%E4%B8%B2%E8%A1%8C%E7%AB%AF%E5%8F%A3%EF%BC%9F.png)
我想在 Debian Wheezy 下对微控制器进行编程,但到目前为止还无法让它工作。我问电气工程并得到建议检查是否有东西已经占用串行端口。我没有他们建议的程序brltty
。
如何检查是否有其他包阻止微控制器板与计算机通信?或者设备是否存在某种驱动程序问题?
当我插入它时会发生以下情况:
rumtscho@simak:~/Projects/had_launchpad-blink-master$ dmesg | tail
[11936.051300] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[11936.051306] usb 4-1: Product: Texas Instruments MSP-FET430UIF
[11936.051313] usb 4-1: Manufacturer: Texas Instruments
[11936.051318] usb 4-1: SerialNumber: 95FF469286C9572A
[11936.060401] cdc_acm 4-1:1.0: This device cannot do calls on its own. It is not a modem.
[11936.060412] cdc_acm 4-1:1.0: No union descriptor, testing for castrated device
[11936.060467] cdc_acm 4-1:1.0: ttyACM0: USB ACM device
[11946.113517] generic-usb 0003:0451:F432.0005: usb_submit_urb(ctrl) failed
[11946.113550] generic-usb 0003:0451:F432.0005: timeout initializing reports
[11946.114261] generic-usb 0003:0451:F432.0005: hiddev0,hidraw0: USB HID v1.01 Device [Texas Instruments Texas Instruments MSP-FET430UIF] on usb-0000:00:1d.0-1/input1
我可以从这里排除连接故障吗?
答案1
Linux 使用 ttySx 作为串行端口设备名称。例如,COM1(DOS/Windows 名称)是 ttyS0,COM2 是 ttyS1,依此类推。
将微控制器连接到串行端口并键入
dmesg | grep tty
命令以检查是否检测到它。如果所有插槽都是 PCI,则串行端口可能位于 ISA 总线或 LPC 总线(也称为“LPC 接口”)上。 LPC 在笔记本电脑上很常见。输入“
lspci
”看是否显示“LPC”
现在要配置串行端口,您必须使用setserial
命令。 (点击这里学习setserial
指挥。)
参考:
http://www.cyberciti.biz/faq/find-out-linux-serial-ports-with-setserial/
http://www.tldp.org/HOWTO/Serial-HOWTO-8.html
答案2
我以 root 身份运行 lsof,然后检查哪些进程打开了 /dev/tty* 文件。然后追踪整个过程以确定他们在做什么。
答案3
我使用带有两个外部串行控制器的电脑来连接两个不同的 BMS 系统。在 debian weezy 上运行两个 vmware 播放器,每个播放器具有不同的操作系统,并将一个串行端口连接到每台 vmware 机器!问题在于,一个或两个序列无法连接到 vmware,或者显示为已被另一应用程序使用,这是不可预测的。经过几个小时的日志搜索、硬件更改等后,我注意到 /var/log/syslog 中调制解调器管理器呼叫所有 ttyS* 尝试识别已连接的调制解调器!我用“apt-get remove modemmanager”删除了它,问题解决了!我相信尝试查找连接的设备会使端口或连接到端口的设备处于未就绪状态!