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

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

本节目的:     根据上节USB鼠标驱动,来依葫芦画瓢写出键盘驱动 1.首先我们通过上节的代码中修改,来打印下键盘驱动的数据到底是怎样的 先来回忆下,我们之前的鼠标驱动的id_table是这样:...[]的数据错位,这里就不做详细分析了 一切迎刃而解,我们只需要将自己的代码也通过这个码表添加所有按键按键事件,然后再在键盘中断函数中根据数据来上传事件即可 4.本节键盘代码如下: #include #include #include #include #include #include static struct input_dev *myusb_kbd_dev; //input_dev static...(full HID) support     //hid:人机交互的USB驱动,比如鼠标,键盘等 然后make uImage 编译内核 将新的键盘驱动模块放入nfs文件系统目录中 5.2然后烧内核,

7.3K92

linux usb端点

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

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

    linux平台下的文件刷新

    c语言libc库自带的fflush和linux的sync、fsync、fdatasync,字面上都是刷新缓冲区数据到磁盘(当然,fflush还可以刷新缓冲区数据到标准输入、输出以及错误输出)。...一、c语言fflush和linux的sync、fsync、fdatasync的区别 1.接口基本不同 fflush是libc库中提供的函数,平台无关,只有在你使用到c语言的标准文件(FILE)操作时,...当我们向文件写入数据时,内核通常会先将数据复制到页告诉缓存中,然后将这些缓存页的地址排入队列,晚些时候再写入磁盘。这种方式被称为延迟。...1、sync和fsync、fdatasync的区别 sync只是将页高速缓存中所有修改过的块的地址排入写入队列,然后返回,他并不等待实际磁盘操作结束。...fsync、fdatasync只对参数fd指定的一个文件起作用,并且等到磁盘结束才返回。 这两个系统调用一般用于数据库这样的应用程序,这种应用需要确保修改过的块立即写到磁盘上。

    4.1K50

    linux 下gz文件解压命令,Linux解压gz文件的命令怎么

    Linux解压gz文件的命令怎么 发布时间:2020-11-17 13:39:53 来源:亿速云 阅读:122 作者:小新 小编给大家分享一下Linux解压gz文件的命令怎么,相信大部分人都还不怎么了解...gz文件是一种压缩文件,以.gz或者.tar.gz(.tgz)为扩展名,在Linux、UNIX和OSX下常见,Linux和OSX都可以直接解压使用这种压缩文件。...gunzip命令 作用是解压文件,使用权限是所有用户。例:gunzip FileName.gz gzip命令 gzip命令是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。...gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。...)扩展名结尾的gz文件,可以使用tar命令来解压,执行以下命令:tar zxvf FileName.tar.gz 就可解压.tar.gz文件 以上是Linux解压gz文件的命令怎么的所有内容,感谢各位的阅读

    14.9K40

    Linux USB 开发指南

    gadget 功能前关闭 adb 功能时却报异常的解决办法 4 附录 4.1 Linux-4.x/Linux-5.4 Gadget 配置示例 4.1.1 小机做 mass storage 4.1.2...1.3 适用范围 ​ 表 1-1: 适用产品列表 内核版本 驱动文件 Linux-4.9 drivers/usb/* Linux-5.4 drivers/usb/* 2 模块介绍 2.1 模块功能介绍...Open Host Controller Interface,开放式主机控制器接口 2.3 模块配置介绍 2.3.1 Device Tree 配置说明 设备树中存在的是该类芯片所有平台的模块配置,设备树文件的路径为...USB 总线采用树形结构,在一条总线上只能有唯一的主机设备。Linux 内核从主机和设备两个角度观察 USB 总线结构。...图 2-11: linux-4.x usb gadget 配置选择 2.6.2 linux-4.x/linux-5.4 USB Gadget 配置流程 Linux-4.x/Linux-5.4 使用 configfs

    31K31

    Linux USB 设备基础理论

    通过扫描以下目录获取物理节点所有 USB 设备: /sys/bus/usb/devices/usb* /sys/bus/usb/devices/usb*/$busnum-* 从该文件系统收集某一个设备的主要信息如下...Tablet", "speed": "12", "usbpath": "1", "vendid": "0627" } 文件含义# 目录下部分文件含义如下: busnum: 总线号...devnum: 设备号(该总线的第几台设备) speed: 速率 bDeviceClass: 设备类型 idVendor: 设备的生产商ID,由USB设备生产商向USB-IF官方来统一管理和申请 idProduct...设备类bDeviceClass、bDeviceSubClass、bDeviceProtocol By USB 中文网 USB设备描述符中的idVendor、idProduct和bcdDevice By...USB 中文网 USB 硬件设备的序列号 By IBM 注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

    40230

    20.Linux-USB鼠标驱动

    在上一章分析完USB总线驱动程序后, 接下来开始一个USB驱动: 本节目的: 将USB鼠标的左键当作L按键,将USB鼠标的右键当作S按键,中键当作回车按键 参考/drivers/hid/usbhid/...,匹配成功就会调用usb_driver的成员.probe函数 usb_deregister(struct usb_driver *driver); 注销一个usb_driver驱动,在出口函数中 *usb_buffer_alloc...释放input_device 3.5在出口函数中 1)通过usb_deregister ()函数注销usb_driver结构体 4.代码如下: #include #include... #include #include #include #include...(full HID) support //hid:人机交互的USB驱动,比如鼠标,键盘等 然后make uImage 编译内核 将新的触摸屏驱动模块放入nfs文件系统目录中 5.2然后烧内核,装载触摸屏驱动模块

    8.3K81

    Linux 环境文件如何稳定跑满磁盘 IO 带宽?

    机器配置 CPU: 64 核 Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz 磁盘 : Intel Optane SSD 测试磁盘 IO 性能 官方称读 / 带宽是...2566MiB/s (2691MB/s), 2566MiB/s-2566MiB/s (2691MB/s-2691MB/s), io=8192MiB (8590MB), run=3192-3192msec 顺序性能...,然后 mmap() 内存映射 16k 的 Block, memcpy() 满之后,游标右移重新 mmap(),以此循环....实验四: 改进的 mmap 写入 为了避免 mmap() 的开销,我们使用临时文件在写入之前 mmap() 映射,之后循环利用这 16K 的 Block, 避免 mmap() 的巨大开销: 代码片段:...在限制内存,且需要 kill -9 不丢数据的情况下,我们可以使用 mmap() 来模拟 Buffer IO,但为了避免频繁 mmap() 的开销,我们需要临时文件来做我们的内存映射.

    7K11

    十行代码--用python一个USB病毒

    但是,如果我想,比如,当一个usb插入时,在后台自动把usb里的重要文件神不知鬼不觉地拷贝到本地或者上传到某个服务器,就需要特殊的软件辅助。...于是我心想,能不能用python一个程序,让它在后台运行。每当有u盘插入的时候,就自动拷贝其中重要文件。 如何判断U盘的插入与否? ?...) # os.listdir(路径)返回路径下所有文件以及文件夹的名称while True: new_content = os.listdir(usb_path) #每隔三秒扫描一次/Volumes...os.path.getsize()判断大小 os.path.getsize(文件名)返回的是一个单位为byte的数值,如果用来查看文件大小,我们则需要手动一个函数,将其换算成容易阅读的形式。...我更想通过这个例子,展示python对于文件处理的强大能力,引发大家的学习热情。以上实现都是基于macos,linux应该一样,windows稍加修改也可以成功。

    1.3K10

    19.Linux-USB总线驱动分析

    是因为windows自带了USB总线驱动程序, USB总线驱动程序负责: 识别USB设备,给USB设备找到对应的驱动程序 新接入的USB设备的默认地址(编号)是0,在未分配新编号前,PC主机使用0地址和它通信...主机叫做Host,从机叫做Device,所有的USB传输,都是从USB主机这方发起;USB设备没有"主动"通知USB主机的能力。..., 比如:鼠标的数据是从鼠标传到PC机, 对应的端点称为"中断输入端点" 其中端点0是设备的默认控制端点, 既能输出也能输入,用于USB设备的识别过程 同样linux内核也自带了USB总线驱动程序,框架如下...其中usb_bus_type是一个全局变量, 它和我们之前学的platform平台总线相似,属于USB总线, 是Linux中bus的一种....设备时,系统就会获取USB设备的设备、配置、接口、端点的数据,并创建新设备,所以我们的驱动就需要写id_table来匹配该USB设备 USB总线驱动程序大概流程就此结束,未完待续——分析完后下节开始USB

    8.7K91

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

    2.Gadget Function驱动 Linux内核的USB Gadget Function驱动都在drivers/usb/gadget/function/目录下,有通讯设备类(Communication.../usb/gadget/legacy/目录下,如USB音频设备驱动文件audio.c,USB虚拟以太网设备驱动文件ether.c,HID设备驱动文件hid.c。...Gadget Configfs Configfs是一种基于ram的文件系统,可以在用户空间直接控制内核对象,主要适用于内核对象有众多配置的模块,比如USB复合设备。...Linux 3.11版本引入了USB Gadget Configfs。在用户层可以通过暴漏出来的API定义USB Gadget设备的任意功能和配置,极大的方便了USB复合设备的配置和使用。...USB Gadget Configfs在drivers/usb/gadget/configfs.c文件中实现。

    10.2K20

    Nodejs文件换行

    使用 Nodejs 的 fs.writeFile Api 文件是很常见的操作。 而文件过程中换行也是很常见的,但是如何换行这个问题需要注意,因为不同的操作系统换行符是不一样的。...因此,如果需要写出来的文件适用于各个系统,那么文件的时候就需要判断。 不过好在 Nodejs 提供了换行符常量 os.EOL。...str) 一个坑 之前不知道这个 API,于是手写了一段代码 let str = 'abc\r'; fs.writeFileSync(sitemapFile, str) 这段代码看起来没啥问题,能正常写入文件...但是,使用 cat 命令、tail 命令都无法读取文件,使用 fs.readFileSync 也无法正常读取。...所以,为了避免不必要的麻烦,使用 Nodejs 文件的时候,换行符还是建议使用 os.EOL 常量。

    2.9K20
    领券