自学内容网 自学内容网

宇泰串口卡驱动在Ubuntu22.04编译、安装汇总

从官网下载驱动官网地址

上传到Ubuntu, 目录结构如下:

驱动源代码: 驱动代码是基于开源项目编译来的

编译路径不能有中文路径,否则可能有类似错误

 

源码是基于Linux2.3内核编译,我当前是6.8.0-51,数据结构有升级,需要调整以下,否则有类似编译错误:

代码调整如下:

修改以上内容,应该就可以编译成功。

编译成功后,手动安装驱动,遇到一个问题,解决了好长时间

insmod: ERROR: could not insert module test.ko: Invalid module format

原因非常多,有说是gcc版本与编译Linux内核的版本不匹配,依赖的内核源码不匹配等等。

总体原因是:

linux-header搞坏了,也就是/lib/modules/$(uname -r)/build指向的kernel tree。重新安装以下linux header。

为了验证这个问题,我写了一个简单的驱动模块,没有业务逻辑,发现也是安装不成功。下面具体讲一下排除办法:

uname -r                                // 先查看当前操作系统的linux内核版本 

dpkg -l | grep linux-image // 查看已经安装的内核linux-header版本,把多余的删掉

apt remove --purge linux-image-6.8.0-50-generic

安装成功后:

但是无法显示ttyXR串口可用,查看一下日志

dmesg | tail -20

两种解决办法:一种是对内核进行签名,一种禁用安全启动

可能是设备的原因,我这里各种配置都试了一遍,在UEFI模式下还是无法成功加载驱动。然后切换到Legacy 模式意外的成功了。原来Legacy主要是没有安全启动模块,对系统安全有一些威胁,但测试环境可以忽略。


原文地址:https://blog.csdn.net/moyebaobei1/article/details/145119306

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!