zoukankan      html  css  js  c++  java
  • linux usb驱动——Gadget代码介绍

    一般网上关于介绍USB Gadget的资料都是基于Linux2.6.32或在这之前的版本,作者在关注了Linux2.6.37和Linux3.0.4版本的内核,USB Gadget的一些API已经与Linux2.6.32的不同了。但是那些关键的数据结构还是一样滴。
    Linux USB Gadget分三层架构:
    层次关系从上到下
    一层:USB Gadget功能层。BSP/Driver开发者通常是要实现这一层,从而实现一个具体的设备驱动,如Anddroid在此层实现了adb,mtp,mass_storage等。浏览参考关注此层代码时,会发现“composite”是此层的关键字,此层中关键的数据结构是:struct  usb_composite_driver。这一层的驱动文件一般为:driver/usb/gadget/android.c(android实现的)或driver/usb/gadget/serial.c(传统Linux实现的USB转串口)。
    二层:USB设备层。这一层是Linux内核开发维护者实现的,与我们没太大关系,不用我们操心,我们只关心其的一些接口就行。浏览参考关注此层时,会发现“gadget”是此层的关键字,此层的关键数据结构是:usb_gadget_driver,usb_composite_dev。这层主要的一个驱动文件为:driver/usb/gadget/composite.c
    三层:USB设备控制器驱动层。这一层主要是与CPU、CPU USB控制器有关,与硬件紧密相关,这一层也比较头痛,主要它和USB控制器牵扯在一起,涉及有寄存器、时钟、DMA等等。但是这一层往往是由芯片厂商去实现。我们一般仅需在板级文件中处理好所需要的USB接口即可。这层的关键字就是“UDC”,主要驱动文件命名含“udc”关键字,一般与CPU或芯片厂商有关,如driver/usb/gadget/xxx_udc.c。
     
     
  • 相关阅读:
    rsync 安全复制使用程序
    mysql 的sleep线程过多处理方法
    test
    跨域问题的解决
    在VMWare里安装Win11虚机
    Nginx 基础入门(收藏)
    NMXweb版
    ORA12519: TNS:no appropriate service handler found 解决
    关于工作中的第一个项目的个人总结[主要是个人学到的东西,细节]
    处理警告:No configuration found for the specified action
  • 原文地址:https://www.cnblogs.com/mahj/p/8494522.html
Copyright © 2011-2022 走看看