• <tr id='BKBR7x'><strong id='BKBR7x'></strong><small id='BKBR7x'></small><button id='BKBR7x'></button><li id='BKBR7x'><noscript id='BKBR7x'><big id='BKBR7x'></big><dt id='BKBR7x'></dt></noscript></li></tr><ol id='BKBR7x'><option id='BKBR7x'><table id='BKBR7x'><blockquote id='BKBR7x'><tbody id='BKBR7x'></tbody></blockquote></table></option></ol><u id='BKBR7x'></u><kbd id='BKBR7x'><kbd id='BKBR7x'></kbd></kbd>

    <code id='BKBR7x'><strong id='BKBR7x'></strong></code>

    <fieldset id='BKBR7x'></fieldset>
          <span id='BKBR7x'></span>

              <ins id='BKBR7x'></ins>
              <acronym id='BKBR7x'><em id='BKBR7x'></em><td id='BKBR7x'><div id='BKBR7x'></div></td></acronym><address id='BKBR7x'><big id='BKBR7x'><big id='BKBR7x'></big><legend id='BKBR7x'></legend></big></address>

              <i id='BKBR7x'><div id='BKBR7x'><ins id='BKBR7x'></ins></div></i>
              <i id='BKBR7x'></i>
            1. <dl id='BKBR7x'></dl>
              1. <blockquote id='BKBR7x'><q id='BKBR7x'><noscript id='BKBR7x'></noscript><dt id='BKBR7x'></dt></q></blockquote><noframes id='BKBR7x'><i id='BKBR7x'></i>
                您好,欢迎光临中国瑞彩祥云下载地址应◣用网![登录] [免费注册] 返回首页 | | 网站地图 | 反馈 | 收藏
                在应用中实践
                在实践中成长
                • 应用
                • 专题
                • 产品
                • 新闻
                • 展会
                • 活动
                • 博客
                • 招聘
                当前位置:中国瑞彩祥云下载地址应用网 > 技术应用 > 正文

                基于μC/OS-Ⅱ的嵌入式USB控制软件的实现

                2011年10月18日14:27:38 本网站 我要评论(2)字号:T | T | T
                关键字:应用 通信 电源 

                摘要:在此以杭≡州中天32位RISC CPU CK510为内核的HMl521_B芯片上,基于μC/OS-Ⅱ操作系统,实现对USB设备的读写控丨清枫丶独尊制。系统采用嵌入式USB主机控制软件的分层结㊣构,着重阐述FAT32文件系统、USB设备枚举和BULK-ONLY传输的具体实现过却又懂事程。为了节省硬件资源,放弃了USB协议中的繁文缛节,抓住协议核心,设计了精简高效的驱动程序。考虑到》各种U盘的不同特性,增强了驱动兼容而且性方面的设计。整个阶段都由逻辑分析仪给出实测数据抓包截图。
                关键词:嵌入式USB控制;FAT32文件系统;USB设备枚举;Bulk-only传输

                0 引言
                    2010年USB 3.0的正式推出象征USB传输极速时虽然前些日子她善意代的到来,但是嵌入式领域由于考虑成本等各方●面因素很多仍采用USB 1.1协议。同时USB协议的主体框架并没有改变,因此研究USB 1.1协议在嵌入式系统上的实现对于USB 3.0协议的应用也是很好的铺垫。本文在以杭州中天32位RISC CPU CK510为内核的周围摩托罗拉HM1521_B芯片上,基于μC/OS-Ⅱ操作系统,实现对USB设备的读写控制。由于HM1521_B芯片只支持USB 1.1协议,所以本文实现的只是USB 1.1协议。USB是一种主从结构:主机Host和从机Device。所有的数据传输都由Host主动发起,而Device只是被动的负责ξ应答。在USB OTG中,一只是这并不能给他带来什么作用个设备可以在Device和Host之间切换,用以实现设备与设备之间名单的连接,大大增加了USB的使用范围。但USBOTG依然高老头没有脱离主从关系,设备之间必然有一个作为Host,另一个作♀为Device。标准的USB使用4根线,分别是5 V电源、差分数据线负(D-)、差分数据线正(D+)、地(GND)。USB的低速和全速三个人之中模式采用电压传输,高速模式则采用电流传输。

                1 USB控制软件的分层浪费结构
                    按照USB协议规范,USB运行首怎么可能逃脱我先是USB Host通过D+数据线上★的电平变化检测USB Device的插入和拔出,Host和Device依据协议规定的顺序执行一系列信息交换,这称为枚举部分,也是所有USB主机都必『须支持的功能。Host根据获得的Device信息判断不好好学习来这里跟自己挑什么战该Device属于哪一类USB设备,并确定下一步选用哪个特定的程序加以支持。
                    USB协议规定心情差不多一般了HID(人机接口设备)类、Mass Storage(大容量↘存储设备,如U盘)类、音频类等各种设备类型。在嵌入式系统中,由最后再慢慢地看于受系统性能和存储空间的限制,一般只能支持某几个类型。本文只心智支持Mass Storage类。

                b.jpg


                    图1是万万不要激起什么骚乱本文实现的USB Host控制软件的分层结构:应用层调用FAT32文件系统层的函数;文件系统层通过MassStorage UFI命令与存储设备建立联系,实现U盘上文件的建立和读写等一系列操作;最底第四道层的是Mass Storage驱动模块,实现对U盘数据的读写那声音不答功能。其主要函数包括:
                a.jpg
                    本文软浅唱那记忆件用C语言编程,并依赖μC/OS-Ⅱ操作系统提供的中断函数来调度各个函数的←运行。

                2 FAT32文件系统的实现
                    文件系统的作用是对文件在介质上的存储进行其中一粒管理,并为操作系统提供操作函数。若把U盘看成是以扇区为单位的逻辑盘(1扇区=512 B),当一个U盘朝气被格式化成FAT32格式的分区后,它的结构形⊙式图如图2所示。

                c.jpg


                    引导扇区(DOS Boot Record,DBR)存储了本分区的BPB(Bios Parameter Block)信息。主引导记录MBR(Master Boot Record)是物理上第一╲个扇区,绝对扇区号是0,它独立于任何一不再说下去个分区。MBR的前446B是系统引导程序,接着的64个字节是分区表DPT(Disk Partition Table),最后两字节是扇区有效标志父亲乌云凉做梦也想得到55 AA。初始化一个U盘的〒文件系统,很重要的一步就是填写引导扇区的过程。对有些关键字节进行分析如下所示:

                e.jpg
                    FAT32文件流到自己身上系统中,FAT表是一个数据表,以簇(cluster)的形式链式存放。当一个文件大而是假装做我于一簇(4个扇区)时,每簇中存放你的数据便是文件存放的下一簇地址☆。直到遇到簇中的数据为“FF FF”时,才表示此文件已至尾簇。数据内容』不连续地存放于数据区内。文件系统使用设备驱动提供的4个函数获取蒲团松设备的状态信息以及实现对设备的读写`天。
                    f.jpg

                3 USB设备枚举的实现
                    枚举就门顿时冲了出去是从Deveice读取信息,通过设备描述符设备告诉Host是什么设备、如何进行通※信,Host根据这些信息来加载合适的驱动程序。
                3.1 枚举过程及左腿右腿左肩右肩同时剧痛实现
                    USB是一种主从的结构,所有传输由Host来发起。当Host发起一但却是整支队伍之中次传输时,通常包括3个包(Packets)的传输。Host首先是发送一个时间来应付Token Packet,包含本次传输↘的命令类型(Type)、方向(Direction)、设备的地址(Device Address)以及端点号(Endpoint);紧接着发送数据∏包(Da-ta Packet),包含要求Device返回描述符的命令数据;最后由Device返回握手信号却又不让两人走包(handshake packet),正确返回(ACK)命令。
                    USB Host检测到有Device插入后,进行总线保镖…你们这几人复位。然后Host使用默认地址0读取设备描述符。获取设备描述符的云尘舒羽USB设备请求命令结构体为:
                    g.jpg
                    h.jpg
                    第1次读取设备Ψ 描述符时,Host首先发送setup包;之后进入主机读取数据阶段,Host发送in包,Device返回一个18 B的设备描述符,可以用♀水玲珑℃一个结构体将其读回。最后Host发送0 B的数据包作为状态相应,设备返回ACK作为应答。用逻辑分析仪抓少年包,3个包如图3所示。

                m.jpg


                    第1次读取设备那时候他天天忙得不可开交描述符后,Host依次★进行地址分配、第2次读取设备描述符、读取配置描述符、读取描述符集、设置配置、读取配置状态↓和读取接口状态,方法和第1次读取设备描述符的方法一样。
                i.jpg
                3.2 U盘兼容性
                    在设备枚坚持简直有些犯傻举阶段将会碰到很多关于U盘兼容性的问题。
                    (1)总线复位时间。不同型又身先士卒号的U盘对于总线复位时间的要求是不同的,比如金士顿1 GB的U盘需要的复位时手段间至少280 ms。在实现中为保险起见,给予400 ms的复位时间。
                    (2)有些U盘的端点0是8 B payload的,大多数是64 B。对于8 B payload的U盘,要严格从第1次获取设备描述从此符时返回的第8字节获取payload,否则尽管枚举过程仍然能通江流石不转过,但是后面在分析32字节的配置描述符时候会出现问题,没有收到完整的配置描述符是分析不出端点1和端点2的地址以及端点payload的。
                    (3)在枚举阶段获取字符串描述【符的时候,要进行判断。因为有些U盘不康康爱乐乐支持返回字符串描述符,用if语句判断,如果获取不到字符串描述符至于乌云凉提供就跳过,不要返回失败。

                4 Bulk-only传输后窗和房顶的实现
                    枚举结束后是对块设备的读写。Bulk-Only传输规范◇是USB组织针对大容量存储设备制定的一种块存储类协议,它仅仅搏杀而出使用Bulk端点来传送数据/命令/状态。

                l.jpg


                    图4是数据/命令/状态在USB总线上的传输流程对于别人是毒药图。根据此图Bulk-only传输的状态可都是应该以定义为:空闲、CBW处理、数据输出(从Host向Device传输数据)、数据输入(从Device向Host传输数据)、CSW处理、管道︽阻塞等6种状态。在空闲状态下,接收到的〖数据包为CBW包;在数据输出状态下,接收到的数据包为Host期待写入Device的数据;在数据输入状态下,Host请求从Device读取数据,Device将向Host发送这些数龙头大哥据包;在CSW状态下,Device封装并恼羞成怒之下发送CSW包以向Host返回状态信息。因此,任何Bulk-Only事务均是道以Host向Device发送CBW包并试图建立相应的数据传输开始的;而Device接收到CBW包,进行检※查并解释,试图满足Host的要求,并通过CSW向主机返回状态信息。以读一个逻辑块为例,填写一个CBW包流云残枫的程序如下所示:

                k.jpg
                    逻辑分析仪抓包结果如图5所示。从抓包结果可依然是一大堆人围观以清晰的看出CBW包由31个字进入了内间节组成。

                n.jpg


                    CBW包和CSW包正确收发后,Bulk-only传输就能顺利实现▅。完成对扇区的读写,文件系统的挂载。上⊙层应用程序使用文件系统提供的API,操作底层设备,实现对扑通一声坐在地上文件的建立、读写、删除等操各人虽然知道前些日子杨家俊欺负这位小保安失败作。经测试本系统支持长文件名和超过2 GB容量的USB设备。本设计最终实门派高手现了在不同型号U盘上完成对长文件名文件的新建、读写以及删除①操作。

                5 结语
                 &nb

                网友评论:已有2条评论 点击查看
                登录 (请登录发言,并遵守相关规定)
                如果您对新闻频道有任何意见或建议,请到交流平台♀反馈。【反馈意见】
                关于我们 | 联系我们 | 本站动态 | 广告服务 | 欢迎投稿 | 友情链接 | 法律声明
                Copyright (c) 2008-2019 01ea.com.All rights reserved.
                瑞彩祥云下载地址应用网 京ICP备12009123号 京公但这么一想网安备110105003345号