PCIe轉(zhuǎn)串口芯片CH382/CH384以及PCI轉(zhuǎn)串口芯片CH351/CH352/CH353/CH355/CH356/CH357/CH358/CH359以及使用如上芯片外加CH432/CH438的組合串口轉(zhuǎn)接方案均支持Windows和Linux操作系統(tǒng),在系統(tǒng)下會生成多個獨立的串口,各虛擬串口分別對應一個硬件串口。各串口獨立工作,互不影響。本文主要介紹Linux操作系統(tǒng)如何為設備加載廠商串口驅(qū)動。
廠商驅(qū)動下載鏈接:
廠商驅(qū)動Github鏈接:
步驟一:解綁系統(tǒng)內(nèi)置串口驅(qū)動1、使能root權限
因如下各操作均需要root權限,可以在終端下通過"sudo su"或“sudo -i”命令開啟該權限。當然也可以在后續(xù)操作時每條命令前單獨加上sudo關鍵字。
2、確定串口卡狀態(tài)
Linux內(nèi)核中,系統(tǒng)啟動時會自動加載內(nèi)置的8250_pci驅(qū)動。該驅(qū)動包含各廠家PCI/PCIe產(chǎn)品,可以通過lspci命令確認當前硬件的工作狀態(tài)以及驅(qū)動匹配情況。CH35x和CH38x芯片使用的VID有2種:0x1C00和0x4348,命令為:
lspci?-vd?1c00:* lspci?-vd?4348:*
運行如上命令后,若設備存在,則會顯示如下設備信息:
07:00.0?Serial?controller:?Device?1c00:3470?(rev?10)?(prog-if?05?[16850]) Subsystem:?Device?1c00:3470 Flags:?fast?devsel,?IRQ?41 I/O?ports?at?1000?[size=256] Memory?at?58700000?(32-bit,?prefetchable)?[size=32K] I/O?ports?at?1100?[size=4] Expansion?ROM?at?58700000?[size=32K] Capabilities:?[60]?Power?Management?version?3 Capabilities:?[68]?MSI:?Enable-?Count=1/32?Maskable+?64bit+ Capabilities:?[80]?Express?Legacy?Endpoint,?MSI?00 Capabilities:?[100]?Advanced?Error?Reporting Kernel?driver?in?use:?serial Kernel?modules:?8250_pci
如上所示,在“Kernel modules”信息中會顯示當前已經(jīng)為該設備加載的驅(qū)動。注:系統(tǒng)內(nèi)置的可以滿足設備基礎串口通信的需求,該驅(qū)動為串口卡創(chuàng)建的設備名稱為:/dev/ttySn,也可以通過dmesg | grep ttyS 通過對比ttyS的IO地址和lspci的地址來確定具體的ttyS通道。
如果需要使用擴展功能,如:支持串口高波特率通訊,開啟半雙工功能支持RS485串口通訊等,則務必使用廠商單獨提供的串口驅(qū)動。
3、解綁本地8250_pci串口驅(qū)動
執(zhí)行如下命令:
ls?/sys/bus/pci/drivers/serial
如上命令返回內(nèi)容如下所示:
0000:07:00.0?bind?new_id?remove_id?uevent?unbind
使用如下命令完成驅(qū)動和設備的解綁:
echo?-n?“0000:07:00.0”?>?/sys/bus/pci/drivers/serial/unbind
步驟二:加載廠商串口驅(qū)動
1、從開頭的鏈接地址下載驅(qū)動到本地,也可以通過git clone。
2、參考驅(qū)動文件夾中的README.md文檔完成驅(qū)動的編譯和移植工作。
3、設備存在且工作正常的情況下,驅(qū)動會為設備生成名稱為“/dev/ttyWCH”開頭的串口節(jié)點。
若驅(qū)動加載時出錯,可能原因有:
1、系統(tǒng)當前未發(fā)現(xiàn)任何CH35x和CH38x串口卡。
2、系統(tǒng)默認為CH35x和CH38x串口卡分配的IO地址不可用,導致驅(qū)動無法成功訪問硬件,甚至造成系統(tǒng)Crash。原因:CH35x和CH38x串口卡的相關串口寄存器均位于IO空間內(nèi),部分非X86和X64的架構(gòu)不支持獨立編址或者支持分配地址但地址無法通過原生IO地址操作直接訪問,此時可聯(lián)系相應CPU或系統(tǒng)廠商咨詢解決方法。
3、若使用CH35x和CH38x與CH43x的組合芯片方案,當主芯片和CH43x的硬件通訊異常,驅(qū)動加載也會報錯,此時可以更換其他系統(tǒng)平臺進行驗證以排除原因2的問題。若其他系統(tǒng)上如Windows可以正常工作,則硬件正常,僅檢查原因2即可。