您的位置:笔笔发 技术资料 嵌入式操作系统 Android 正文
内容搜索
笔笔发:技术产业信息平台----成就有识之士创业梦想的殿堂
热门内容
推荐内容
USB gadget设备驱动解析(3)——驱动结构分析

本文章共12427字,分8页,当前第1页,快速翻页:
 

Linux USB 设备端驱动有两部分组成。一部分是USB 设备控制器(USB Device Controller, UDC)驱动、另一部分是硬件无关的功能驱动(如:鼠标、u盘、usb串口、usb网络等);也可以分为3层的,分别是:Controller Drivers、Gadget Drivers、Upper Layers,大概意思都差不多。

一、控制器(USB Device Controller, UDC)驱动

Gadget 框架提出了一套标准 API, 在底层, USB 设备控制器驱动则实现这一套 API, 不同的 UDC需要不同的驱动, 甚至基于同样的 UDC 的不同板子也需要进行代码修改。这一层是硬件相关层。

Linux 标准内核里支持各种主流 SOC 的 udc 驱动,如:S3C2410、PXA270等。你可以通过内核直接配置支持。你也可以通过修改它们获取更高的效率。如:s3c2410_uda.c 中并没有利用到控制器的dma功能,你可以根据需要修改它。 
要理解UDC驱动代码就必须对相应的硬件控制器熟悉。当然,如果你对此不感兴趣,或没时间熟悉,也可以暂时跳过对硬件相关部分。本文也侧重于对软件结构的描述,不关心硬件细节。

下面给出在UDC驱动中涉及到的一些关键数据结构及API,参考s3c2410_uda.c

1.关键的数据结构及API

gadget api 提供了usb device controller 驱动和上层gadget驱动交互的接口。下面列出一些关键的数据结构。

struct usb_gadget {//代表一个UDC设备 
        /* readonly to gadget driver */ 
               const struct usb_gadget_ops *ops; //设备的操作集
               struct usb_ep *ep0; //ep0(USB协议中的端点0), 处理setup()请求
               struct list_head ep_list; /* of usb_ep */本设备支持的端点链表
               enum usb_device_speed speed; //如:USB_SPEED_LOW、USB_SPEED_FULL等
               unsigned is_dualspeed:1; //支持full/high speed
               unsigned is_otg:1; //OTG的特性
               unsigned is_a_peripheral:1; //当前是A-peripheral,而不是A-host 
               unsigned b_hnp_enable:1; 
               unsigned a_hnp_support:1; 
               unsigned a_alt_hnp_support:1; 
               const char *name;
               struct device dev; 
        };

struct usb_gadget_driver {//代表一个gadget设备driver,如:file_storage.c中的fsg_driver
//又如:如zero.c中的zero_driver
               char *function; //一个字符串,如"Gadget Zero"
 

 
点这里复制本页地址发送给您QQ/MSN上的好友

相关文章

Linux USB gadget设备驱动解析(2)---驱动
USB gadget设备驱动解析(1)——功能体验
面对不断升级的内核,如何学习linux设备驱动
RT73 wifi无线网卡驱动移植过程
实例解析linux内核I2C体系结构(1)
Android HAL实例解析
进一步分析Android HAL
让你定制的Launcher成为系统中唯一的Launch
创建android sdk(包含emulator)
视频电话中camera部分数据流分析
Linux USB gadget设备驱动解析(4)--编写一
linux-2.6.26内核中ARM中断实现详解(1)
linux-2.6.26内核中ARM中断实现详解(2)
在Android中使用OpenCv
android2.3源码下载编译全过程
[Android算法] Activity的四种加载模式(转
Android2.2平台上支持多camera
edittext 插入表情(基于socket方式)
Android用户的一些误区——关于进程管理

相关评论


本文章所属分类:首页 技术资料 嵌入式操作系统 Android


反馈意见和建议