Linux USB Gadget的驱动部分进行数据传输(第一部分)
发布时间
阅读量:
阅读量
内核gadget两大核心功能主要用于完成真实USB设备连接及虚拟设备模拟两大任务:其中一个是负责处理真实的USB端口连接与数据传输相关事务;另一个则是模拟诸如Hub类虚拟端口以及光驱等外部设备的功能表现。在本文中将详细阐述基于Linux环境下USBgadget开发的基本原理,并着重介绍如何通过gadget实现简单的数据传输操作同时也会深入探讨UDC相关知识以期为后续开发工作奠定坚实基础
1、注册function
核心负责以层次分明的方式对复合设备进行详细说明(在同一配置中包含多个interface来执行各自的功能,则构成复合设备),并将该类设备的信息整合到同一个模块中用于表示其整体特性;同时将所有接口与端点信息结合在一起以实现特定功能函数
本文仅限于介绍基础的数据传输方案。为了满足基本需求,我们只需实现两个核心功能即可:第一个功能是将数据通过udc驱动发送到其内部队列中,并与USB IN接口相对应的操作;第二个功能则是接收来自udc驱动的数据,并将其分配至接收队列中。注:在此上下文中,默认以主机视角描述IN和OUT操作。这里内核为此功能集提供了必要的支持。
usb_ep_alloc_request();
usb_ep_queue();
这两个函数,分别用来分配一个gadget请求和queue一个请求。
in_r
全部评论 (0)
还没有任何评论哟~
