我怎麼知道哪個串口對應一個PCI卡?
我有一台帶有用於蜂窩通信的內部 3G PCIe 卡的車載電腦,但我不知道必須使用哪個串列埠才能發送 AT 命令。
這台電腦還有一個板載GPS,我可以很好
/dev/ttyS5
的訪問,速度9600。我看了一些文件,看到3G卡速度應該是115200。這個3G PCI卡是**“泰利特HE910 Mini PCIe”數據卡”,我在Ubuntu 14.04**上執行。另外,我一直在嘗試打開一個帶有n (0…5) 埠的串列 com,如下所示,但沒有結果:
stty -F /dev/ttySn ispeed 115200 && cat </dev/ttySn
執行
sudo setserial -g /dev/ttyS[012345]
它會產生:/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4 /dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3 /dev/ttyS2, UART: 16550A, Port: 0x03e8, IRQ: 5 /dev/ttyS3, UART: 16550A, Port: 0x02e8, IRQ: 7 /dev/ttyS4, UART: 16550A, Port: 0x02f0, IRQ: 11 /dev/ttyS5, UART: 16550A, Port: 0x02e0, IRQ: 10
請幫忙弄清楚如何通過串口訪問這個3G卡發送AT命令。
您可以使用
lspci -v
列出 PCI 設備資訊及其 IRQ。將通過列出的 IRQlspci
與setserial
您已經收集的資訊相關聯,這應該會告訴您什麼 tty 與哪個 PCI 卡匹配。此外,如果埠被禁用,您可以使用
setpci
. 有關如何確定以及如何啟用它的更多資訊,可以在此處找到:http ://www.tldp.org/HOWTO/Serial-HOWTO-8.html#ss8.7如果埠通過 IO 地址進行通信,則“lspci -vv”應顯示“Control: I/O+ …”,其中 + 表示啟用了 IO 地址。如果它顯示“I/O-”(和“I/O 埠…
$$ disabled $$") 那麼您可能需要使用 setpci 命令來啟用它。例如“setpci -d 151f:000 command=101”。151f 是供應商 ID,000 是從“lspci -n -v”獲得的設備 ID " 或來自 /proc/bus/pci 或來自 “scanpci -v”。“command=101” 表示將 101 放入命令寄存器,與 “lspci” 顯示的 “Control” 寄存器相同。 101h設置兩個位:1 將 I/O 設置為 +,100 部分保持 SERR# 設置為 +。在這種情況下,當執行 lspci 命令時,最初觀察到控制寄存器的 SERR# 位為 +。所以我們通過在 101 中的第一個 1 將第 8 位(其中第 0 位是 I/O)設置為 1,使其保持啟用狀態。有些串列卡不使用 SERR#,所以如果您看到 SERR#-,則無需啟用它所以然後使用:command=1。然後你’需要設置“setserial”來告訴驅動程序IO和IRQ。
根據 Telit 的文件,看起來 3G 調製解調器執行 ACM。檢查您是否有 /dev/ttyACM* 設備。如果是這樣,根據文件,您可以使用它們發送 AT 命令。該文件還包含有關如何載入核心模組(如果尚未載入)的說明。http://teleorigin.com/file_upl/pliki/1/Telit_HE910_HE863_GE910_UL865_Linux_Driver_UserGuide_r2.pdf
其中只有以下設備可以使用:
/dev/ttyACM0:PPP 連接和 AT 命令的數據埠
/dev/ttyACM3:AT 命令的通用埠