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)。