菠菜含什么元素最高| 犄角旮旯是什么意思| 黄瓜炒什么菜好吃| 血小板低看什么科| aut0是什么意思| 游车河什么意思| 什么终于什么造句| 一岁宝宝吃什么| 柯是什么意思| 为什么会阑尾炎| 女生左手中指戴戒指什么意思| 请多指教是什么意思| 急性荨麻疹不能吃什么食物| 紫外线过敏用什么药膏| 属羊女和什么属相最配| 农历3月14日是什么星座| 啾啾是什么意思| 跳绳有什么好处| 曹操什么星座| 湿疹擦什么药好| 红薯什么时候种植| 梦见修坟墓是什么预兆| 粉色裤子搭什么上衣| 失态是什么意思| 旅游穿什么鞋最舒服| 刮痧的痧是什么东西| 决堤什么意思| 阳虚有什么症状| 后话是什么意思| 窈窕淑女是什么生肖| 老八是什么意思| 门户网站是什么| 消化不良吃什么| 小狗拉稀 吃什么药| 性疾病都有什么症状| 浮夸是什么意思| kobe是什么意思| 梦到生儿子有什么预兆| 脊柱侧弯拍什么片子| 四十年是什么婚| 霉菌性阴道炎用什么洗液好| 黄盖代表什么生肖| 干部是什么意思| 梦见小老虎是什么预兆| 肩膀的肌肉叫什么| 生辰纲是什么东西| 梦见茄子是什么意思| 痛风在医院挂什么科| ks是什么意思| 节气是什么意思| 属马的贵人属相是什么| 山药为什么煮熟了也麻口| 为什么英文怎么写| 川崎病有什么症状| 纳字五行属什么| ysl是什么品牌| 小针刀是什么手术| 黄磊为什么不娶刘若英| 什么是脂溢性皮炎| 家五行属性是什么| 孩子走路晚是什么原因| 属兔的婚配什么属相好| 怀孕前壁和后壁有什么区别| 七月十六是什么星座| 子午相冲是什么意思| 槟榔为什么上瘾| 虐猫是什么意思| 血小板低是什么症状| 咳嗽吃什么水果好| 麝香保心丸治什么病| 红彤彤的什么| 口腔苦味是什么原因| 牙虫是什么样的图片| 赛诺菲是什么药| 头发打结是什么原因| 造影有什么危害| 拔牙后能吃什么东西| 3楼五行属什么| 药流是吃什么药| 9月8号是什么星座| 张钧甯为什么读mi| 保育费是什么意思| 釜底抽薪是什么计| 面部神经吃什么药| 红线女是什么意思| 血糖高吃什么食物最好最佳| 单飞是什么意思| 什么是宾格| 不羁放纵是什么意思| 阴囊湿疹用什么药膏效果最好| clot什么牌子| 感冒什么时候传染性最强| 为什么喜欢你| 唇炎去药店买什么药| 拉肚子适合吃什么| 天行健下一句是什么| juicy什么意思| 小金鱼吃什么| 洋姜学名叫什么| 什么是象限| 谷氨酸钠是什么添加剂| 左边脸长痘痘是什么原因| 水泻拉肚子吃什么药| 游戏bp是什么意思| ein是什么意思| 蜻蜓是什么生肖| 孕妇肾积水是什么原因引起的| 牛肉发绿色是什么原因| 迂回战术什么意思| 蚊子咬了用什么药膏| 慢性盆腔炎吃什么药| 淋巴结肿大是什么原因引起的| 晚上吃什么不长肉| 白蛋白低有什么症状| 梦见中奖了预兆什么| 乔木是什么| 牛逼什么意思| 什么是幸福| 六根清净是什么意思| 木字旁的有什么字| 嫂夫人什么意思| 睾丸痛吃什么药| 野鸡吃什么食物| 小舌头叫什么| 飞机下降时耳朵疼是什么原因| 来大姨妈吃什么对身体好| 颈动脉b超是检查什么| 吃什么会变黑| 高考成绩什么时间公布| 山人是什么意思| 拉肚子吃什么菜| 思想感情是什么意思| 喉咙痛用什么药好得快| 单鞋是什么鞋| 问候是什么意思| 月经期间洗澡会有什么影响吗| 黄斑前膜是什么病| 开车不能穿什么鞋| 孙耀威为什么被雪藏| nasa是什么牌子| 养尊处优的意思是什么| 高密度脂蛋白胆固醇是什么意思| 梅长苏结局是什么| 网织红细胞高说明什么| 孕妇喝什么牛奶| 三伏天是什么时候开始| 洞房花烛是什么生肖| 何德何能是什么意思| slc是什么意思| 做糖耐是检查什么| 左卵巢内囊性结构什么意思| 什么的星空| 鼠辈是什么意思| 吃什么食物可以降低胆固醇| 一张张什么| 7.8号是什么日子| 破伤风什么症状| 湿疹涂什么药| 侃侃而谈是什么意思| 安踏是什么品牌| 师级干部是什么级别| 蝼蛄吃什么| tf卡是什么| 被老鼠咬了打什么疫苗| 孕妇牙龈出血是什么原因| 戊午五行属什么| dumpling是什么意思| 什么的拳头| 手脚出汗什么原因| 湿气重会有什么症状| cashmere是什么面料| 成都人民公园有什么好玩的| 羊字五行属什么| 叶公好龙的意思是什么| 什么时候立冬| 绿壳鸡蛋是什么鸡生的| 1129是什么星座| 急性肠胃炎吃什么水果| 湿疹吃什么中药| 牙虫长什么样子| 降压药什么时候吃比较好| 妈妈最大的愿望是什么| 前列腺炎是什么原因引起的| 黄姜长什么样图片| 茵是什么意思| 什么人容易得骨肿瘤| 马踏飞燕什么意思| 白羊座跟什么星座最配| 肠胃炎喝什么药| 丙肝病毒抗体阴性是什么意思| 祖籍是什么意思| 冰丝和天丝有什么区别| 糯米粉是什么粉| 小儿厌食吃什么药最好| 甘油三酯高吃什么药效果好| 龙头凤尾是什么生肖| 为什么会拉血| 为什么夏天吃姜好| 出尔反尔是什么意思| 金字旁加匀念什么| 淋巴结肿大吃什么食物好| 梵克雅宝为什么那么贵| 腿抽筋是什么原因造成的| 宝宝头爱出汗是什么原因| 怀孕10多天有什么症状| 老是想咳嗽是什么原因| 羊肉炖什么补肾壮阳| 骆驼吃什么食物| 睡醒嘴苦是什么原因| 死忠粉是什么意思| 亢奋什么意思| 经常喝柠檬水有什么好处和坏处| 半夜醒是什么原因| 送荷花的寓意是什么| 毛血旺是什么| 肠痈是什么意思| 辅助生殖是什么意思| 梦到猫是什么意思| 高血压是什么原因引起的| 赤日对什么| 化疗期间不能吃什么| 何弃疗是什么意思| 针眼是什么原因引起的| 宫腔内高回声是什么意思| 浅紫色配什么颜色好看| ggo是什么意思| 60岁男人喜欢什么样的女人| 神经内科主要看什么病| 突然嗜睡是什么原因造成的| 1.8号是什么星座| 裙裤适合什么人穿| 鲨鱼用什么呼吸| 华伦天奴属于什么档次| 姓陆的女孩取什么名字好| 心肌炎挂什么科| 牛头马面是什么生肖| 这是什么植物| 1108是什么星座| 孕吐喝什么水可以缓解| 为什么门牙突然有缝了| 胆汁反流是什么原因引起的| 肺型p波是什么意思| 继女是什么意思| 肠镜活检意味着什么| 尿道口流脓什么病| pco是什么意思| dvf是什么品牌| 天秤座是什么星座| 什么是刺身| 生地是什么| 猴配什么生肖最好| 肘是什么意思| 卡介苗为什么会留疤| 孕吐一般从什么时候开始| 冻顶乌龙茶属于什么茶| ovs是什么品牌| 吃什么有助睡眠| 湿疹用什么药好得最快最有效| 发热门诊属于什么科| 一个月一个并念什么| 右肩膀痛是什么原因| 二尖瓣钙化是什么意思| 胖子从12楼掉下来会变什么| 淡淡的什么| 百度

