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

Linux驱动开发: USB驱动开发

四、 linux内核下USB相关的API函数与数据结构 前面介绍了USB相关一些基础概念与重要的数据结构,接下来就分析在linux内核中如何编写一个USB 驱动程序,编写与一个USB设备驱动程序的方法和其他总线驱动方式类似...urb(USB Request Block)Linux内核中USB驱动实现上的一个数据结构,用于组织每一次的USB设备驱动的数据传输请求。...鼠标驱动(中断传输方式) 5.1 USB驱动注册框架代码 #include #include #include ...menuconfig 由于内核自带了usb鼠标驱动,所以需要去除: Device Drivers ---> HID support ---> USB HID support -...#include /* 本程序为USB鼠标驱动程序,要安装本驱动,需要先将内核自带的USB驱动程序卸载掉 */ //定义USB的IDTAB 24ae:2002 static

69.9K20

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

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

    USB初学(一)---USB-HID的初步认识【转】

    HID是一种USB通信协议,无需安装驱动就能进行交互,在学习HID之前,先来复习一下USB协议的相关内容。 USB设备描述符-概述 当插入USB设备后,主机会向设备请求各种描述符来识别设备。...bDeviceSubClass; //usb分配的子类代码,同上,值由USB规定和分配的,HID设备此值为0 BYTE bDeviceProtocl; //USB分配的设备协议代码,同上HID...当插入USB设备后,主机会向设备请求各种描述符来识别设备。 为了把一个设备识别为HID类别,设备在定义描述符的时候必须遵守HID规范。 ?...USB HID类可采用的通信管道 所有的HID设备通过USB的控制管道(默认管道,即端点0)和中断管道与主机通信。...表1、USB HID规范定义的HID设备可用端点 管道 要求 说明 控制(端点0) 必须 传输USB描述符、类请求代码以及供查询的消息数据等 中断输入 必须 传输从设备到主机的输入数据 中断输出 可选

    12.6K50

    20.Linux-USB鼠标驱动

    在上一章分析完USB总线驱动程序后, 接下来开始写一个USB驱动: 本节目的: 将USB鼠标的左键当作L按键,将USB鼠标的右键当作S按键,中键当作回车按键 参考/drivers/hid/usbhid/...,sc,pr); USB_INTERFACE_INFO()设置usb_driver驱动的id_table成员 cl:接口类,我们USB鼠标为HID类,所以填入0X03,也就是USB_INTERFACE_CLASS_HID... #include #include #include #include...驱动) make menuconfig ,进入menu菜单重新设置内核参数: 进入-> Device Drivers -> HID Devices  USB Human Interface Device...(full HID) support //hid:人机交互的USB驱动,比如鼠标,键盘等 然后make uImage 编译内核 将新的触摸屏驱动模块放入nfs文件系统目录中 5.2然后烧写内核,装载触摸屏驱动模块

    8.3K81

    SSH与内置USB HID支持的完美结合

    本文将深入探讨SSH的内置USB HID支持及其对用户和管理员的益处。 USB HID简介 USB HID是指通过USB接口连接的人机接口设备,例如键盘、鼠标和安全密钥。...在安全领域,USB HID设备通常用于存储和处理身份验证信息,如数字签名和加密密钥。 SSH的内置USB HID支持 SSH协议内置的USB HID支持允许用户使用USB安全密钥进行身份验证。...跨平台性: 无论是Windows、Linux还是macOS,SSH的内置USB HID支持都能够提供稳定、可靠的身份验证服务。...总结 SSH的内置USB HID支持为用户和管理员提供了一个简单、安全的身份验证解决方案。...随着安全需求的不断增加,利用SSH和USB HID技术的身份验证方案将会得到更广泛的应用。

    30930

    19.Linux-USB总线驱动分析

    如下图所示,以windows为例,我们插上一个没有USB设备驱动USB,就会提示你安装驱动程序 为什么一插上就有会提示信息?...是因为windows自带了USB总线驱动程序, USB总线驱动程序负责: 识别USB设备,给USB设备找到对应的驱动程序 新接入的USB设备的默认地址(编号)是0,在未分配新编号前,PC主机使用0地址和它通信..., 比如:鼠标的数据是从鼠标传到PC机, 对应的端点称为"中断输入端点" 其中端点0是设备的默认控制端点, 既能输出也能输入,用于USB设备的识别过程 同样linux内核也自带了USB总线驱动程序,框架如下...其中usb_bus_type是一个全局变量, 它和我们之前学的platform平台总线相似,属于USB总线, 是Linux中bus的一种....; //设置匹配USB的接口类型为HID类, 因为USB_INTERFACE_CLASS_HID=0x03 //HID类是属于人机交互的设备,比如:USB键盘,USB鼠标,USB触摸板,

    8.7K91

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

    本节目的:     根据上节写的USB鼠标驱动,来依葫芦画瓢写出键盘驱动 1.首先我们通过上节的代码中修改,来打印下键盘驱动的数据到底是怎样的 先来回忆下,我们之前写的鼠标驱动的id_table是这样:...我们找到输入子系统(input.h)中按键A定义的值,它对应的却是30,看来不是直接调用的 我们再来参考内核自带的USB键盘驱动 (/drivers/hid/usbhid/usbkbd.c) 发现它的中断函数中有个键盘描述码表...usb/input.h> #include static struct input_dev *myusb_kbd_dev; //input_dev static...驱动) make menuconfig ,进入menu菜单重新设置内核参数: 进入-> Device Drivers -> HID Devices  USB Human Interface Device...(full HID) support     //hid:人机交互的USB驱动,比如鼠标,键盘等 然后make uImage 编译内核 将新的键盘驱动模块放入nfs文件系统目录中 5.2然后烧写内核,

    7.3K92

    详解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,不妨以s3c2410的host作为范例进行分析,首先找到Makefile, obj-$(CONFIG_USB_OHCI_HCD_S3C2410...但是,如果要深入了解usb host&device驱动,那么除了这些代码逻辑,那么还要熟读usb协议手册,更重要的学会用catc协议分析仪真正地去了解usb是如何发包和收包的。

    6K75

    制作 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 轻松覆盖您不打算使用的磁盘驱动器。输出路径。

    23410

    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.9K40

    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.2K50

    原创 Paper | USB设备开发:从入门到实践指南(三)

    原装的左右手柄,使用的是HID_BLUETOOTH_DEVICE宏定义,表示匹配的是蓝牙HID协议,并不匹配USB HID协议。...2 Linux内核INPUT子系统简述 参考资料 因为暂时没有开发input相关驱动的打算,所以并不会深入讲解input驱动的各项细节,本章节的目标是让读者读完以后,在心中能对input驱动的运作模式有个大致的了解...2.1 注册input event 用hid-nintendo.c驱动作为例子进行讲解,首先看nintendo_hid_probe函数,在上一篇文章中说过,当USB HID设备注册成功后,会在内核中匹配所有...Linux驱动中还未实现,从joydev_event可以看出,Linux的手柄驱动仅支持坐标系和按键功能,所以把支持加速度传感器的手柄给禁用了。...3 总结 参考资 到本篇文章结束,关于USB游戏手柄部分的研究就结束了,接下来就是研究其他USB设备,经过了USB游戏手柄的一番折腾,对USB HID驱动还有input驱动都有了一定的了解,对后续的研究也能有非常大的助力

    16910

    OpenHarmony开发之——USB驱动

    简介该仓下主要包含USB Host DDK和USB Device DDK接口定义及其实现,提供的主要功能如下:USB Host DDK:负责提供用户态第三方功能驱动USB设备数据读写接口、向内核USB...# USB模块Device侧驱动Demo实现│ └── function # USB模块Device侧驱动Demo,包括ACM和ECM驱动├── interfaces # USB模块对用户态提供的驱动能力接口...# USB模块应用测试程序实现│ └── device # USB模块Device侧ACM驱动读写和测速应用程序实现,适配Linux和LiteOS系统│ └── host...# USB模块Host侧ACM驱动读写和测速应用程序实现,适配Linux和LiteOS系统├── serial # USB模块Host侧ACM驱动Demo实现├── test...,提供用户态第三方功能驱动USB设备数据读写接口。

    16020

    原创 Paper | USB设备开发:从入门到实践指南(二)

    ,而游戏手柄的驱动会根据idVendor/idProduct匹配到该USB设备,在Linux上,手柄的驱动的代码一般位于drivers/input/joystick/xpad.c,可以查看该驱动中能识别的部分...3 hid_nintendo,usbhid,hid_generic 发现ubuntu成功适配到了hid_nintendo驱动,但是却报了一堆的错误,猜测是这些错误导致手柄驱动注册失败,在Linux下能被正常识别的手柄应该像上面的案例一样...另外因为测试使用的Linux是装在Windows上的虚拟机,vmware在Windows上安装了一个USB驱动,来让主机接入虚拟机当中的,可能是同样的BUG导致在Linux系统上也无法正常识别到手柄相关驱动...经过研究发现hid-nintendo驱动是最近几年才加入Linux内核的,也许该驱动代码还不完善,或者本身就没有考虑适配Switch Pro,目前没能想明白该驱动的实际用途。...4 本篇总结 参考资 通过本篇文章,我们了解了如何模拟一个USB鼠标,USB游戏手柄设备,并且可以学习如何对Linux内核中的HID驱动进行修改然后输出相关调试信息。

    21110
    领券