展开

关键词

Linux驱动开发: USB驱动开发

四、 linux内核下USB相关的API函数与数据结构 前面介绍了USB相关一些基础概念与重要的数据结构,接下来就分析在linux内核中如何编写一个USB 驱动程序,编写与一个USB设备驱动程序的方法和其他总线驱动方式类似 ,驱动程序把驱动程序对象注册到USB子系统中,稍后再使用制造商和设备标识来判断是否安装了硬件。 当然,这些制造商和设备标识需要我们编写进USB 驱动程序中。 USB 驱动程序依然遵循设备模型 —— 总线、设备、驱动。 和I2C 总线设备驱动编写一样,所有的USB驱动程序都必须创建的主要结构体是 struct usb_driver,它们向USB 核心代码描述了USB 驱动程序。 #include #include #include #include #include *本程序为USB鼠标驱动程序,要安装本驱动,需要先将内核自带的USB驱动程序卸载掉* 定义USB的IDTAB 24ae

71720

13.USB驱动

既然还没有"驱动程序",为何能知道是"android phone" 答1. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone" 提示你安装的是"设备驱动程序" USB总线驱动程序负责:识别USB设备, 给USB设备找到对应的驱动程序 问2. 比如鼠标的数据是从鼠标传到PC机, 对应的端点称为"输入端点" 6.USB总线驱动程序的作用 a. 识别USB设备 b. 查找并安装对应的设备驱动程序 c. 如下图所示,每当创建一个USB设备,或者USB设备驱动时,USB总线都会调用match成员来匹配一次,使USB设备和USB驱动联系起来。 ? = to_usb_driver(drv);//获取USB驱动 id = usb_match_id(intf, usb_drv->id_table);//匹配USB驱动的成员id_table