新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > Linux2.6环境下USB设备的驱动实现

新疆2018年普通高等职业院校单招工作启动

作者: 时间:2025-08-04 来源:网络 收藏
0 引言

嵌入式linux系统以其易于移植裁减、内核小、效率高、完整、原代码开放及性能优异等特点,在嵌入式领域得到了非常广泛的应用。Linux的端的源代码中主要有 device的海量存储、串口、网络设备等设备程序及各种 device控制器芯片的程序。市场上USB设备控制器芯片种类繁多,大多数用户需要针对特定应用来开发相关的USB设备控制器程序,才能使设备正常工作在linux操作系统下。

1 USB设备端驱动系统

Linux Gadget子系统主要分为三层:第一层为芯片驱动层,负责将各种USB device控制器抽象为统一的函数接口,以供上层驱动程序调用;第二层主要是对操作函数的简单封装;第三层为设备驱动层,可根据系统的需求所对应的功能。图1所示是Linux Gadget子系统的驱动层次。Linux Gadget子系统的设备驱动层主要根据各个类别的规范及协议各种设备的驱动,本设计需要使一个嵌入式设备拥有移动硬盘的功能,所以,可以根据海量存储类的规范及协议来该功能。



1.1 UDC驱动的基本构架

图2所示是UDC驱动的基本构架图。在控制器驱动程序中,首先应注册platform驱动,调用其probe函数搜索设备,并在probe函数内初始化usb_ep和usb_gadget等结构,然后注册设备,并申请中断,接着等待中断进入中断服务子程序,最后声明和实现usb_gadget_register_driver注册函数并输出给上层驱动。在该过程中,联系它们的纽带是一些全局结构体变量。

