当前位置: 首页 > news >正文

串行协议——USB驱动[基础]

        多年前的学习记录,整理整理。 

一、USB协议基础

二、Linux内核USB驱动源码分析

USB中不同类型设备使用的 设备描述符(设备类\设备子类\设备协议) 配置不同,典型的以下几种:1)HID设备: Human Input Device人工输入设备, 如鼠标\键盘\游戏手柄等.2)CDC设备: Communications Device Class通信设备类, 如usb转串口. 电脑一般没有串口, 要与串口设备进行通信, 有效的方法就是硬件上采用usb转串口模块, 软件上编写对应的驱动程序.3)USB Mass Storage Class 协议是U盘等存储设备.4)USB Audio 协议用于音频设备.5)USB Video 协议用于视频设备.struct usb_device usb_dev;           // 描述一个usb设备
struct usb_device_id x;              // 驱动匹配的id表[1]usb设备驱动, eg: HID设备mouse
内核源码路径: hid/usbhid/usbmouse.c
struct usb_driver x1;                // usb设备驱动
MODULE_DEVICE_TABLE(usb, x);         // 宏用于将设备id表注册到内核
module_usb_driver(x1);               // 注册USB设备驱动[2]usb串口设备驱动, eg: CDC设备pl2303
内核源码路径: usb/serial/pl2303.c
struct usb_serial_driver x1;         // usb串口设备驱动, 继承于usb_driver, 并添加自己的成员.需要设置串口的流控(波特率等)       
module_usb_serial_driver(x1, x);

 Linux内核鼠标驱动工作流程:

http://www.lryc.cn/news/154626.html

相关文章:

  • 健康舒适的超满意照明体验!SUKER书客SKY护眼台灯测评
  • PID 算法
  • 13.Redis 事务
  • 李宏毅机器学习课程笔记(更新ing)
  • SIP mini 对讲终端,带sip热点功能
  • PHP中根据出生年月日计算年龄的封装函数
  • Linux巡检脚本
  • SQLite 3.43.0 发布,又有啥新功能?
  • 百度自研高性能ANN检索引擎,开源了
  • golang遍历map的方法
  • 如何让Android平台像网络摄像机一样实现GB28181前端设备接入?
  • 文盘Rust -- 生命周期问题引发的 static hashmap 锁 | 京东云技术团队
  • SpringMVC入门篇
  • 面经:安卓学习笔记
  • Java设计模式:四、行为型模式-06:观察者模式
  • vscode中讨厌的蓝色波浪线的去除小trick和原理
  • 开发工具——IDE安装 / IDEA子module依赖导入失败编译提示xx找不到符号 / IDEA在Git提交时卡顿
  • AcWing 787:归并排序
  • SeamlessM4T—Massively Multilingual Multimodal Machine Translation
  • Python数据分析-Numpy
  • 【真题解析】系统集成项目管理工程师 2023 年上半年真题卷(案例分析)
  • 【GAMES202】Real-Time Global Illumination(in 3D)—实时全局光照(3D空间)
  • 金蝶云星空二开,公有云执行SQL
  • JAVA String 二维的字符串数组 String[][]
  • 【Unity3D赛车游戏优化篇】【九】Unity中如何让汽车丝滑漂移?
  • el-dialog设置高度、使用resetFields清除表单项无效问题
  • MySql切换到达梦数据库,各种问题解决记录
  • 2023开学礼山东财经大学《乡村振兴战略下传统村落文化旅游设计》许少辉新财经图书馆
  • vscode中使用eslint+prettier的配置
  • HTML 标签讲解