【踩坑日记 · 嵌入式 Linux】在香橙派 Zero 2 上编译安装 CH340 驱动(OrangePi Zero 2)
前言
最近想尝试在 Linux 下编写和烧录 51 单片机程序,需要用到 CH340 模块,但是香橙派 Zero 2 没有预装它的驱动,所以需要下载 CH340 驱动的源码手动编译安装。在这里记录一下编译驱动时遇到的各种问题和解决方法,希望可以为大家提供一个解决编译时遇到的问题的思路。
1. 下载驱动源代码
在沁恒官网下载 CH340 驱动源码,下载完成后将压缩包上传到 Zero 2:https://www.wch.cn/downloads/CH341SER_LINUX_ZIP.html
2. 解压源代码
# 解压源代码
unzip ./CH341SER_LINUX.ZIP
# 进入源代码目录
cd ./CH341SER_LINUX/
3. 第一次编译 😁
在命令行中输入下列命令进行编译:
sudo make
发生错误:
根据报错信息搜索到该博文:ubuntu: /lib/modules/xx/build 目录不存在的解决办法(安装Linux headers失败),根据博文的信息输入下列命令安装 Linux内核头文件
:
sudo apt-get install build-essential
sudo apt-get update
sudo apt-get install linux-headers-$(uname -r)
提示无法找到软件包,因为不同开发板的 Linux内核头文件
是不同的,一般由厂商编译后上传到软件源,很遗憾 Zero 2 的厂商没有上传。
4. 寻找内核头文件安装包
那要去哪里获取内核头文件呢?最好的办法当然是去找开发板的客服啦,不过,本着 RTFM 原则,还是要先看一下开发板的手册。
果不其然,在手册中找到了安装头文件的教程,deb 包下载链接:
链接:https://pan.baidu.com/s/1vWQmCmSYdH7iCDFyKpJtVw
提取码:zero
我的 Zero 2 刷的 Linux 内核版本是 5.16.17,根据手册提示需要下载 linux-headers-current-sun50iw9_3.0.4_arm64.deb
,下载成功后将 deb 文件上传到开发板。
5. 安装内核头文件
在开发板上执行下列命令:
sudo dpkg -i ./linux-headers-current-sun50iw9_3.0.4_arm64.deb
待安装结束后输入:
ls /usr/src
输出上列信息,代表已经安装成功,准备再次编译。
6. 第二次编译 😑
开始第二次编译:
sudo make
报错,我们 先解决第一个出现的错误:
根据错误信息搜索到:linux 4.13版本(ubuntu)下安装ch340驱动,根据博文的解决方法,注释掉 ch34x.c 第 591 行的代码,然后保存。
7. 第三次编译 🤨
开始第三次编译:
sudo make
报错,仍然 先解决第一个出现的错误:
这里的报错信息的大意是函数 ch34x_write_room
的返回值应该是 unsigned int
,那我们来修改一下:
将 ch34x.c 第938 行和 942 行的 int
前添加 unsigned
,如下图,然后保存。
8. 第四次编译😶
开始第四次编译:
sudo make
报错,这时只有一个错误了:
哈,和上一步中的错误类似,我们把 ch34x.c 中的 ch34x_chars_in_buffer
函数的返回值改成 unsigned int
就好了(分别位于 964 行和 968 行),如下:
修改完后保存文件。
9. 第五次编译 🙃
开始第五次编译:
sudo make
哈,终于编译成功啦,接下来就可以安装驱动了。
10. 安装 CH340 驱动
开始安装:
sudo make load
输出上面的信息表示安装完成。
11. 测试安装情况
将 CH340 串口模块插入到 Zero 2 的 USB 口。
输入:
lsusb
可以看到 USB 口已经识别出 CH340 了,继续输入:
ls /dev/*tty*
CH340 串口模块已经挂载到 ttyUSB0
,驱动安装成功。😀
12. 开机自动加载驱动文件
每次开机后,都需要重新安装 CH340 驱动(参考序号 10),如果想要开机自动加载 CH340 驱动,需要执行:
# 将驱动文件复制到相应目录
sudo cp ch341.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial
# 自动分析驱动依赖情况
sudo depmod
重启开发板,以后就可以自动加载驱动了。🚀
参考资料
- OrangePi_Zero2_H616_用户手册_v4.0
- ubuntu: /lib/modules/xx/build 目录不存在的解决办法(安装Linux headers失败)
- linux 4.13版本(ubuntu)下安装ch340驱动
更多推荐
所有评论(0)