编译替换Linux系统自带的ch340驱动
系统自带驱动
在官方Linux内核版本中自Kernel2.6以后就默认包含了对CH340/CH341芯片的驱动支持了,但比较遗憾的是该自带驱动版本较老(由开源社区开发者提交)已不能满足使用需求了,因此我们需要用芯片官网(http://www.wch.cn/ WCH 沁恒)提供的新驱动进行替换链接。
系统的默认驱动目录为:
/lib/modules/$(uname -r)/kernel/drivers,
系统自带驱动的完整路径名:
/lib/modules/$(uname -r)/kernel/drivers/usb/serial/ch341.ko.xz
(CentOS8.1 是ch341.ko.xz,网上资料一般是ch341.ko)
将系统自带驱动移动到别处备份
官网驱动下载
官网驱动下载地址:
http://www.wch.cn/download/CH341SER_LINUX_ZIP.html
解压后包含3个文件:
ch34x.c readme.txt Makefile
编译安装
安装编译工具
dnf group install "Development Tools"
安装操作
unzip CH341SER_LINUX.ZIP
cd CH341SER_LINUX/
make
sudo make load
编译错误处理
问题1
make[1]: *** /lib/modules/4.18.0-147.el8.x86_64/build: No such file or directory. Stop.
yum list | grep kernel-devel 查询kernel-devel包
uname –r 查询系统内核版本
yum install kernel-devel-4.18.0-147.el8.x86_64 安装内核版本匹配的kernel-devel包
问题2
Makefile:977: *** "Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel". Stop.
根据提示,安装elfutils-libelf-devel包
yum install elfutils-libelf-devel
问题3
/home/softwares/CH341SER_LINUX/ch34x.c:591:2: error: unknown type name ‘wait_queue_t’;
在整个源码中,wait_queue_t 没有被使用过,所以直接在源码中注释掉即可。
//wait_queue_t wait;
问题4
/home/softwares/CH341SER_LINUX/ch34x.c:797:7: error: implicit declaration of function ‘signal_pending’;
引入头文件#include <linux/sched/signal.h>
include <linux/sched/signal.h>
开机自动加载驱动
cp ch34x.ko /lib/modules/4.18.0-147.el8.x86_64/kernel/drivers/usb/serial/
depmod
reboot
编译后的驱动
版权声明:
作者:RuyeNet
链接:https://www.iloveu.top/archives/122
来源:RuyeNet
文章版权归作者所有,未经允许请勿转载。

共有 0 条评论