CH34X linux驱动安装,参考代码例程

news2024/11/27 11:32:12

 想用USB转I2C工具调试个I2C接口芯片未果。

 驱动安装参考下面内容:

1. 使用的系统环境

本文使用Ubuntu 20.04 LTS版本Linux系统为测试环境。

 

2. 使用到的工具软件介绍

Linux系统下编译CH365/CH367的驱动使用到的工具主要有gcc和make,版本如下所示:

3. 下载CH365/CH367驱动的源代码CH36X_LINUX.ZIP,解压后文件结构如下:

4. 编译CH365/CH367驱动

执行cd指令进入drv目录下,执行make指令编译驱动程序。

执行make指令会遇到警告和错误,不重要的警告可以忽略,错误却不能忽略。

/home/ubuntu/CH36X_LINUX/drv/ch36x.c: In function ‘ch36x_init’:

/home/ubuntu/CH36X_LINUX/drv/ch36x.c:1679:56: error: macro "__DATE__" might prevent reproducible builds [-Werror=date-time]

 1679 |  printk(KERN_INFO "-->WCH ch36x dirver init %s, %s\n", __DATE__,

      |                                                        ^~~~~~~~

/home/ubuntu/CH36X_LINUX/drv/ch36x.c:1680:9: error: macro "__TIME__" might prevent reproducible builds [-Werror=date-time]

 1680 |         __TIME__);

      |         ^~~~~~~~

/home/ubuntu/CH36X_LINUX/drv/ch36x.c: In function ‘ch36x_exit’:

/home/ubuntu/CH36X_LINUX/drv/ch36x.c:1736:56: error: macro "__DATE__" might prevent reproducible builds [-Werror=date-time]

 1736 |  printk(KERN_INFO "-->WCH ch36x driver exit %s, %s\n", __DATE__,

      |                                                        ^~~~~~~~

/home/ubuntu/CH36X_LINUX/drv/ch36x.c:1737:9: error: macro "__TIME__" might prevent reproducible builds [-Werror=date-time]

 1737 |         __TIME__);

      |         ^~~~~~~~

At top level:

/home/ubuntu/CH36X_LINUX/drv/ch36x.c:778:1: warning: ‘ch365_interrupt_handler’ defined but not used [-Wunused-function]

  778 | ch365_interrupt_handler(int irq, void *dev_id)

      | ^~~~~~~~~~~~~~~~~~~~~~~

cc1: some warnings being treated as errors

make[2]: *** [scripts/Makefile.build:288:/home/ubuntu/CH36X_LINUX/drv/ch36x.o] 错误 1

make[1]: *** [Makefile:1849:/home/ubuntu/CH36X_LINUX/drv] 错误 2

make[1]: 离开目录“/usr/src/linux-headers-5.11.0-37-generic”

make: *** [Makefile:12:modules] 错误 2

网络上提供的解决方法如下:

1. 在编译驱动的相应 Makefile 中增加一行:CFLAGS += -Wno-error=date-time,然后保存重新 make;

2. 若 CFLAGS 不生效,将关键字替换为 EXTRA_FLAGS;

3. 修改 /lib/modules/'uname -r'/build/Makefile 文件,找到包含 “-Werror=date-time” 这一行注释掉,然后保存退出。之后重新 make 即可;

刘工分析报错是因为ch36x.c文件中1679和1735两行使用到了__DATE__,__TIME__。

经验证如下两种办法均可解决编译错误问题:

1. 直接注释掉使用了__DATE__,__TIME__这两个变量的相关代码行。

2. 修改/lib/modules/5.11.0-37-generic/build/Makefile文件注释掉KBUILD_CFLAGS   += -Werror=date-time

重新执行make指令,可成功编译出CH365/CH367的驱动文件ch36x.ko。

ubuntu@LK:~/CH36X_LINUX/drv$ make

make -C /lib/modules/5.11.0-37-generic/build M=/home/ubuntu/CH36X_LINUX/drv

make[1]: 进入目录“/usr/src/linux-headers-5.11.0-37-generic”

make[1]: 离开目录“/usr/src/linux-headers-5.11.0-37-generic”

ubuntu@LK:~/CH36X_LINUX/drv$ ls

ch36x.c    ch36x.ko   ch36x.mod.c    ch36x.mod.o  Makefile       Module.symvers

ch36x.dwo  ch36x.mod  ch36x.mod.dwo  ch36x.o      modules.order

5. 安装编译成功的驱动文件ch36x.ko

执行sudo insmod /home/ubuntu/CH36X_LINUX/drv/ch36x.ko 安装驱动

ubuntu@LK:~/CH36X_LINUX/drv$ sudo insmod /home/ubuntu/CH36X_LINUX/drv/ch36x.ko

执行 lsmod

ubuntu@LK:~/CH36X_LINUX/drv$ lsmod

Module                  Size  Used by

ch36x                  28672  0

 
代表CH365/CH367的驱动安装成功。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/3991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“清华女神”回国,赤子之心,如愿以偿

目录1、女神科学家颜宁是谁2、颜宁在深圳人才论坛最新演讲,以及招聘邮箱3、颜宁微博回应4、结论与展望最近女神科学家颜宁回国了,整个科学界和中国都沸腾了,也上了热搜,成了热门话题,越来越多的海归精英选择回国 1、…

LeetCode 每日一题——816. 模糊坐标

1.题目描述 816. 模糊坐标 我们有一些二维坐标,如 “(1, 3)” 或 “(2, 0.5)”,然后我们移除所有逗号,小数点和空格,得到一个字符串S。返回所有可能的原始字符串到一个列表中。 原始的坐标表示法不会存在多余的零,所…

5_会话管理实现登录功能

