USB数据流通信模型总结

数据流通信模型

分层结构

   左边是主机,由底层到高层依次是USB主机控制器(负责帧管理,数据传输管理,容错处理,总线电源管理,USB设备状态机管理),USB系统软件(包含HCD(主机控制器驱动程序)USBD),主机的客户端驱动程序。

   右边是设备,由底层到高层依次是USB设备总线接口层,USB设备逻辑层(负责管理端点,端点是设备上数据的发送点和接收点,一般是寄存器或存储区),功能接口层(接口是端点的组合,一个接口对应一个具体的功能,)。

   附:下图更详细说明了主机端的客户驱动程序,USBD,HCD各自的职责和关系。

主机软件的层次关系

    客户端驱动程序可以通过USBD的命令接口获得相应设备的标准设备描述符,配置描述符,字串描述符以及厂商自定义的描述符等。通过管道接口实现和主机控制器的数据传输。

   客户端驱动程序可以通过USBD提供的命令接口和各种服务完成总线枚举(检测和确认USB设备)过程。

 

数据的传送关系

1.从逻辑角度看

从高层到底层,依次是:

  主机的客户端驱动程序和设备的功能接口层传送传输(transfer数据,通过相关功能管道(USBD会提供相应的管道接口和服务)。

  主机的系统软件和USB设备逻辑层传送事务处理(transcation数据.USBD会提供控制管道接口和服务)。

  主机控制器和设备总线接口传送包(packet数据。(总线接口中有SIE除了收发数据,还负责识别设备地址,PID识别,CRC判断,硬件握手等工作)。

2.从实际角度看

从主机的高层发数据到设备的高层:

   如果主机的客户端驱动程序需要给设备的功能接口层发送传输(transfer数据,那么需要先发送给主机的系统软件(USBD会提供管道接口和命令接口,让客户端驱动程序的数据通过管道传递给主机控制器),系统软件(USBD)将传输(transfer)数据拆解成事务处理(transaction,然后发给主机控制器,而HCD会提供一定的数据结构,让事务处理(transaction拆解成包(packet,并将主机控制器驱动好(将主机控制器相关功能寄存器配置好),主机控制器就会生成帧,在总线上发起数据通信,并支持USB设备的状态转换。

   然后设备的总线接口收到包(packet后,会上传给设备逻辑层,在此被打包成事务处理(transaction,然后上传到设备的功能接口层,在此被打包成传输(transfer)数据,至此完成从主机高层到设备高层的数据发送过程。

从设备的高层发数据到主机的高层:

   同理,设备的高层将数据拆解然后逐次向下传到设备的底层,发到总线上,主机底层收到后,将数据打包然后逐次向上传到主机的高层。

附:USB设备的数据传输流程


 当数据包被接收到数据包缓冲区中时,SIE对数据包处理后,把和不同功能模块(接口)相关的数据送到功能模块数据缓冲区中,并告知功能模块(接口)有数据在BUF里了,然后功能模块(接口)取出数据,执行相应操作。

 



没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试