PCI/PCIe转打印口/并口Linux系统使用说明

news/2025/2/21 5:07:16/

PCIe转打印口芯片CH382/CH384以及PCI转打印口芯片CH351/CH352/CH353/CH356CH358 打印口转接方案支持Windows和Linux操作系统,在系统下会生成独立的打印口,本文主要介绍Linux操作系统如何为设备加载打印口驱动。

确认系统是否默认支持

Linux系统是自带并口驱动的,因此只需确认系统默认有没有支持该并口设备即可,Linux下的并口设备节点:/dev/lp*,可以进行如下确认:

1、执行:ls /dev/lp*,在卡插入前后对比是否有新的节点产生;

2、执行:lpinfo -v,查看是否有如下信息:

direct parallel /dev/lp0

确认硬件工作状态

当默认没有打印机节点时,可通过lspci命令确认当前硬件的工作状态以及驱动匹配情况。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”信息中会显示当前已经为该设备加载的驱动。

手动加载并口驱动

1、卸载驱动

sudo rmmod lp
sudo rmmod parport_pc

2、确认系统给设备分配的打印口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

 如以上设备信息,可确认:

并口地址:
I/O ports at 1100 [size=4]IRQ中断号:
41

3、加载parport_pc驱动

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

如果执行成功,会生成设备节点 /dev/parport*;

4、加载lp驱动

sudo modprobe lp

如果执行成功,会生成设备节点/dev/lp*;

出错可能原因

1、系统当前未发现任何CH35x和CH38x并口卡。

2、系统默认为CH35x和CH38x并口卡分配的IO地址不可用,导致驱动无法成功访问硬件,甚至造成系统Crash。原因:CH35x和CH38x并口卡的相关串口寄存器均位于IO空间内,部分非X86和X64的架构不支持独立编址或者支持分配地址但地址无法通过原生IO地址操作直接访问,此时可联系相应CPU或系统厂商咨询解决方法。

此外,WCH的CH38x和CH35x的全系列串口并口卡已经提交给国内主流OS厂商做了生态适配(UOS/Kylin等),可以直接和OS厂商联系获取适配的驱动补丁包或者操作系统。


http://www.ppmy.cn/news/1259689.html

相关文章

基于深度学习的表情动作单元识别综述

论文标题:基于深度学习的表情动作单元识别综述 作者:邵志文1,2,周 勇1,2,谭 鑫3,马利庄3,4,刘 兵1,2,姚 睿1,2 发表日期&#xff1a…

基于深度学习CRNN的水表读数识别系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 随着科技的不断发展,深度学习技术在各个领域都取得了显著的成果。其中,基于深度学习的图像识别技术在计算机视觉领域具有重要的应用价值。…

Qt/C++音视频开发57-切换音视频轨道/切换节目流/分别切换音频视频轨道

一、前言 对各种音视频文件格式的支持,是一个播放器的基础功能。一般的音视频文件只有1路流,比如音频文件只有1路音频流,视频文件只有1路音频1路视频流,实践过程中发现,还有一种ts格式的文件,可能有多路流…

记录一个困难(python)

在从一个网页跳转另一个网页(该网页是登录页面) 采用python的selenium库对网页进行自动化登录 import time from selenium import webdriver path chromedriver.exe driver webdriver.Chrome(path) driver.get("url") time.sleep(2) driver.f…

JavaScript中处理时间差

ES6版本 function countdown(endTime, includeSeconds true) {// 获取当前时间let now new Date();// 将传入的结束时间字符串转换为日期对象let endDateTime new Date(endTime);// 检查传入的时间字符串是否只包含日期(不包含时分秒)if (endTime.tr…

js 将后端返回的对象转换为数组

在实际开发中,后端返回的数据结构可能不是我们想要的,这个时候就需要转换了 类似于: 想要的数组,这个时候就需要转换一下了 // 获取通告类型async getTypesIncident() {const res await getTypes()const data res.data// 转换为数组const dataArray Object.entries(data).m…

数据结构与算法编程题44

有向无权图邻接矩阵表示 //参考博客&#xff1a;https://blog.csdn.net/qq_54162207/article/details/117414707#include <iostream> using namespace std;#define Maxsize 100 #define VertexmMaxNum 20 #define ERROR 0 #define OK 1 typedef string VertexType; …

阿里云生态离线数仓

1. 大数据开发治理平台 DataWorks 功能齐全&#xff1a;10多年大数据建设沉淀完整的平台&#xff0c;覆盖数据开发治理的全生命周期 简单易用&#xff1a;全图形化界面&#xff0c;SQL为主的数据开发方式 安全稳定&#xff1a;双11日千万级任务稳定调度&#x…