一 会话管理登录功能 前置了解 初识cookie 如下图,浏览器初次访问服务器时,服务器生成数据将数据存放在浏览器的cookie中,当浏览器再次访问服务器时将会携带该cookie,此时服务器就可以确定该浏览器的身份了。 session的使用 如下图,session的实现需要借助cookie,不同cookie的是…

荧光标记氨基酸:荧光标记L-苯丙氨酸乙酯盐酸盐,L-phenylalanine ethylester labeled

产品名称:荧光标记L-苯丙氨酸乙酯盐酸盐,L-phenylalanine ethylester labeled L-苯丙氨酸乙酯盐酸盐是化学物质,分子式是C11H16NO2。别名L-苯基丙氨酸乙酯盐酸盐,熔点: 154-157ºC,比旋光度: 33.7º(…

使用myCobot 280机械臂校准OAK智能深度相机

编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 ▌前言 Hello,大家好,这里是OAK中国,我是助手…

第三站:函数(第三幕)递归训练

目录 一、编写一个函数实现n的k次方,使用递归实现。(k为整数) 二、写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和 三、编写一个函数 reverse_string(char * string)(递归实现&#x…

WebDAV之葫芦儿·派盘+墨阅

墨阅 支持webdav方式连接葫芦儿派盘。 是一款专注于帮助用户离线缓存网页文档图书漫画的免费工具APP。您可以利用墨阅收集来自互联网网站平台的公开文章,图片,漫画等,可以对网页样式进行调整,支持自定义动作,批量离线等功能方便用户日常离线。目前支持小说,markdown,图…

公众号搜题系统

公众号搜题系统 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(点击跳转…

语义分割之RTFormer介绍

语义分割之RTFormer介绍 论文链接:https://arxiv.org/abs/2210.07124 代码地址:https://github.com/PaddlePaddle/PaddleSeg ViT以来,Transformer作为特征提取器在语义分割领域证明了自己,但是由于Transformer的核心 muti-self-…

苹果电脑提高工作效率alfred 5中文

Mac电脑上哪个效率工具好用呢?alfred 5是最强大的效率启动工具之一,丰富的插件资源、简单的上手成本,会是你提高 Mac 使用效率的得力助手。可通过热键,关键字,文本扩展等提高您的效率。搜索您的Mac和网络,并…

Sprint产品待办列表的优先级要怎么排?

在梳理产品待办事项列表的过程中,产品负责人需要先做优先级排列,保证我们在一定的时间盒内能够交付需要优先级最高、最具价值的用户故事。 那这个用户故事的优先级要怎么排列,我们怎样选择用户故事的实现顺序? 有一个实践可以推…

力扣(LeetCode)816. 模糊坐标(C++)

模拟 一次遍历 sss ,尝试对遍历到的位置进行分割。对分割点左右字符串 ltltlt , rtrtrt 分别构造子串。 构造子串的规则: 整数不以 000 开头,(特例)单独的 000 可以作为整数。小数不以 000 结尾。小数的整数位是 000 ,则整数位不能组成新数…

怎么给PDF添加页面?推荐三个PDF如何插入页面小妙招

在我们生活中,平时接触PDF文件可能没有接触Word文件那么的多。像处理PDF文件这种问题上并没有Word文件那么的容易,毕竟PDF它不易进行内容编辑。这时候如果有小伙伴需要对PDF文件进行修改或者进行插入页面,但是PDF文件是无法直接进行修改的。那…

做期货的阶段(做期货的几个阶段)

如何自己做好期货 学习交易大致有三阶段:直观直觉阶段,看到涨就做多,看到跌就做空,结果半赢半输;学习积累的阶段,看到涨跌不觉涨跌,想得很多,结果赢少赔多;领悟后再次直…

软件架构师考试的真实感受

近1个半月,因准备了软件架构师的考试,停了BLOG,今天想写点东西作为阶段性的沉淀。 节奏紧 和软设比起来,最直观的感受就是节奏紧,软设上午通常能够提前一个小时考完,加上下午2点才开考,中间有…

Java UML 类图

继承 继承:重用父类的某些功能 缺点:强耦合 耦合:修改一方,会影响另一方 应用:是否需要“向上转型” 接口 行为的抽象、可跨越不同的类 不包含实现实现类需完全实现可实现多个接口 是一种“自顶向下”的设计&…

C++多态(1)

目录1. 多态的概念2. 多态的定义和实现2.1 多态的构成条件2.1.1 重写2.2.2 指针或者引用2.2 虚函数重写的两个例外2.3 多态里的一个不规范的地方2.4 重载、重写(覆盖)、隐藏(重定义)的对比3. C11 override 和 final1. 多态的概念 …

QSS编辑器QssEditor之三:Ribbon控件与换肤

一.Ribbon控件 Ribbon控件即Office样式UI,Ribbon控件有许多开源实现,例如:Qt优秀开源项目之三:SARibbon SARibbon功能强大,但以学习为目的的话,我们可以自己去实现一个简单的。基本思路是自定义QTabWidget,然后通过QSS调整样式。 如上图所示,我们可以实现一个类QHRi…

IP数据报首部字段、TCP报文段首部字段

文章目录 IP数据报首部字段IP数据报格式TCP报文段首部字段IP数据报首部字段 首部字段功能1.版本是IPv4还是IPv62.首部长度IP数据报首部的长度3.服务类型4.总长度IP数据报的总长度。若总长度>该网段的MTU,则需要分片。分片后IP数据报的总长度必然发生改变。5.标识保证IP分组…

C++--模板

目录 泛型编程 函数模板 函数模板概念 函数模板格式 函数模板的原理 函数模板的实例化 模板参数的匹配原则 类模板 类模板的定义格式 类模板的实例化 非类型模板参数 模板的特化 概念 函数模板特化 类模板特化 泛型编程 不再是针对某种类型,而是能适…