0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样理解Gadget框架

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-13 11:18 次阅读

USB 协议是主从结构:

图片

左边主机,右边从机;USB 有主机控制器 UHC 和从机控制器 UDC,主机侧有 USB Device Driver,从机侧有 USB
Function Driver。

意思是说,一个开发板,可以当 USB 主机,接鼠标、键盘等从机;一个开发板也可以当 U 盘,接入 PC
电脑,此时开发板是从机。因此,我们要掌握两套驱动框架。这是 Linux 下 USB 相对于 I2C、SPI 复杂的地方,I2C 等根本不会考虑主控 Soc
作为从机的情况,但 USB 需要考虑。

本文主要针对主控 Soc 作为 USB 从机的情况,Linux 为其提供了 Gadget 框架。

编写 USB 设备驱动程序时,主要是:

读取设备的各类描述符,比如 endpoint 描述符,得到端点号

使用底层 USB Host Controller 驱动程序提供的 API 函数,从 endpoint 上读写数据

基于 Gadget 驱动框架模拟一个 USB 设备时,endpoint 的数据传输能力是底层的 USB Device Controller
驱动提供的,我们要做的就是:

提供各类设备描述符

使用底层 USB Device Controller 驱动程序提供的 API 函数,从 endpoint 得到数据、反馈数据

Gadget 的含义是“小器件”,在 Linux 的 USB 系统中,它表示“usb device”。Gadget 驱动程序,就是用来模拟 USB
Device。对于真实的 USB Device,它有两大要素:

怎么表示自己?

每个 USB Device 都有 1 个设备描述符

都 1 个或多个配置描述符

每个配置描述符里面有 1个 或多个接口描述符

每个接口描述符里面有 0 个多个端点描述符

怎么进行数据传输?

通过端点进行传输

有端点的操作函数

图片

在学习过程中,记住这几个要点非常有帮助:

各类描述符的构造

USB Host 获得 Gadget 各类描述符的过程

数据传输的流程

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5068

    文章

    19021

    浏览量

    303327
  • Linux
    +关注

    关注

    87

    文章

    11230

    浏览量

    208933
  • 框架
    +关注

    关注

    0

    文章

    399

    浏览量

    17435
收藏 人收藏

    评论

    相关推荐

    请问对话框和框架控件之间的关系该怎么理解

    理解对话框就是框架控件中放置了一些其他小控件(比如Botton)。是不是这样理解?谢谢!
    发表于 09-12 04:35

    Intel Power Gadget支持baytrail平台吗?

    Intel Power Gadget支持baytrail平台吗?
    发表于 08-22 21:06

    Modbus程序框架流程是怎样

    什么是Modbus协议?Modbus程序框架流程是怎样的?
    发表于 10-20 07:13

    RK3288使用USB GADGET实现大容量存储脚本

    (){mount -t configfs none /sys/kernel/configmkdir /sys/kernel/config/usb_gadget/rockchip -m
    发表于 11-18 16:33

    怎样理解阻抗匹配?

    怎样理解阻抗匹配? 阻抗匹配是指信号源或者传输线跟负载之间的一种合适的搭配方式。阻抗匹配分为低频和高频两种情况讨论。
    发表于 11-30 10:30 1465次阅读

    怎样理解EMC电路

    怎样理解EMC电路 电磁兼容设计通常要运用各项控制技术,一般来说,越接近EMI源,实现EM控制所需的成本就越小。PCB上的集成电路芯
    发表于 04-09 18:02 2122次阅读

    RS亚太首发Gadget Renesas开发套件

      全球领先的电子与维修产品高端服务分销商、Electrocomponents plc 集团公司(LSE:ECM)的贸易品牌 RS Components 公司今天宣布,将于其亚太区电子商务平台开始销售 Gadget Renesas 。Gadget R
    发表于 11-27 09:07 1024次阅读

    工具SemExpr可实现gadget搜索与语义分析

    代码重用攻击的实施过程较为繁杂,通常需要一些工具辅助人工来完成 gadget序列的构建,但现有的自动化构建工具效率较低。在分析 Ropper、 angrop和BoPC等典型开源 gadget工具语义
    发表于 03-12 14:52 20次下载
    工具SemExpr可实现<b class='flag-5'>gadget</b>搜索与语义分析

    [嵌入式linux]将linux板卡虚拟为USB网卡设备(Ethernet Gadget

    kernel menuconfig-> Device Drivers ->USB support -> USB Gadget Support 建议最好选成M,作为内核驱动模块,便于
    发表于 11-02 11:36 12次下载
    [嵌入式linux]将linux板卡虚拟为USB网卡设备(Ethernet <b class='flag-5'>Gadget</b>)

    怎样理解各种电机之间的区别?

    电机本来种类就多,命名也比较混乱,怎样理解各种电机之间的区别?下面这些电机,看了是不是有点儿头大,每种都能弄个明白吗?
    发表于 03-13 18:00 2037次阅读

    AMD Xilinx Linux 2022.1 USB Gadget使用

    有客户使用Linux中的USB Gadget功能,把MPSoC器件做USB从设备
    的头像 发表于 07-07 14:15 686次阅读

    USB Gadget serial应用实例(上)

    1. 硬件体验 使用 Linux 自带的 USB Gadget 驱动 /drivers/usb/gadget/legacy/serial.c 使用 USB 线,连接板子的 OTG 口和 PC
    的头像 发表于 07-13 11:06 2630次阅读
    USB <b class='flag-5'>Gadget</b> serial应用实例(上)

    USB Gadget zero应用实例程序

    /usb/gadget/legacy/zero.c】。 应用程序编程框架如下: 找到设备 选择配置:zero.c 提供了两种配置,loopback、sourcesink 得到端点:找到
    的头像 发表于 07-13 11:14 1036次阅读
    USB <b class='flag-5'>Gadget</b> zero应用实例程序

    从硬件软件角度理解Gadget框架

    2. 从硬件软件角度理解 Gadget 框架 USB 传输的核心是 endpoint,使用 endpoint 可以收发数据。在 endpoint 之上,就可以模拟 USB 串口、USB 触碰屏
    的头像 发表于 07-13 11:32 1023次阅读
    从硬件软件角度<b class='flag-5'>理解</b><b class='flag-5'>Gadget</b><b class='flag-5'>框架</b>

    从获取描述符的角度理解Gadget框架

    安装好 gadget 驱动程序后(比如 modprobe g_zero), 它只是构造好了各类描述符。在设备的枚举过程会读取描述符。 使用 OTG 线连接电脑和开发板时,电脑软件会执行如下
    的头像 发表于 07-13 11:38 860次阅读
    从获取描述符的角度<b class='flag-5'>理解</b><b class='flag-5'>Gadget</b><b class='flag-5'>框架</b>