23320
  • 广告
    关闭

    【玩转 Cloud Studio】有奖调研征文,千元豪礼等你拿!

    想听听你玩转的独门秘籍,更有机械键盘、鹅厂公仔、CODING 定制公仔等你来拿!

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

    Console口转USB驱动

    前言 事情是这样的,客户测试完防火墙设备了,寄回来到公司这边,需要重置密码,于是乎我果断进入console口重置密码. console线插好了,一般轻薄笔记本电脑来说是没有RJ45口,Emm~Usb口也就两个 ,作为一名专业的摸鱼工程师肯定要自带usb网卡、usb拓展坞、console口转usb,当线插好了,我去COM查看了一下,纳里~竟然没显示,于是乎我在我的电脑看看有没有显示驱动,最终百度找了一个console 口转USB驱动,安装完成查看了一下是显示COM3.

    21930

    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设备 (full HID) support //hid:人机交互的USB驱动,比如鼠标,键盘等 然后make uImage 编译内核 将新的触摸屏驱动模块放入nfs文件系统目录中 5.2然后烧写内核,装载触摸屏驱动模块 未完待续~~~~~~~~~~  下节 依葫芦画瓢 来写出 USB键盘驱动

    1.4K81

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

    _usb_dev_fops, }; //USB设备信息与驱动端匹配成功的时候调用。 \n"); } //定义USB驱动结构体 static struct usb_driver tiny4412_usb_driver = { .name = "spectrometer_usb_drv __init tiny4412_usb_init(void) { printk("正在安装USB光谱仪驱动. \n"); //注册USB设备驱动 usb_register(&tiny4412_usb_driver); return 0; } static void __exit tiny4412_usb_exit (void) { //注销USB设备驱动 usb_deregister(&tiny4412_usb_driver); printk("USB光谱仪驱动卸载成功.

    15310

    19.Linux-USB总线驱动分析

    如下图所示,以windows为例,我们插上一个没有USB设备驱动USB,就会提示你安装驱动程序 ? 为什么一插上就有会提示信息? 是因为windows自带了USB总线驱动程序, USB总线驱动程序负责: 识别USB设备,给USB设备找到对应的驱动程序 新接入的USB设备的默认地址(编号)是0,在未分配新编号前,PC主机使用0地址和它通信 如下图所示,每当创建一个USB设备,或者USB设备驱动时,USB总线都会调用match成员来匹配一次,使USB设备和USB设备驱动联系起来. ? USB驱动 id = usb_match_id(intf, usb_drv->id_table); //匹配USB驱动的成员id_table id_table来匹配该USB设备 USB总线驱动程序大概流程就此结束,未完待续——分析完后下节开始写USB驱动

    2.1K91

    USB设备驱动程序开发框架

    USB设备驱动程序开发框架 USB设备驱动程序开发框架的源代码文件 文件名 说明 Driver.h 驱动程序头文件 DrvInit.c 入口例程和卸载例程 DrvPnp.c 即插即用例程 DrvDispatch.c 分发例程 DrvPower.c 电源管理例程 Resource.h 资源管理头文件 Resource.rc 版本资源信息 USB设备驱动程序开发框架的构造文件 文件名 说明 DrvBuild.bat

    3820

    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

    35640

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

    USB驱动架构 USB驱动架构如下图所示: 3.1 USB主机端驱动 USB核心(USBD)是整个USB驱动的核心部分,从上图可知,一方面USBD对接收到USB主机控制器的数据进行处理 ,并传递给上层的设备端驱动软件;同时也接收来自上层的非USB格式数据流,进行相应的数据处理后传递给USB主机控制器驱动。 3.2 USB设备端驱动 从上图可知,设备端驱动包含两部分: 1) 底层设备控制器驱动 2) 上层大容量存储类驱动 3.2.1 设备控制器驱动 USB设备控制器驱动主要实现 USB 传输流程 4.1 USB初始化过程 USB驱动作为一个系统,集成了众多的驱动模块,注册过程非常复杂。 从USB系统的角度来说,USB主机驱动主要包含: 1) USB驱动 2) 主机控制器驱动 3) 集线器驱动 驱动的加载执行流程如下图所示:

    13030

    详解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是如何发包和收包的。

    57175

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

    本节目的:     根据上节写的USB鼠标驱动,来依葫芦画瓢写出键盘驱动 1.首先我们通过上节的代码中修改,来打印下键盘驱动的数据到底是怎样的 先来回忆下,我们之前写的鼠标驱动的id_table是这样: 所以我们要修改id_table,使这个驱动为键盘的驱动,如下图所示: ? 然后修改中断函数,通过printk()打印数据: 我们先按下按键A为例,打印出0x04,如下图: ? 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,和电脑上的键盘的参数一样 ?

    1.2K91

    win 8.1_64 安装usb 转串口驱动

    我去,系统居然自动安装的驱动居然无法使用。 没办法新买的笔记本没几天,也没去装usb转com口的驱动。反正系统可以自己去装嘛。 (其实是有点懒) 从网上找了很多驱动装上以后,能够识别到硬件,但是就是无法启动。从官方也找了最新版,也是无法启动。 错误代码10 后来又从51cto上面找到了一个一份解决文档 1.  安装3.2.0.0驱动 在win8.1 下使用旧版的驱动程序“PL-2303 Win7(X32)(X64) Driver Installer.exe” 下载地址:http://pan.baidu.com 更新驱动 ? 4. 浏览计算机以查找驱动程序软件 ? 5. 从计算机的设备驱动程序列表中选取 ? 6. 选择3.2.0.0版本的驱动程序 ? ?

    46850

    usb驱动怎么安装 安装失败怎么办

    所以这个时候有个usb是非常重要的,可以直接拷贝带走的,且放在usb里面,不仅不会丢失文件,也非常地节省电脑空间。但是有的人会发现,有时候电脑插上usb也并不能用。那么usb驱动怎么安装? image.png 一、usb驱动怎么安装 简单来说就是一部电脑在插上usb后,可以对usb进行识别,这就叫usb驱动。那么如果自己的电脑上,没有的话,要怎么安装呢? 首先第一步下载相关驱动软件,下载后打开软件,软件会对电脑的驱动安装进行检查,检测好了之后,就可以点击启动,然后进去后一般都是进入标准模式。第二步就是找到自己需要安装的驱动程序,下载并安装后就是完成了。 二、usb驱动安装失败怎么办 安装不了一般有两种情况,一种是单纯无法识别该usb,不是电脑驱动的问题,可以尝试下载另外的驱动器,来重新识别usb,并且成功识别打开;另外一种情况就是该电脑的接口出现了接触不良或者驱动坏了 综上所述,对usb驱动的相关安装做出了详细的介绍,在发现识别不了usb的时候,可以使用文中介绍的方法。不过使用驱动的时候,也可以注意一些,最好不是因为外力影响了usb的识别。

    72710

    usb转rs485测试软件,usb转rs485驱动程序

    usb转rs485线必须安装usb转rs485驱动程序才可以正常使用,而本次发布的这个usb转rs485驱动,就是那个东东啦。 USB转485驱动程序官方版发布。。 驱动压缩包中此外还包含了USB编程电缆驱动程序安装说明-485.doc,喜欢的小伙伴可以下载使用。 USB转RS485串口驱动 PL2303,适合WIN7/WIN XP/LINUX等系统。 usb转485转换器线驱动安装方法: 1、在安装前可以先看看使用说明再安装。 将USB转换线插入电脑的USB接口中,系统会提示检测到新设备并出现新硬件添加向导,选择从列表或指定的位置安装,手动安装,找到刚刚驱动的解压目录,让WINDOWS自动搜索更新驱动就OK了。 usb转rs485驱动支持的系统: Windows 8.1 Windows 8.1 x64 Windows 8 Windows 8 x64 Windows Server2012 Windows Server

    17210

    如何在USB驱动器中安装CentOS 7

    您有没有想过在USB笔式驱动器中安装CentOS 7的便携式实例? 您可能不知道它,但您可以轻松地将CentOS 7安装在USB驱动器中,就像将其安装在物理硬盘驱动器或虚拟环境中一样。 另请参阅 : 如何在USB驱动器上安装Linux OS并在任何PC上运行它 这样,您可以在将PC设置为从USB驱动器启动后,在任何PC上插入USB并无缝运行CentOS 7 。 听起来很酷吧? 请务必选择USB驱动器和CentOS 7 Live安装程序ISO。 创建可启动USB驱动器 完成所有操作后,点击“ 开始 ”按钮开始将安装文件复制到USB驱动器上。 完成此过程后,弹出USB驱动器并将其插入PC并重新启动。 确保在BIOS设置中配置引导顺序,以便PC首先从USB驱动器引导。 保存更改并允许系统引导。 单击USB驱动器并单击“ 自动配置分区 ”以允许安装程序为您智能地分区USB驱动器。 点击“ 完成 ”按钮保存更改。

    37620

    arm linux利用alsa驱动并使用usb音频设备

    一.背景: arm linux的内核版本是3.13.0 二.准备工作 添加alsa驱动到内核中,也就是在编译内核的时候加入以下选项: ? 格式的存储设备的时候,注意fat32是不支持软链接的,此时需要直接复制一个aplay并将名称改为arecord: cp aplay arecord 总结 以上所述是小编给大家介绍的arm linux利用alsa驱动并使用 usb音频设备 ,希望对大家有所帮助!

    79031

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

    例如,USB驱动程序为所有USB 设备提供了一个抽象的模型,并具有由所有客户驱动程序使用的定义好的接口。 USB是使用标准Windows系统USB驱动程序访问USBDI(Windows USB驱动程序接口)的USB设备驱动程序。 USBHUB.sys是根集线器和外部集线器的USB驱动程序。在PCI枚举器发现了USB主控制器之后,它会自动装入相关的驱动程序。 3 Windows USB驱动程序接口 大多数客户化的USB设备需要由用户来编写设备驱动程序,以响应内核态或用户应用程序的请求。 在内核级,命令由客户驱动程序使用内部IOCTL发送给USB系统,例如IOCTL-INTERNAL-USB-SUBMIT-URB允许发出USB请求块(URB)给系统USB驱动程序。

    6220

    使用 dd 命令创建一个临场 USB 驱动

    我将带你认识需要的命令,从终端找到我们的 USB 驱动器,然后对 ISO 文件进行实际刷写。 这会导致 dd 任务在整个 ISO 文件写入 USB 驱动器之前不会报告成功写入。 第 1 步: 获取 USB 盘符 插入你的 USB 驱动器。 我为 of 参数输入的具体路径是 /dev/sdb。USB 磁盘通常会标记为 /dev/sdb,但这不是硬性规定。 此路径可能因你的系统而异,你可以使用 lsblk 命令确认 USB 磁盘的路径。只需从列表中查找一个看起来像你的 USB 磁盘大小的驱动器,就可以了。 如果你更熟悉 GUI 程序,还可以使用 GNOME Disks 等工具找到驱动器的路径。 现在你已经确认了外部驱动器的路径,让我们开始创建临场 USB

    26630

    Linux驱动开发: 使用usbmon抓取usb 总线上通信的数据

    一、环境介绍 操作系统: ubuntu18.04 64位 二、usbmon使用方法 2.1 功能介绍 usbmon 即 usb monitor,是 linux 内置的 usb 抓包工具。 当前使用的是ubuntu18.04,驱动模块的位置:/lib/modules/5.3.0-40-generic/kernel/drivers/usb/mon/usbmon.ko 如果不确定当前内核的版本 2.4 查看usbmon可以识别到的USB总线编号 root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# ls /sys/kernel cat /sys/kernel/debug/usb/usbmon/1u | grep "1:010" 输入: cat /sys/kernel/debug/usb/usbmon/3u 读取总线上全部数据 root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# cat /sys/kernel/debug/usb/usbmon/3u ffff9bbbaf235b00

    68320

    扫码关注腾讯云开发者

    领取腾讯云代金券