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


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

    一、USB协议基础

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

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

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

  • 相关阅读:
    HarmonyOS NEXT应用开发之预加载so并读取RawFile文件
    Python:二进制文件实现等间隔取相同数据量并合并
    Java NIO 关键概念之 Buffer
    再战:软件项目导论
    二叉树实现的相关函数
    Redis专题----2
    Allure的安装
    深度学习 精选笔记(4)线性神经网络-交叉熵回归与Softmax 回归
    Day1:面试必考题目
    MSF生成后门木马
  • 原文地址:https://blog.csdn.net/qq_42911741/article/details/132649969