1.2 Gadget API

Gadget API为Gadget系统定义了统一的数据结构和接口函数,它和主机端的USB Core地位类似,但功能仅限于提供编程接口,如用结构体usb_gadget_ops和usb_ep_ops对设备控制器驱动操作函数和端点操作函数进行重新封装。比较特殊的是Gadget驱动程序注册函数usb_gadget_register_driver,它们是由设备控制器(UDC)驱动直接提供的,用于将UDC绑定到gadget driver。这增加了Gadget Driver和UDC之间的依赖性。

在设备端,Gadget系统虽然类似主机驱动系统分了三层结构,但Gadget API只定义了一些数据结构、宏和功能函数,并对UDC驱动程序进行了简单包装,而没有驱动管理等功能。

1.3设备应用驱动程序

设备端应用程序(Gadget Driver)用于控制USB设备功能的实现,使设备表现出“网络连接”、“打印机”或“大容量存储设备”等特性。本文以大容量移动存储设备为例来实现移动硬盘的功能。

BULK ONLY传输指的是主机和大容量存储设备之间的一种数据传输方式。

2设备端驱动调度

在嵌入式Linux操作系统中,Gadget driver和Gadget API可完成部分USB协议处理、BULK ONLY等传输协议以及指令的解析处理,用户只需要在设备控制器驱动程序中完成部分USB协议处理和Gadget API的衔接工作。

