首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

21.Linux-写USB键盘驱动(详解)

本节目的:     根据上节写USB鼠标驱动,来依葫芦画瓢写出键盘驱动 1.首先我们通过上节代码中修改,来打印下键盘驱动数据到底是怎样 先来回忆下,我们之前写鼠标驱动id_table是这样:...我们找到输入子系统(input.h)中按键A定义值,它对应却是30,看来不是直接调用 我们再来参考内核自带USB键盘驱动 (/drivers/hid/usbhid/usbkbd.c) 发现它中断函数中有个键盘描述码表...3.接下来再来仔细分析下内核自带USB键盘驱动usbkbd.c里中断函数: 代码如下: static void usb_kbd_irq(struct urb *urb) { struct...(full HID) support     //hid:人机交互USB驱动,比如鼠标,键盘等 然后make uImage 编译内核 将新键盘驱动模块放入nfs文件系统目录中 5.2然后烧写内核,...装载触摸屏驱动模块 如下图,当我们插上USB键盘时,可以看到该VID和PID,和电脑上键盘参数一样 ?

7.1K92

详解linux usb host驱动编写入门

大家如果打开kernel usb host目录,就会发现下面包含了ohci,uhci,ehci,xhci,whci等多种形式控制器驱动。...1、代码分布 drivers/usb目录下面,host目录包括了host驱动代码,core目录包含了主要api接口代码,而其他目录则主要是device驱动代码。...2、device驱动怎么看 device驱动大多数和上层协议有关,不涉及到具体寄存器读写。...示例代码可以参考usb-skeleton.c 3、host驱动怎么看 a,不妨以s3c2410host作为范例进行分析,首先找到Makefile, obj-$(CONFIG_USB_OHCI_HCD_S3C2410...但是,如果要深入了解usb host&device驱动,那么除了这些代码逻辑,那么还要熟读usb协议手册,更重要学会用catc协议分析仪真正地去了解usb是如何发包和收包

5.8K75
您找到你想要的搜索结果了吗?
是的
没有找到

Linux驱动开发: USB驱动开发

四、 linux内核下USB相关API函数与数据结构 前面介绍了USB相关一些基础概念与重要数据结构,接下来就分析在linux内核中如何编写一个USB 驱动程序,编写与一个USB设备驱动程序方法和其他总线驱动方式类似...\n"); } //定义USB驱动结构体 static struct usb_driver usbtest_driver = { .name = "linux_usb_drv", .id_table...urb(USB Request Block)Linux内核中USB驱动实现上一个数据结构,用于组织每一次USB设备驱动数据传输请求。...鼠标驱动(中断传输方式) 5.1 USB驱动注册框架代码 #include #include #include ...#include /* 本程序为USB鼠标驱动程序,要安装本驱动,需要先将内核自带USB驱动程序卸载掉 */ //定义USBIDTAB 24ae:2002 static

69.2K20

Linux USB 设备驱动模型

Linux 内核源码:include\linux\usb.h Linux 内核源码:drivers\hid\usbhid\usbmouse.c 1....BUS/DEV/DRV 模型 "USB 接口"是逻辑上 USB 设备,编写 usb_driver 驱动程序,支持是"USB 接口": USB 控制器或 Hub 识别出 USB 设备后,会创建、...注册 usb_device usb_device 被"drivers\usb\core\generic.c" 驱动认领后,会选择、设置某个配置 这个配置下面的接口,都会分配、设置、注册一个 usb_interface...接口函数 在 USB 设备驱动程序中,能使用 USB 函数都在这个头文件里:include\linux\usb.h。...:这是一个同步函数,它会等待 URB 结束 usb_unlink_urb:这是一个异步函数,它不会等待 URB 结束,USB 控制器驱动会调用它回调函数 void usb_kill_urb(struct

39740

19.Linux-USB总线驱动分析

如下图所示,以windows为例,我们插上一个没有USB设备驱动USB,就会提示你安装驱动程序 为什么一插上就有会提示信息?...是因为windows自带了USB总线驱动程序, USB总线驱动程序负责: 识别USB设备,给USB设备找到对应驱动程序 新接入USB设备默认地址(编号)是0,在未分配新编号前,PC主机使用0地址和它通信...然后USB总线驱动程序都会给它分配一个地址(编号) PC机想访问USB总线上某个USB设备时,发出命令都含有对应地址(编号) USB是一种主从结构。..., 比如:鼠标的数据是从鼠标传到PC机, 对应端点称为"中断输入端点" 其中端点0是设备默认控制端点, 既能输出也能输入,用于USB设备识别过程 同样linux内核也自带了USB总线驱动程序,框架如下...其中usb_bus_type是一个全局变量, 它和我们之前学platform平台总线相似,属于USB总线, 是Linux中bus一种.

8.5K91

Linux驱动开发: 编写USB接口光谱仪驱动

/download.csdn.net/download/xiaolong1126626497/19036980 二、功能介绍 使用光谱仪设备是USB接口,厂家只提供了windows下驱动和配套软件...,不支持Linux使用,也没有完善资料,现在设备想在Linux系统下使用,要支持PClinux和嵌入式Linux设备,只能自己重新开发一个驱动再编写一个配套上位机(上位机是采用QT写)。...所有就在windows系统下使用USB抓包软件,分析光谱仪设备与windows下软件间通信数据包,对比命令手册,得到完整通讯流程,然后再对比编写了一个Linux系统下驱动。..." #define IOCTL_CMD_RW 0x39654127 //读写命令 #endif 3.2 驱动.c #include #include <linux/module.h..._usb_dev_fops, }; //USB设备信息与驱动端匹配成功时候调用。

3.6K10

制作 Kali 可启动 USB 驱动器 (Linux)

制作 Kali 可启动 USB 驱动器 (Linux) 我们最喜欢方式,也是最快方法,启动和运行 Kali Linux 是从 USB 驱动器“实时”运行它。...驱动器上 它具有潜在持久性——通过一些额外努力,您可以将 Kali Linux “实时” USB 驱动器配置为具有持久性存储,因此您收集数据将在重新启动后保存 为此,我们首先需要创建一个可引导...USB 驱动器,该驱动器已从 Kali Linux ISO 映像设置。...在 Linux (DD) 上创建可引导 Kali USB 驱动器 在 Linux 环境中创建可引导 Kali Linux USB 驱动器很容易。...警告:虽然将 Kali Linux 映像到 USB 驱动过程非常简单,但如果您不明白自己在做什么,或者指定了不正确磁盘驱动器,也可以使用 dd 轻松覆盖您不打算使用磁盘驱动器。输出路径。

13810

usb转rs485 linux驱动下载,USB转RS485串口驱动「建议收藏」

大家好,又见面了,我是你们朋友全栈君。 USB转RS485串口驱动是一款非常专业USB转RS485驱动安装程序。...这款软件适合WIN7/WIN XP/LINUX等系统,能够帮助用户一键解决USB无法转换成RS485问题,需要小伙伴可下载体验。 【安装方法】 1、在安装前可以先看看使用说明再安装。...将USB转换线插入电脑USB接口中,系统会提示检测到新设备并出现新硬件添加向导,选择从列表或指定位置安装,手动安装,找到刚刚驱动解压目录,让WINDOWS自动搜索更新驱动就OK了。...根据硬件添加向导一步步引导安装驱动 【支持系统】 Windows 8.1 Windows 8.1 x64 Windows 8 Windows 8 x64 Windows Server2012 Windows...Vista x64 Windows Server 2003 Windows Server 2003 x64 Windows XP Windows XP x64 Windows ME Windows 98 Linux

8.7K40

详解linux 驱动编写(sd卡驱动

随着sd卡流行,sd卡在嵌入式设备上使用场景也越来越多。那下面我们可以看一下,linux驱动框架上是怎么处理sd卡驱动?...1、代码目录地址 drivers/mmc 2、基本结构 从mmc代码结构可以看得出,主要分为两个部分,其中core为协议部分,host为各个soc适配部分 host是我们需要真正关心代码 3、以...If unsure, say N. 5、MMC_S3C和MMC_SDHCI_S3C是主要macro,接着了解两个macro对应文件数据结构 首先看一下s3cmci.c文件, static const....set_uhs_signaling = sdhci_set_uhs_signaling, }; 6 、从host角度来说,有了platform driver和上面的host driver,驱动流程就算搞清楚了...但是如果深入下去的话,还是需要好好读一下sd协议,这里面花时间最多。 以上就是本文全部内容,希望对大家学习有所帮助。

12.1K32

USB总线-Linux内核USB3.0设备控制器驱动框架分析(四)

最上层是Gadget Function驱动,代表了具体设备驱动,如大容量存储设备驱动(U盘、移动硬盘等)、通讯类设备驱动USB串口、USB虚拟网卡等)、UAC驱动USB麦克风、USB声卡等USB...2.Gadget Function驱动 Linux内核USB Gadget Function驱动都在drivers/usb/gadget/function/目录下,有通讯设备类(Communication...[include/linux/usb/composite.h] struct usb_composite_driver { const char *name; // 驱动名称 const...Linux 3.11版本引入了USB Gadget Configfs。在用户层可以通过暴漏出来API定义USB Gadget设备任意功能和配置,极大方便了USB复合设备配置和使用。...; bool vbus; // 对于不关心vbus状态udc,该值始终为true }; [include/linux/usb/gadget.h] struct usb_gadget {

9.3K20

sdio 驱动_usb接口安装驱动失败

硬件接口 2.1 SDIO 总线 SDIO总线 和 USB总线 类似,SDIO也有两端,其中一端是HOST端,另一端是device端。...Linux SDIO WIFI驱动 SDIO 接口 wifi,首先,它是一个 sdio 卡 设备,然后具备了 wifi 功能,所以 SDIO 接口 WiFi 驱动就是在 wifi 驱动外面套上了一个...SDIO 驱动 外壳 SDIO驱动代码目录:drivers/mmc 下有 mmc卡、sd卡、sdio 卡驱动 驱动分层:主机驱动层(实现SDIO驱动) => 核心层(向上向下接供接口) => 设备驱动层...目录(HOST层):host 目录(HOST 层)是根据不同平台而编写 host 驱动 WiFi驱动流程: rockchip_wifi_init_module_rkwifi //创建了一个内核线程 wifi_init_thread...根据 接口类型 usb、sdio、pcie 选择不同操作 ———————dhd_bus_register // 注册成功就调用 dhd_sdio.dhdsdio_probe ————————bcmsdh_register

4.1K50

Linux块设备驱动详解

Linux系统一次读取磁盘大小是一个块,而不是一个扇区,块设备驱动由此得名。 二、块设备处理过程 1、linux 内核中,块设备将数据存储与固定大小块中,每个块都有自己固定地址。...Linux内核中块设备和其他模块关系如下。 ? 1、块设备处理过程涉及Linux内核中很多模块,下面简单描述之间处理过过程。   ... ?...(Linux系统中,对块设备IO请求,都会向块设备驱动发出一个请求,在驱动中用request结构体描述) 内核结构如下:. struct request { struct list_head queuelist...(也可以不用注册设备,驱动一样可以工作,该函数和字符设备register_chrdev()函数相对应,对于大多数块设备,第一个工作就是相内核注册自己,但是在Linux2.6以后,register_blkdev

5.3K30

详解linux驱动编写(入门)

比如说,现在你需要编写串口、i2c、i2s、FLASH、网卡、LCD、触摸屏、USB驱动了。这个时候,你手里面除了一堆芯片手册,啥也没有。能不能调试成功,就看你自己了。...我们今天所要说linux驱动编写。...现在linux驱动比较流行,主要有几个方面的原因:1)linux平台免费,很多芯片厂商希望linux平台支持自己产品;2)最近android平台很火,这在无形之中帮了linux忙,搞linux驱动的人也开始多了起来...前者偏向于理论多一些,后者书更加注重于实践部分内容。 说了这么多,大家可能问怎么做好linux驱动开发工作呢?...所以说,linux驱动简单开发步骤就是这些。 以上就是本文全部内容,希望对大家学习有所帮助。

1.9K32

详解linux lcd驱动编写

有些嵌入式设备是不需要lcd,比如路由器。但是,还有些设备是需要lcd显示内容,比如游戏机、测试仪、智能手表等等。所以,今天我们就看看lcd驱动linux上是怎么进行。...ret = request_irq(irq, s3c2410fb_irq, 0, pdev->name, info); 9、后面的话 很多同学把驱动很复杂,其实都是一些格式代码。...掌握了基本结构,加上芯片手册、硬件协议,一般驱动都可以在很短时间内学会,这个不存在问题。尤其是那些在市场上出现了很多年soc,基本不需要改动就可以直接使用。...当然,如果真的发现问题了,我们也要有debug能力。drivers目录里面的内容很多,但是需要了解和关心其实不多,努力去做、去解决问题就可以了。...以上就是本文全部内容,希望对大家学习有所帮助。

2.1K21
领券