没有合适的资源?快使用搜索试试~ 我知道了~
Linux USB-Gadget 驱动框架.pdf
需积分: 5 9 下载量 24 浏览量
2023-02-10
14:41:42
上传
评论
收藏 311KB PDF 举报
温馨提示
试读
3页
Linux USB-Gadget 驱动框架.pdf
资源推荐
资源详情
资源评论
2021/1/30
Linux USB-Gadget 驱动框架
https://mp.weixin.qq.com/s?src=3×tamp=1611974384&ver=1&signature=tqJsKEu4sM0nvvCNfbcA2KrkfBNIKIV*RfHlY5Q4ZP1UpPJ*ViDGx
…
1/4
Linux USB-Gadget 驱动框架
1 . 简介
USB gadget是什么? Linux-USB Gadget 驱动框架 ( 以 下 简 称 Gadget) 实 现 了
USB 协 议 定 义 的 设 备 端 的 软 件 功 能 。 相 对 于 Linux USB 主 机 端 ( Host ) 驱 动 而
言, Gadget 驱动出现较晚,它出现在2.4.23 以后。
Gadget 框 架 提 出 了 一 套 标 准 API, 在 底 层 , USB 设 备 控 制 器
( USB Device Controller, UDC ) 驱 动 则 实 现 这 一 套 API, 不 同 的 UDC ( 通 常
是 SOC 的一部分) 需要不同的驱动, 甚至基于同样的 UDC 的不同板子也需要进行代
码修改。这一层我们可以称之为平台相关层。
基于 API, Gadget 驱动实现了一套硬件无关的功能,这基本上可以对应到 USB 协议
里 的 各 种 USB Class , 也 有 比 如 USB Gadget Generic Serial 驱 动 , 没 有 对 应
的 Class。 当 然 , Gadget 驱 动 还 是 受 限 于 底 层 提 供 的 功 能 的 。 比 如 某 些 Class 需
要 USB Isochronous 端点,这时我们就不能支持该 Class。 普通的 Gadget 驱动只
实现一个功能(比如u 盘,usb 网卡)。复合设备可以支持多个功能,后面将仔细研究一
下 复 合 设 备 的 实 现 。 像 智 能 手 机 , PDA 这 样 的 设 备 , 硬 件 支 持 较 丰 富 的 端 点 、
DMA Buffer, 给软件提了支持复合功能的基础。
有两点值得注意,第一是 usb gaget 驱动框架不象 usb 主机端有 usb core 的概
念,usb 主机可能支持成百类型的外设,把通用功能抽象出来很有意义。Usb device 端
则 通 常 没 有 这 个 需 求 , 一 些 通 用 功 能 抽 象 在 一 些 Helper 函 数 里 就 可 以 了 。 第 二
是 usb 2.0 里提出了 OTG 的概念,可以在同一接口上支持 host 以及 device 功能。
2. 控制器驱动
常见的 usb device 有 U 盘, usb 鼠标、键盘,usb 蓝牙模块,usb 读卡器,等
等 。 这 些 设 备 比 较 简 单 , 通 常 不 会 运 行 Linux。 运 行 Linux Gadget 的 通 常 是 一 些 集
成 CPU 以 及 很 多 外 设 接 口 的 SOC ( System-on-Chip ) , 其 中 CPU 通 常
为 32 bit 的 CPU, 并且 udc 也是该 SOC 的一部分( 顺带还有 DMA 通道,FIFO)。
Linux 标准内核里支持各主流 SOC 的 udc 驱动,make menuconfig 一下可以看到
具 体 列 表 , 其 中 值 得 一 提 的 是 dummy_hcd, 它 是 一 个 软 件 模 拟 的 udc, 在 开 发 新
的 gadget 驱动时很有帮助。
控制器驱动处理很少的 USB 控制请求(主要由硬件负责的部分)。其它所有的控制
请求,比如返回描述符,设置当前配置,由 Gadget Driver 完成。控制器驱动一个主要
责任就是负责管理各个端点的 I/O 队列,在 Gadget Driver 的 buffer 和硬件buffer 之
间传输数据(通常是通过 DMA)。
我们前面提过,上层 Gadget 驱动能够实现什么功能要依赖底层提供的硬件条件。比
如一个复合设备需要至少 5 个端点,这些硬件特性通过一组 gadget_is_*()函数实
网络 2016-10-20Linux与嵌入式系统
资源评论
隨意的風
- 粉丝: 1w+
- 资源: 100
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功