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

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 linux/init.h> #include linux/module.h> #include linux/usb.h>...#include linux/hid.h> /* 本程序为USB鼠标驱动程序,要安装本驱动,需要先将内核自带的USB驱动程序卸载掉 */ //定义USB的IDTAB 24ae:2002 static

70.2K20

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

一、环境介绍 宿主机: ubuntu 18.04 (64位) 开发板: Exynos4412(Cortex-A9) ----友善之臂Tiny4412 完整驱动源码+配套上位机下载地址: https:/.../download.csdn.net/download/xiaolong1126626497/19036980 二、功能介绍 使用的光谱仪设备是USB接口的,厂家只提供了windows下的驱动和配套软件...,不支持Linux使用,也没有完善的资料,现在设备想在Linux系统下使用,要支持PClinux和嵌入式Linux设备,只能自己重新开发一个驱动再编写一个配套的上位机(上位机是采用QT写的)。...所有就在windows系统下使用USB抓包软件,分析光谱仪设备与windows下软件间的通信数据包,对比命令手册,得到完整的通讯流程,然后再对比编写了一个Linux系统下的驱动。..._usb_dev_fops, }; //USB设备信息与驱动端匹配成功的时候调用。

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

    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

    64440

    OpenHarmony开发之——USB驱动

    驱动框架注册的设备插拔时间通知接口和移除USB逻辑设备的接口;图 1 USB仓HOST侧相关模块逻辑视图USB Device DDK:负责创建和删除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设备数据读写接口。

    19520

    20.Linux-USB鼠标驱动

    在上一章分析完USB总线驱动程序后, 接下来开始写一个USB驱动: 本节目的: 将USB鼠标的左键当作L按键,将USB鼠标的右键当作S按键,中键当作回车按键 参考/drivers/hid/usbhid/...usbmouse.c(内核自带的USB鼠标驱动) 1.本节需要用到的宏如下: struct usb_device_id usbmouse_id_table []=USB_INTERFACE_INFO(cl...: usb_deregister(struct usb_driver *driver); 注册一个usb_driver驱动,然后内核会通过usb_driver的成员.id_table函数匹配一次USB设备...linux/slab.h> #include linux/module.h> #include linux/init.h> #include linux/usb/input.h> #include...(full HID) support //hid:人机交互的USB驱动,比如鼠标,键盘等 然后make uImage 编译内核 将新的触摸屏驱动模块放入nfs文件系统目录中 5.2然后烧写内核,装载触摸屏驱动模块

    8.4K81

    usb协议开发_基于事件驱动的架构

    大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说usb协议开发_基于事件驱动的架构,希望能够帮助大家进步!!! 1....USB驱动架构 USB驱动架构如下图所示: 3.1 USB主机端驱动 USB核心(USBD)是整个USB驱动的核心部分,从上图可知,一方面USBD对接收到USB主机控制器的数据进行处理...由于此部分代码非常重要,开发者把它看作一个子系统,而不仅仅是一个模块。USB Core这个模块代表的不是某一个设备,而是所有USB设备赖以生存的模块。...在Linux中,像这样一个类别的设备驱动被归结为一个子系统。...其中,Linux内核只支持同步传输外的三种传输事件,ISO事务需要手工进行初始化工作。控制传输事务、批量传输事务、中断传输事务API如上所示。

    2K30

    19.Linux-USB总线驱动分析

    如下图所示,以windows为例,我们插上一个没有USB设备驱动的USB,就会提示你安装驱动程序 为什么一插上就有会提示信息?...是因为windows自带了USB总线驱动程序, USB总线驱动程序负责: 识别USB设备,给USB设备找到对应的驱动程序 新接入的USB设备的默认地址(编号)是0,在未分配新编号前,PC主机使用0地址和它通信..., 比如:鼠标的数据是从鼠标传到PC机, 对应的端点称为"中断输入端点" 其中端点0是设备的默认控制端点, 既能输出也能输入,用于USB设备的识别过程 同样linux内核也自带了USB总线驱动程序,框架如下...总线驱动,如何识别USB设备 由于内核自带了USB驱动,所以我们先插入一个USB键盘到开发板上看打印信息 发现以下字段: 如下图,找到第一段话是位于drivers/usb/core/hub.c的第2186...其中usb_bus_type是一个全局变量, 它和我们之前学的platform平台总线相似,属于USB总线, 是Linux中bus的一种.

    8.7K91

    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.4K92

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

    26310

    Linux驱动开发: 块设备驱动开发

    块设备是与字符设备并列的概念, 这两类设备在 Linux 中驱动的结构有较大差异,总体而言, 块设备驱动比字符设备驱动要复杂得多,在 I/O 操作上表现出极大的不同,缓冲、 I/O 调度、请求队列等都是与块设备驱动相关的概念...在Linux中,驱动对块设备的输入或输出(I/O)操作,都会向块设备发出一个请求,在驱动中用request结构体描述。...但对于一些磁盘设备而言请求的速度很慢,这时候内核就提供一种队列的机制把这些I/O请求添加到队列中(即:请求队列),在驱动中用request_queue结构体描述。...编写块设备驱动时,使用的一些单位介绍: 1. 扇区(Sectors):任何块设备硬件对数据处理的基本单位。通常,1个扇区的大小为512字节。(对设备而言) 2....deadline 或者,使用如下命令改变内核调度算法: echo SCHEDULER > /sys/block/DEVICE/queue/scheduler 二、块设备结构介绍 2.1 内核自带可参考的块设备驱动源码

    32.4K30

    基于WDM的专用USB设备的驱动程序开发

    而开发专用USB设备,需要开发专用的驱动程序。 Windows2000/XP操作系统不允许用户程序直接访问硬件设备。...针对USB客户应用程序的开发,相应版本的Windows操作系统的设备驱动程序开发包(Device Driver Developer’s Kit,即DDK)给出了相应的USB接口函数。...4 USB设备驱动程序的实现 4.1驱动程序的开发环境 Microsoft公司提供的驱动程序开发包(DDK)提供了许多工具、函数及实例,还有详细的开发文档,使用起来比较方便,尤其在Win32驱动程序模型...6 驱动程序的开发过程 基于EZ-USB系列芯片的设备驱动程序开发分为如下主要工作。...8 结束语 应用上述的专用USB设备驱动程序的开发方法及步骤,开发了USB通用数据采集器及USB任意波形发生器等设备,通过实践表明应用DDK进行基于WDM(Win32 Driver Model)的专用USB

    1.7K20

    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

    Linux驱动开发-编写按键驱动

    杂项设备注册函数 这篇文章介绍,如何使用杂项设备框架编写一个简单的按键驱动,完成编写、编译、安装、测试等流程,了解一个杂项字符设备驱动的开发流程。...>0表示未拷贝成功的数量。 2. 编写按键驱动 使用杂项设备注册按键驱动,应用层使用read接口读取按键值。 编写驱动之前需要先找到按键的原理图,找到按键接到CPU那个IO上的。...2.1 按键驱动源代码 #include linux/kernel.h> #include linux/module.h> #include linux/fs.h> #include linux...内核管理驱动---设备号 设备号是一个unsigned int 的变量--32位。...*驱动出口--卸载驱动的时候执行*/ MODULE_LICENSE("GPL"); /*设置模块的许可证--GPL*/ 2.2 makefile文件 编译驱动的makefile代码。

    19.9K31
    领券