图3所示的流程图给出了USB设备端驱动程序的基本调度思想。该方案的主要思路是被动的接受主机端的传输命令(任何类型的通信都由USB主机发起,USB设备间不能直接通信),然后通过中断触发的方式完成主机端的数据传输。当产生设备端中断时,设备控制器驱动程序首先判断中断类型。当其为批量传输端点IN中断时,驱动程序会将该EP下链接的REQ中的数据依次写入USB2.0 OTG IP的设备控制器的内存区;当其为批量传输OUT中断时,驱动程序会将设备控制器内存区的数据读入REQ中的buffer中;当其为端点0的控制传输中断时,驱动程序将读取端点缓冲区的数据,并解析当前的设备请求。如果主机传输给设备的设备请求为USB REO SEDRESS(设置设备地址)、USB_REQ_GET_STATUS(获取设备状态)、USB_REQ_SET_FEATURE(设置设备特性),设备控制器驱动程序会自行响应请求。但是,如果是其它设备请求,如GET_DESCRIPTOR(获取设备描述符)时,设备控制器驱动便会将该请求提交给Gadget Driver,然后由Gadget Driver排队将该设备请求提交给端点,以等待下次控制端点中断。


控制传输比较复杂,它需要完成建立阶段、数据传输阶段和状态阶段。整个控制端点中断的处理可通过四个状态实现,分别是:端点0空闲(EP0_IDLE)、 数据IN传输(EP0 IN DATA_PHASE)、数据OUT传输(EP0 OUT DATA_PHASE)和状态阶段(EPO_STATUS)。

EP0_IDLE状态主要处理建立阶段的setup令牌,并根据获得的设备请求处理能够处理的设备请求,同时把不能处理的设备请求(如获取设备描述符,配置描述符等)提交给上层Gadget Driver;EP0_OUT_DATA_PHASE状态主要处理数据阶段的OUT传输;EP0_OUT_DATA_PHASE状态主要处理数据阶段的IN传输;EP0_STATUS状态则主要完成控制传输过程中的状态阶段。

在图3所示的流程图中,EP0为控制传输端点,EP1、EP2、EP3为批量传输端点,它们主要包括端点传输类型、端点缓冲区大小等信息。REQ为Gadget Driver提交的端点请求,主要包含传输的数据长度和地址。

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭
农历9月28日是什么星座 兔和什么生肖最配 暖巢早衰是什么原因 1211是什么星座 哈喽是什么意思
控告是什么意思 为什么小孩子经常流鼻血 过敏性鼻炎挂什么科 圣诞节是什么时候 动脉导管未闭对宝宝有什么影响
精神慰藉什么意思 佛珠断了有什么预兆 蜂窝数据什么意思 大是大非是什么意思 绿豆芽炒什么好吃
走路对身体有什么好处 penis是什么意思 为什么有的人怎么吃都不胖 王的五行属性是什么 回肠荡气什么意思
外阴白斑是什么样子hcv8jop5ns1r.cn 产能过剩是什么意思jiuxinfghf.com 银行卡年费是什么意思hcv8jop4ns2r.cn fc什么意思hcv8jop9ns7r.cn 腿肿是什么原因引起的怎么办hcv8jop1ns7r.cn
缘故的故是什么意思hcv9jop0ns0r.cn 小鸟来家里有什么预兆hcv7jop7ns4r.cn 印象是什么意思hcv8jop8ns7r.cn 小鸡啄米什么意思hcv8jop2ns8r.cn 肝胆相照是什么意思hcv9jop7ns0r.cn
出虚恭是什么意思hcv9jop6ns7r.cn 被马蜂蛰了用什么药hcv8jop0ns2r.cn 正处级是什么级别hcv7jop5ns6r.cn dmp是什么意思hcv9jop4ns4r.cn 脚上长鸡眼去医院挂什么科hcv9jop5ns9r.cn
脱肛吃什么药最有效gysmod.com 孩子黑眼圈很重是什么原因hcv9jop3ns8r.cn 阿西是什么意思hcv9jop2ns7r.cn 农历六月是什么星座hcv9jop6ns1r.cn 细菌性阴道炎吃什么药好hcv8jop4ns2r.cn
百度