首页 > 编程知识 正文

biss接口协议,usbgadget显卡

时间:2023-05-05 06:16:03 阅读:107918 作者:1784

Linux-USB Gadget : Part 1:简介作者: zjujoe转载请注明出处

Email: zjujoe@yahoo.com

BLOG: http://blog.csdn.net/zjujoe

3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com/http://www.Sina.com.Sina.com http://www.Sina.com/http://www.Sina.com/3358 www.Sina.com.Sina.com/3358 ww.Sina.com

Google

一下,发现网上对 USB Gadget

简介Linux-USB Gadget驱动框架(以下简称Gadget )实现了由USB协议定义的设备端软件功能。 对于Linux USB主机端(Host )驱动程序,千兆驱动程序出现在2.4.23或更高版本中。 (作者第一篇announce :3358 lwn.net/articles/27352 /或http://kernelelelelelence此外,2.6内核标准版本的可能比最新版本稍旧“mm”补丁的版本比较新。

千兆框架提出了一组标准API,在基础上,USB设备控制器(USB Device Controller,UDC )驱动器实现了这一组API,不同的UDC (通常是SOC的一部分)是不同的这一层可以称为平台相关层。

基于API,Gadget驱动程序实现了一系列与硬件无关的功能,这基本上可以对应USB协议中的各种USB Class,例如还有USB Gadget Generic Serial驱动程序,对应的CCC 当然,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 功能。OTG 是一个比较复杂的规范,以后有时间再研究。

 

控制器驱动

       常见的 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_*()函数实现。

 

Gadget 驱动

基于底层提供的资源, Gadget 驱动可以运行在各种硬件平台上。重要的驱动有:

Ø         Gadget Zero, 类似于 dummy hcd, 该驱动用于测试 udc 驱动。它会帮助您通过 USB-IF 测试。

Ø         Ethernet over USB, 该驱动模拟以太网网口,它支持多种运行方式:

²        CDC Ethernet: usb 规范规定的 Communications Device Class “Ethernet Model” protocol。

²        CDC Subset: 对硬件要求最低的一种方式,主要是 Linux 主机支持该方式。

²        RNDIS: 微软公司对 CDC Ethernet 的变种实现。

Ø         File-backed Storage Gadget最常见的 U 盘功能实现。

Ø         Serial Gadget 实现,包括:

²        Generic Serial 实现(只需要Bulk-in/Bulk-out端点+ep0)

²        CDC ACM 规范实现。

Ø         Gadget Filesystem, 将 Gadget API 接口暴露给应用层,以便在应用层实现user mode driver。

Ø         MIDI: 暴露ALSA接口,提供 recording 以及 playback 功能。

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。