1. 开篇:为什么你需要这份指南?
如果你正在统信UOS上捣鼓一块CH384串口扩展卡,然后发现插上去系统没反应,设备管理器里也找不到那几十个梦寐以求的串口,那你来对地方了。这感觉就像买了一台新打印机,结果电脑根本不认,是不是挺让人头疼的?我前阵子就在一个国产化项目里遇到了这个坎儿,硬件是飞腾D2000的CPU,系统是统信UOS,需要接一大堆串口设备进行数据采集。原以为驱动安装就是“make && make install”的事儿,结果踩了不少坑,从内核头文件缺失到服务自启动配置不对,折腾了好一阵子。所以,我决定把这次实战经历完整地写下来,目标就是让你能避开我踩过的那些坑,一次性搞定CH384驱动的编译、加载和开机自启。
这份指南特别适合两类朋友:一类是在国产化替代项目中,需要在统信UOS环境下部署工业控制、数据采集、多设备通信等应用的开发者和运维工程师;另一类是对Linux驱动模块编译和系统服务配置感兴趣,想通过一个具体硬件实操来加深理解的爱好者。整个过程我们会涉及驱动源码编译、内核模块管理、systemd服务配置以及串口设备映射,我会尽量用大白话把每个步骤讲清楚,哪怕你之前没怎么编译过Linux驱动,跟着做也能搞定。毕竟,我们的目标不是成为内核专家,而是让硬件乖乖地工作起来。
2. 动手前的准备:环境检查与驱动源码获取
在开始敲命令之前,花几分钟把准备工作做扎实,能省去后面一大堆莫名其妙的报错。这就好比做饭前先备好菜和调料,不至于炒到一半发现没盐了。
2.1 确认你的系统环境
首先,我们得知道自己“厨房”里有什么。打开终端,输入以下命令看看你的统信UOS底子:
uname -a
cat /etc/os-release
重点看两个信息:内核版本和系统架构。从原始文章我们知道,CH384的驱动(至少目前这个版本)对内核版本比较敏感,它明确说了“仅适用4.xx及以下内核,在5.15以上内核发现报错”。所以,如果你的 uname -a 输出里显示内核是5.x甚至6.x,那可能就得先联系硬件厂商或社区,寻找适配新内核的驱动源码了,否则编译很可能失败。架构方面,飞腾D2000是ARM64(aarch64),确保你的系统也是64位的。
2.2 安装必备的编译工具和内核头文件
驱动编译是个“手艺活”,需要特定的工具。在统信UOS上,你需要安装开发工具链和当前运行内核对应的头文件。这就像你要组装一个模型,必须得有螺丝刀和说明书(内核头文件就是驱动编译的“说明书”)。
sudo apt update
sudo apt install build-essential gcc make
sudo apt install linux-headers-$(uname -r)
这里有个关键点:linux-headers-$(uname -r) 这个包必须成功安装。$(uname -r) 会自动替换成你当前的内核版本号,比如 4.19.0-arm64-desktop。有时候系统源里可能没有完全匹配的headers包,你可以尝试用 apt search linux-headers 看看有哪些可用的版本。如果实在找不到完全一致的,安装一个版本号最接近的(主版本号一致)有时也能工作,但这会引入不确定性。安装完成后,可以检查一下头文件路径是否存在:ls /lib/modules/$(uname -r)/build,这个路径在后续编译中会用到。
2.3 获取CH384驱动源码
驱动源码通常由硬件厂商(沁恒微电子)提供。你可能从随卡光盘、官网下载页面或技术支持那里得到一个压缩包,名字可能类似 CH38XDRV.tar 或 CH384_Linux_Driver.tar.gz。把它传到你的统信UOS机器上,找个合适的位置解压。我习惯在家目录下创建一个 drivers 文件夹专门放这些东西:
mkdir -p ~/drivers
cp /path/to/your/CH38XDRV.tar ~/drivers/
cd ~/drivers
tar -xvf CH38XDRV.tar
解压后,仔细看看目录结构。根据原始文章,驱动源码的路径可能是 CH38XDRV/DRV_28S/LINUX/driver/。用 ls 命令层层进入,直到你看到 Makefile、*.c、*.h 等源文件。这个 driver 目录就是我们接下来的“主战场”。进去之前,我建议你先看一眼 Makefile 文件,用 cat Makefile 或 less Makefile 快速浏览,确认里面没有明显针对特定内核版本的硬编码设置,不过通常厂商提供的驱动包 Makefile 都是写好的,我们直接用就行。
3. 核心步骤:驱动编译与手动加载
环境备好,源码在手,现在可以开始真正的编译了。这个过程其实不复杂,但输出的信息要看懂,知道成功和失败分别长什么样。


1517

被折叠的 条评论
为什么被折叠?



