首页
学习
活动
专区
圈层
工具
发布

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

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

9.9K92

Linux驱动开发: USB驱动开发

四、 linux内核下USB相关的API函数与数据结构 前面介绍了USB相关一些基础概念与重要的数据结构,接下来就分析在linux内核中如何编写一个USB 驱动程序,编写与一个USB设备驱动程序的方法和其他总线驱动方式类似...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

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

    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

    6.6K40

    19.Linux-USB总线驱动分析

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

    11.5K91

    13.Linux键盘按键驱动 (详解)

    在上一节分析输入子系统内的intput_handler软件处理部分后,接下来我们开始写input_dev驱动 本节目标:        实现键盘驱动,让开发板的4个按键代表键盘中的L、S、空格键、回车键...//键盘变量定义在:include/linux/input.h, 比如: KEY_L(按键L) unsigned long relbit[NBITS(REL_MAX)]; //存放支持的相对坐标值...); module_exit(buttons_exit); MODULE_LICENSE("GPL v2"); 3.测试运行: 挂载键盘驱动后, 如下图,可以通过  ls -l /dev/event*   ...在上一节输入子系统里分析到:输入子系统的主设备号为13,其中event驱动本身的此设备号是从64开始的,如上图,内核启动时,会加载自带触摸屏驱动,所以我们的键盘驱动的次设备号=64+1 3.1测试运行有两种...,然后打印在tty1终端上 方法2: exec 0键盘驱动就会直接打印在tty1终端上 3.2 调试: 若测试不成功

    6.9K70

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

    ,不支持Linux使用,也没有完善的资料,现在设备想在Linux系统下使用,要支持PClinux和嵌入式Linux设备,只能自己重新开发一个驱动再编写一个配套的上位机(上位机是采用QT写的)。...所有就在windows系统下使用USB抓包软件,分析光谱仪设备与windows下软件间的通信数据包,对比命令手册,得到完整的通讯流程,然后再对比编写了一个Linux系统下的驱动。..." #define IOCTL_CMD_RW 0x39654127 //读写命令 #endif 3.2 驱动.c #include linux/init.h> #include linux/module.h...> #include linux/usb.h> #include linux/sched.h> #include linux/slab.h> #include linux/miscdevice.h...(void) { //注销USB设备驱动 usb_deregister(&tiny4412_usb_driver); printk("USB光谱仪驱动卸载成功.

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

    5K10

    linux usb端点

    一系列相互独立的端点在一起构成了USB逻辑设备,在系统结构中,位于下方红色方框内: 二、端点的分类 每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机主要依靠这个设备地址对...USB设备进行访问。...五、端点与管道 1、管道的概念 管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。...1)、“流”指不具有USB定义格式的数据流,流通道中的数据是流的形式,也就是该数据内容不具有USB要求的结构。...2)、“消息”指具有某种USB定义格式的数据流。消息通道与端点的关系同流通道与端点的关系是不同的。

    13.6K31

    USB Gadget 驱动程序框架

    意思是说,一个开发板,可以当 USB 主机,接鼠标、键盘等从机;一个开发板也可以当 U 盘,接入 PC 电脑,此时开发板是从机。因此,我们要掌握两套驱动框架。...使用底层 USB Device Controller 驱动程序提供的 API 函数,从 endpoint 得到数据、反馈数据 Gadget 的含义是"小器件",在 Linux 的 USB 系统中,它表示...dtb 反编译,找到包含 otg 字符的节点,在 Linux code 中搜索 dts 节点的 compatible,可以找到对应的 usb 从机控制器驱动。...对于底层 endpoint 的代码,需要从 UDC 驱动开始分析: IMX6ULL 的代码:Linux-4.9.88\drivers\usb\chipidea\ci_hdrc_imx.c ci_hdrc_imx_probe...,所以配置描述符应该由你提供 某个配置下多个接口,接口就是功能,Linux 内核里事先提供了很多功能的驱动程序,所以:接口描述符是内核提供的 某个接口下需要什么端点,也是内核里各类功能的驱动程序提供的

    7.4K30

    【驱动设计的硬件基础】USB

    1.1 从 "慢腾腾" 到 "飞毛腿" USB 的进化史像一部加速电影: 1996 年 USB1.0:只有 1.5Mbps(约 187KB/s),连传张高清照片都费劲,主要用来接键盘鼠标这类 "不着急"...2.1 四根 "核心线":电源 + 数据双通道 别看 USB 线细,里面藏着 4 根 "神经": Vbus(红色):5V 电源线,给设备供电。比如鼠标、键盘这些小设备,直接靠它就能工作。...全速设备(如键盘):D + 线上有 1.5kΩ 的上拉电阻,电脑看到 D + 有电压,就明白是 "中速" 的键盘。...5.3 接口与速度:如何选择最佳组合 接口类型速查指南: 接口外观 常见颜色 最大速度 典型设备 USB-A 4针脚 黑/白 480Mbps (USB2) 老式鼠标、键盘 USB-A 9针脚 蓝/红/黄...七、驱动开发实战:从骨架到肌肉 USB驱动注册四步曲: 1.

    1.6K10

    如何在Linux中从可启动USB驱动器创建ISO?

    是的,在这个简短的教程中,我们将看到如何从已经创建的可启动USB驱动器创建ISO。当您丢失实际的ISO镜像并想要创建其他可启动驱动器时,这将非常有用。...您可能已经知道,Gnome磁盘是用于管理磁盘驱动器和介质的图形工具。它提供了必要的实用程序和应用程序来处理您的存储设备。默认情况下,所有GNOME桌面Linux版本都预装了GNOME磁盘。...我已经有了Ubuntu 18.04的可启动USB驱动器。如果您没有,请使用第一段中提到的任一USB可启动创建器。 从列表中选择可引导的USB驱动器。选择包含ISO(称为ISO 9660)的分区。...现在,GNOME Disks实用程序将开始从可启动USB驱动器创建ISO镜像。 ? 一旦可启动USB创建进度完成,请找到保存它的位置并验证是否已创建ISO。 ?...创建整个驱动器镜像 上面的方法将创建包含ISO的分区镜像,您还可以创建整个USB磁盘的镜像。 为此,请从NOME Disks接口中选择USB驱动器,然后单击右上角的三条水平线。

    5.5K10
    领券