Linux - 与设备关联的端口

问题描述:

我有一个通过USB连接到我的Linux机器的开发板。为了调试我想监视串口。我的问题是我不知道应该监视哪个串口。Linux - 与设备关联的端口

当终端运行lsusb,我看到

Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 
Bus 001 Device 003: ID 0461:4e1d Primax Electronics, Ltd 
Bus 001 Device 004: ID 0d28:0204 NXP LPC1768 
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub 
Bus 003 Device 003: ID 046d:c019 Logitech, Inc. Optical Tilt Wheel Mouse 
Bus 003 Device 002: ID 03f0:c511 Hewlett-Packard 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 

我对是NXP LPC1768的设备,所以它是“附加”到Bus01,装置04.不过,我应监控哪些端口读取恩智浦LPC1768器件的串行端口?

当运行dmesg | grep tty,我看到

[ 0.000000] console [tty0] enabled 
[ 97.204143] cdc_acm 1-1.2:1.1: ttyACM0: USB ACM device 

但是这仍然没有给我信息,我所期待的。

当我使用Windows时,我将转到设备管理器,端口选项卡,查看与该设备关联的COM端口并使用像Putty这样的软件来监视串行端口。

你是否可以在Linux中做到这一点?

我很抱歉,如果这个问题以前有人问,但我搜索了一个小时,还是没能找到答案..

+0

*“我有一个开发板......” - - 你能更具体吗? *“在终端中运行lsusb时......”* - 你的意思是在你的Linux PC上?如果这个*“一个开发板”*被您的Linux PC识别为USB小工具,那么将会有syslog条目。断开电路板,等待15秒钟,然后连接电路板。使用'dmesg'命令查看系统日志的结尾。如果主板作为串行设备连接(例如/ dev/ttyACM0),则可以使用*终端仿真程序*,例如minicom或puTTY。 – sawdust

+0

我正在使用BBC micro:bit作为开发板。是的,我正在运行lsusb和dmesg | grep tty在我的Linux机器上,而不是在开发板上。 运行dmesg命令时应该看到什么信息?你能给我一个具体的例子吗? 非常感谢 – George

+0

阅读'/ sys/class/tty'中的目录。每个符号链接都有一个'tty'并指向真正的sysfs设备,这应该很容易识别。 – rodrigo

我的问题是,我不知道怎么理解我应该监视哪个串行端口。

如果这个“一个开发板”被Linux PC识别为USB gadget,那么将会有syslog条目。
断开电路板,等待15秒钟,然后连接电路板。
使用命令dmesg | tail查看系统日志的结尾。
你可能会得到这样的事情:

$ dmesg | tail 
[ 2094.481014] usb 1-1: Product: EDBG CMSIS-DAP 
[ 2094.481019] usb 1-1: Manufacturer: Atmel Corp. 
[ 2094.481023] usb 1-1: SerialNumber: ATML0000001351195199 
[ 2095.033449] hidraw: raw HID events driver (C) Jiri Kosina 
[ 2095.038550] cdc_acm 1-1:1.1: ttyACM0: USB ACM device 
[ 2095.038874] usbcore: registered new interface driver cdc_acm 
[ 2095.038877] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters 
[ 2095.112372] usbcore: registered new interface driver usbhid 
[ 2095.112376] usbhid: USB HID core driver 
[ 2095.237686] hid-generic 0003:03EB:2111.0001: hiddev0,hidraw0: USB HID v1.11 Device [Atmel Corp. EDBG CMSIS-DAP] on usb-0000:00:1d.7-1/input0 
$ 

显示前三行涉及到低级别的USB协议的完成。
其余七行是USB设备安装。
这是显着的第五行,因为这表明所连接的板实现了USB CDC(通信设备类)ACM(抽象控制模型)以模拟串行端口。

如果SBC不会连接作为串行装置(例如的/ dev/ttyACM0),那么就可以使用一个终端仿真器程序,如小型机或油灰。

$ minicom --device /dev/ttyACM0 

当运行dmesg | grep tty,我看到

[ 0.000000] console [tty0] enabled 
[ 97.204143] cdc_acm 1-1.2:1.1: ttyACM0: USB ACM device 

但是这仍然没有给我信息,我所期待的。

其实这就是你需要的信息(假设这个设备是用于你的SBC的)。


附录

当我试图用腻子访问它,我得到了错误消息“无法打开连接无法访问串行端口”。

想必设备节点ttyACMroot和组dialout资:

$ ls -l /dev/ttyACM* 
crw-rw---- 1 root dialout 166, 0 Sep 22 15:54 /dev/ttyACM0 

确认您的用户名属于dialout组(这样你可以访问此设备)。

$ whoami 
george 

$ grep dialout </etc/group 
dialout:x:20:george 

如果您的用户名是不是dialout组的成员,然后用你的Linux发行版的管理(或系统工具)计划,以您的用户名添加到dialout。或者参见https://unix.stackexchange.com/questions/14354/read-write-to-a-serial-port-without-roothttps://askubuntu.com/questions/112568/how-do-i-allow-a-non-default-user-to-use-serial-device-ttyusb0

+0

谢谢锯末。出于某种原因,当使用[$ minicom --device/dev/ttyACM0]时,我没有看到控制台中出现任何内容,我确信我的应用程序在串口上打印了消息。是否有另一种方法来访问ttyACM0?当我尝试用putty访问它时,出现错误消息“无法打开连接无法访问串行端口”。 – George

+0

听起来像一个权限问题。往上看。 – sawdust