PCIe轉(zhuǎn)打印口芯片CH382/CH384以及PCI轉(zhuǎn)打印口芯片CH351/CH352/CH353/CH356CH358 打印口轉(zhuǎn)接方案支持Windows和Linux操作系統(tǒng),在系統(tǒng)下會生成獨立的打印口,本文主要介紹Linux操作系統(tǒng)如何為設(shè)備加載打印口驅(qū)動。

確認(rèn)系統(tǒng)是否默認(rèn)支持

Linux系統(tǒng)是自帶并口驅(qū)動的,因此只需確認(rèn)系統(tǒng)默認(rèn)有沒有支持該并口設(shè)備即可,Linux下的并口設(shè)備節(jié)點:/dev/lp*,可以進行如下確認(rèn):

1、執(zhí)行:ls /dev/lp*,在卡插入前后對比是否有新的節(jié)點產(chǎn)生;

2、執(zhí)行:lpinfo -v,查看是否有如下信息:

direct?parallel?/dev/lp0

確認(rèn)硬件工作狀態(tài)

當(dāng)默認(rèn)沒有打印機節(jié)點時,可通過lspci命令確認(rèn)當(dāng)前硬件的工作狀態(tài)以及驅(qū)動匹配情況。CH35x和CH38x芯片使用的VID有2種:0x1C00和0x4348,命令為:

lspci?-vd?1c00:*

lspci?-vd?4348:*

運行如上命令后,若設(shè)備存在,則會顯示如下設(shè)備信息:

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”信息中會顯示當(dāng)前已經(jīng)為該設(shè)備加載的驅(qū)動。

手動加載并口驅(qū)動

1、卸載驅(qū)動

sudo?rmmod?lp
sudo?rmmod?parport_pc

2、確認(rèn)系統(tǒng)給設(shè)備分配的打印口IO基地址和中斷資源

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

?如以上設(shè)備信息,可確認(rèn):

并口地址:
I/O?ports?at?1100?[size=4]

IRQ中斷號:
41

3、加載parport_pc驅(qū)動

sudo?insmod?/usr/lib/modules/$(shell?uname?-r)/kernel/drivers/parport/parport_pc?io=0x1100?irq=41
或者?
sudo?modprobe?parport_pc?io=0x1100?irq=41

如果執(zhí)行成功,會生成設(shè)備節(jié)點 /dev/parport*;

4、加載lp驅(qū)動

sudo?modprobe?lp

如果執(zhí)行成功,會生成設(shè)備節(jié)點/dev/lp*;

出錯可能原因

1、系統(tǒng)當(dāng)前未發(fā)現(xiàn)任何CH35x和CH38x并口卡。

2、系統(tǒng)默認(rèn)為CH35x和CH38x并口卡分配的IO地址不可用,導(dǎo)致驅(qū)動無法成功訪問硬件,甚至造成系統(tǒng)Crash。原因:CH35x和CH38x并口卡的相關(guān)串口寄存器均位于IO空間內(nèi),部分非X86和X64的架構(gòu)不支持獨立編址或者支持分配地址但地址無法通過原生IO地址操作直接訪問,此時可聯(lián)系相應(yīng)CPU或系統(tǒng)廠商咨詢解決方法。

此外,WCH的CH38x和CH35x的全系列串口并口卡已經(jīng)提交給國內(nèi)主流OS廠商做了生態(tài)適配(UOS/Kylin等),可以直接和OS廠商聯(lián)系獲取適配的驅(qū)動補丁包或者操作系統(tǒng)。