前言

前面讲过,gadget api 提供了usb device controller 驱动和上层gadget驱动交互的接口。 UDC 驱动是服务提供者,而各种 gadget 驱动则是服务的使用者。其实还有一些通用代码,因为功能比较简单,我们称之为 helpe 函数。在阅读了 Gadget API 文档后,让我们开始阅读代码, udb 驱动代码比较复杂,我们先从 gadget 驱动看起。各种 gadget 驱动中, 最简单的要数 g_zero 驱动。

g_zero 驱动简介

作为最简单的 gadget 驱动,g_zero 的功能基于两个 BULK 端点实现了简单的输入输出功能, 它可以用作写新的 gadget 驱动的一个实例。 g_zero 驱动还有一个重要角色, 即配合 host 端的 usbtest (内核模块及用户层代码), 用于测试底层 udc 驱动。当然,也可以是测试主机的控制器驱动。

两个 BULK 端点为一个 IN 端点,  一个 OUT端点。基于这两个(由底层提供的)端点,g_zero 驱动实现了两个 configuration。 第一个configuration 提供了 sink/source功能:两个端点一个负责输入,一个负责输出,其中输出的内容根据设置可以是全0,也可以是按照某种算法生成的数据。另一个 configuration 提供了 loopback 接口, IN 端点负责把从 OUT 端点收到的数据反馈给 Host.

根据系统配置,g_zero 驱动提供了全速及高速功能,从而稍微增加了代码复杂度。另外,它还支持 otg 接口,从usb2.0 协议我们知道,otg 其实是usb device实现的一个补充功能。它增加了一套接口,使得同一设备可以在设备角色以及有限主机角色之切换。上层gadget驱动主要是在描述符方面提供配合支持。下面我们开始看代码。

USB 最简单的 gadget驱动:g_zero(2)相关推荐

  1. Linux-USB Gadget : Part 4: 最简单的 gadget驱动:g_zero

    Linux-USB Gadget : Part 4: 最简单的 gadget驱动:g_zero 作者: zjujoe 转载请注明出处 Email : zjujoe@yahoo.com BLOG : h ...

  2. linux usb gadget驱动详解(三)

    本文将对linux4.4.19版本usb gadget源码进行简单分析.鉴于前文反复测试U盘设备驱动,现从linux-4.4.19/drivers/usb/gadget/legacy/mass_sto ...

  3. USB UDC与gadget驱动

    这里的USB设备控制器(UDC)驱动指作为其他usb主机控制器外设的usb硬件设备上底层硬件控制器的驱动,该硬件和驱动负责将一个usb设备依附于一个usb主机控制器上. 在usb设备控制器于gadge ...

  4. linux驱动绑定设备 命令 bind,linux gadget 驱动

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 介绍USB系统框架,只关注框架部分,不涉及细节 这里的USB设备控制器(UDC)驱动指作为其他usb主机控制器外设的us ...

  5. linux usb gadget驱动详解(五)

    现从fsg_bind()讲起. //不失一般性,删掉错误处理和configfs相关代码 static int fsg_bind(struct usb_configuration *c, struct ...

  6. linux usb gadget驱动详解(二)

    在上篇<linux usb gadget驱动详解(一)>中,我们了解到gadget的测试方法,但在最后,我们留下一个问题,就是怎样使用新的方法进行usb gadget驱动测试. 我们发现l ...

  7. USB总线-Linux内核USB3.0设备控制器之dwc3 gadget驱动初始化过程分析(五)

    1.概述 USB设备控制器(UDC)驱动的框图如下图所示,由三部分组成.第一部分是UDC驱动核心层,在drivers/usb/gadget/udc/core.c文件中实现,该层是一个兼容层,将USB ...

  8. usb hid gadget驱动

    一 usb gadget框架层次 1 驱动层 2 复合层 3 控制器驱动层 二 初始化流程 1 驱动层介绍 2 hidg驱动初始化详解 1 至上而下遍历搜索绑定驱动和设备 2 至下而上遍历完成初始化 ...

  9. linux usb gadget驱动详解(一)

    由于PC的推广,USB(通用串行总线)是我们最熟知的通信总线规范之一,其他的还有诸如以太网.PCIE总线和RS232串口等.这里我们主要讨论USB. USB是一个主从通信架构,但只能一主多从.其中us ...

最新文章

  1. x VDC(x=3、5、6、8、12、24、48)继电器的引脚连接方式
  2. 计算机视觉与深度学习 | ORB特征匹配:基于OpenCV+Python(暴力匹配、FLANN)
  3. 【数据库系统概论】考研第四部分重点分析【4.1】
  4. address标签,为网页加入地址信息
  5. linux-ntpdate同步更新时间
  6. 用c语言编写名字用字母表示,如何用C语言编写自己的姓名和学号
  7. fastjson android 版本,fastjson 1.1.58.android 发布,Bug 修复版本
  8. 2.TCP/IP 详解卷1 --- 链路层
  9. probability是什么意思_probability
  10. 最新回归算法理解、实现及应用(2)logistic回归
  11. ACE Admin 模板实现sidebar菜单联动tabs页签
  12. 一款比较好看的javascript轮播图代码
  13. 网上书店软件需求说明书
  14. Unity AI 之 行为树 的简单介绍
  15. STM32_ADC模数转换的基本原理
  16. Vue + Element 前端调用后端接口获取微信支付二维码和支付宝支付二维码
  17. Python之选择结构(案例1:快递价格计算系统)
  18. 证件照制作如此简单——基于人脸检测与自动人像分割轻松制作个人证件照(C++实现)
  19. Unity官方实例教程 Space Shooter(太空射击游戏)
  20. 新型穿墙监控雷达Range-R:让你的隐私无所遁形(转)

热门文章

  1. 双11时期退货潮,网络电话帮你省钱
  2. android games 1,Beginning Android Games
  3. uniapp 购物车 单店铺
  4. 2月10日市场游资操作情况以及龙虎榜
  5. 为什么我不再推荐大家去注册今日神评自媒体平台?
  6. 维生素c和b1_维生素C和维生素B1各有什么作用,长期使用有没有害??
  7. 听说你想用Java去掉或者替换PDF里全部文本?看这
  8. 学习笔记(02):自然语言处理Word2Vec视频学习教程-Hierarchical Softmax
  9. 计算机经典推荐(44本)
  10. 化工原理物性参数_化工原理(对流传热).ppt