WinCE6.0+S3C6410 USB驱动架构分析

简介:
学习 WinCE 下的 USB 驱动几天了,有了一个整体的了解,这里对网上的资料和个人的理解做一个总结。软件平台是 WinCE6.0 ,硬件平台是 S3C6410
        1 WinCE 设备的三种角色
    USB 是主从结构,分为主端和从端。一般主端称为 Host ,从端称为 Client ,但是在 WinCE 系统中有些不同,主端称为 Host ,从端称为 Function
     对于 USB 而言,搭载 WinCE 系统的嵌入式设备可以扮演三种不同的角色,即三种不同的功能: Host Function 以及 OTG
    WinCE 设备经常会外接各种 USB 设备,如 RNDIS Print Mass Storage HID 设备等,此时作为主端使用,实现的是 Host 功能。
     WinCE 设备连接 PC 机时,便是作为从端使用,实现的是 Function 的功能。但此时 WinCE 设备可以表现为多种形式,有 Mass Storage RNDIS 或者串口设备。比如 WinCE 设备连接 PC 进行同步时表现为串口设备。
     WinCE 设备实现 OTG 功能时,既可以作为主端使用,也可以做为从端使用。
        2 WinCE6.0 中的 USB 驱动框架
       USB 的驱动架构如下图所示,包含了它的三种角色。
3 WinCE6.0 中的 USB 目录结构
       WinCE6.0 中对 USB 已经有了很好的支持,下面看看微软已经做了哪些工作。
     从上面的目录结构可以看出,微软提供的 USB 驱动是根据三种不同角色来划分的。 USB 对应着 USB Host 的功能, USBFN 对应着 USB Function 功能, USBOTG 对应着 USB OTG 功能。
      1 WINCE600\PUBLIC\COMMON\OAK\DRIVERS\USB 的下层目录如下:
    结合架构图理解, CLASS 文件夹对应 USB Host Client Driver 部分,是上层的应用协议,各个文件夹对应有 HID 设备、打印机、大容量存储器、 USB 串口等应用。 CLIENTCMN COMMON 两个文件夹是各种应用的公用代码。
    HCD 文件夹实现的是控制器驱动程序模块,为 USBD 模块提供底层支持。 HCD 模块主要提供对各个协议的支持,包括 OHCI(open host controller inferface) UHCI   (universal host controller interface) 以及 EHCI   (enhanced host controller interface) 。具体的关于这几个协议的介绍请查看后面的链接资料。
    USBD 文件夹是通用串行总线驱动程序模块,利用 HCD 模块的支持,实现各种接口函数提供给上层,使得上层能够与外围设备进行通信。
    COMMON INC 文件夹实现的是锁功能,包含 lock.h lock.cpp
      2 WINCE600\PUBLIC\COMMON\OAK\DRIVERS\USBFN 的下层目录如下:
     结合架构图, CLASS 文件夹对应 USB Function Client Driver 部分,下面的各个文件夹对应着 WinCE 设备的表现形态,常用的有三大类: RNDIS SERIAL STORAGE 。这些和 USB Host 驱动中的不同,那些指的是外围设备,这里指的是 WinCE 设备本身。文件夹 COMPOSITEFN UFNPRN 是共用的代码。
    CONSTROLLER 文件夹实现了底层控制器的驱动。当 WinCE 设备跟 PC USB 线连接时,表现为多种形式:大容量存储器( Mass Storage )、一个网卡( RNDIS )或者一个串口设备( Serial Class) 等,所以需要一个控制系统,把这部分分离了出来做成一层驱动,叫做 Controller (控制器),由该层驱动来控制 WinCE 设备到底表现成一种什么形式,包括卸载旧的 Client ,加载新的 Client MDD 文件夹实现的是该部分驱动的 MDD 部分, PDD 部分的硬件是 NET2280 控制器,在文件夹 NET2280 中实现。
    UFNCLIENTLIB 是该驱动的基础公共代码。
      3 WINCE600\PUBLIC\COMMON\OAK\DRIVERS\USBOTG 的下层目录如下:
    USB OTG 结构比较简单,驱动实现按照标准的流接口形式,分为 MDD PDD 两部分, MDD 部分对应上面的文件夹, PDD 部分的硬件采用的是 ISP1301 收发器,在 TRANS 文件夹中实现。
     4 WinCE6.0 系统的 USB 功能定制
    WinCE6.0 USB 相关的定制包含两部分:内核服务层和设备驱动层。
        内核服务层的定制在 Catalog Items View 中的” Core OS -> CEBASE -> Core OS Services -> USB Host Support ”,如图:
        设备驱动层的定制在 Catalog Items View 中的” Device Drivers -> USB Function -> USB Function Clients ”,如图:


本文转自jazka 51CTO博客,原文链接:http://blog.51cto.com/jazka/737486,如需转载请自行联系原作者
相关文章
|
1月前
|
消息中间件 Cloud Native Java
【Spring云原生系列】SpringBoot+Spring Cloud Stream:消息驱动架构(MDA)解析,实现异步处理与解耦合
【Spring云原生系列】SpringBoot+Spring Cloud Stream:消息驱动架构(MDA)解析,实现异步处理与解耦合
|
3月前
|
缓存 网络协议 数据库连接
C/S架构中HTTP错误状态码原因分析及解决办法
HTTP(Hypertext Transfer Protocol)是用于在客户端和服务器之间传输数据的协议。当在浏览器或其他HTTP客户端中访问网页时,可能会发生各种访问报错。我们需要根据网页提供的错误状态码分析错误原因,以找到相对应的解决办法。
41 0
|
3月前
|
存储 边缘计算 人工智能
云计算与分布式系统架构:驱动数字化时代的创新引擎
本文将探讨云计算与分布式系统架构在数字化时代中的重要性,介绍其基本概念和原理,并探讨其在推动技术创新、提升企业效率和满足用户需求方面的作用。同时,还将提出未来发展的趋势和挑战,为读者提供对云计算与分布式系统架构的深入理解。
|
21天前
|
设计模式 安全 Java
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
23 0
|
21天前
|
存储 Java 应用服务中间件
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
42 0
|
1月前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
778 0
|
1月前
|
监控 JavaScript 安全
监控内网电脑软件设计与实现:基于Node.js的服务器端架构分析
在当今信息技术高度发达的时代,监控内网电脑的需求日益增长。企业需要确保网络安全,个人用户也需要监控家庭网络以保护隐私和安全。本文将介绍一种基于Node.js的服务器端架构,用于设计和实现监控内网电脑软件。
90 0
|
1月前
|
Web App开发 JavaScript 前端开发
分析网站架构:浏览器插件
分析网站架构:浏览器插件
39 1
|
3月前
|
弹性计算 缓存 并行计算
带你读《弹性计算技术指导及场景应用》——3. Ada Lovelace架构解读及RTX 4090性能测试分析(1)
带你读《弹性计算技术指导及场景应用》——3. Ada Lovelace架构解读及RTX 4090性能测试分析(1)
|
3月前
|
弹性计算 人工智能 并行计算
带你读《弹性计算技术指导及场景应用》——3. Ada Lovelace架构解读及RTX 4090性能测试分析(2)
带你读《弹性计算技术指导及场景应用》——3. Ada Lovelace架构解读及RTX 4090性能测试分析(2)