Linux Device Driver
SoldierJazz2021
横眉冷对千夫指,俯首甘为扫地僧。
展开
-
OpenWrt 之 MT7628 使用GPIO中断
在支持设备树的系统中使用中断一般有2种方式。一、DTS配置interrupt节点这里有个挺好的博客,链接地址:https://biscuitos.github.io/blog/DTS-interrupt/也即,找到dts文件中的GPIO中断控制器节点,然后在你的dts驱动节点中根据interruptcells数量做下声明。二、通过宏gpio_to_irq获取我在实验中是...原创 2020-03-27 10:03:26 · 1736 阅读 · 0 评论 -
Linux驱动如何在不同版本上快速迭代升级
As well known,Linux内核版本更新很快,有些内核版本的迭代升级可能会导致在使用的驱动版本存在编译失败或使用的兼容性问题,如何快速定位到内核版本间变更的地方,并处理掉该问题,列一下我常用的解决方法。(之前遇到问题,就下载对应的内核版本安装测试的方法,看来很foolish)1、通过kernel.org内核官网查看具体版本相较于上版本的ChangeLog。该方法可以全面看到内核版...原创 2019-05-24 18:08:39 · 1303 阅读 · 0 评论 -
Android/Linux 系统添加对多点触摸屏的支持
含有 HID 多点触摸控制器的触摸屏、触摸板在 Android 和 Linux 内核中都是由 "hid-multitouch" 驱动进行支持的。因此如果你的系统连接触摸屏没有反应,问题基本都出于驱动未加载或者与触摸屏的 VID 与 PID 不适配。以下分情形讨论:1、系统中已存在“hid-multitouch”驱动 若“hid-multitouch”驱动是以内核模块的方式存在于系统里...原创 2018-07-06 09:52:12 · 4632 阅读 · 8 评论 -
《言简意赅之Linux设备驱动编程》 前言
linux 内核与驱动开发是一门很深的学问,主要是由于覆盖知识面较广、内核架构设计层级较深、软硬件知识要兼具。因此自己在学习理解时会经常遇到某一章节需要反复阅读理解多次。所以,我想用一种言简意赅的方式讲述 Linux 内核与设备驱动开发。我认为把一个概念阐述的比较言简意赅的关键在于抽象与从宏观角度理解。也即,充分理解框架与核心点,然后在实际开发中不断强化该知识点的学习与使用。这样可以起到事倍功半的原创 2017-11-13 20:11:36 · 731 阅读 · 0 评论 -
Linux 驱动编译报错:error: macro "__DATE__" might prevent reproducible builds [-Werror=date-time]
编译驱动时遇到这个错误提示,表示当前编译环境中将关于 DATE 以及 TIME 的警告也作为错误来进行处理的。有如下几种方法可以参考:1. 在编译驱动的相应 Makefile 中增加一行:CFLAGS += -Wno-error=date-time,然后保存重新 make;2. 若 CFLAGS 不生效,将关键字替换为 EXTRA_FLAGS;3. 修改 /lib/modules/原创 2017-07-17 11:32:18 · 7437 阅读 · 1 评论 -
tty,串口,控制台与驱动程序
tty 设备的名称是从过去的电传打字机缩写而来,最初是指链接到 Unix 系统上的物理或者虚拟终端。随着时间的推移,当通过串行口能够建立起终端连接后,这个名字也用来指任何的串口设备。物理 tty 设备的例子有串口、USB 到串口的转换器,还有需要特殊处理才能正常工作的调制解调器(比如传统的 WinModem 类设备)等。tty 虚拟设备支持虚拟控制台,它能通过键盘及网络连接或者通过 xterm原创 2017-05-17 15:13:14 · 1276 阅读 · 0 评论 -
Linux 如何加载并口/打印口驱动
实际上Linux是自带并口驱动的,因此不需要再使用第三方驱动编译加载了。设置并口的具体步骤如下:rmmod lprmmod parport_pcinsmod /usr/lib/modules/$(shell uname -r)/kernel/drivers/parport/parport_pc io=0xb000 irq=10或者 modprobe parport_pc io=0...原创 2017-03-30 14:06:45 · 4139 阅读 · 2 评论 -
CH340 Linux驱动使用教程
在官方Linux内核版本中自Kernel2.6以后就默认包含了对CH340/CH341芯片的驱动支持了,但比较遗憾的是该自带驱动版本较老(由开源社区开发者提交)已不能满足使用需求了,因此我们需要用芯片官网提供的新驱动进行替换链接。1. 首先去官网下载最新的驱动,下载链接与驱动简介,参见我的其他博客:CH340各平台下驱动2. 驱动下载之后,将其拷贝到Linux系统中,在使用之前首先需要将老原创 2017-04-14 11:53:26 · 31464 阅读 · 49 评论 -
modprobe: FATAL: Module xxx.ko not found in directory /lib/modules/$(uname -r)
如果遇到此错误,首先要检查要加载的驱动是否已经存在与系统默认驱动路径/lib/modules/$(uname -r) 下面,确认拷贝完成后,需要在加载模块之前建立该模块的依赖关系。也即必须用 depmod 来更新一下/lib/modules/$(uname -r)/modules.dep 文件。之后再执行指令 modprobe xxx.ko 就可以了。具体步骤:root@ubuntu:原创 2017-04-11 15:07:56 · 17437 阅读 · 10 评论 -
调用 usb_control_msg 返回错误值 -32, Broken pipe, 对 hidraw write时 返回错误值 -32, Broken pipe
如题,使用 libusb 对 hid 类设备进行控制传输的时候,有时会遇到此错误,但是实际上传输是成功的,用usb分析仪等工具和程序中验证,比如发送数据成功后,让设备返回给主机,主机读取数据后验证数据正确性。由此看来,该错误是内核返回出现了错误,并不是指实际的通讯异常。现在在使用其他HID类设备在进行测试,发现有些HID类设备不会出现类似的报错,因此写程序模拟该设备通讯过程,尝试与主机通讯,依原创 2017-02-28 20:11:07 · 3177 阅读 · 6 评论