2016-09-22 81 views
0

我有一個通過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

回答

1

我的問題是,我不知道怎麼理解我應該監視哪個串行端口。

如果這個「一個開發板」被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