首页 > 其他 > 详细

UEFI中USB协议栈的实现简介

时间:2017-10-31 23:05:24      阅读:332      评论:0      收藏:0      [点我收藏+]

本文旨在简单介绍一下 UEFI中USB协议栈的代码框架:

主要包括:

USB主控制器驱动(EFI_USB2_HC_PROTOCOL

USB总线驱动(EFI_USB_IO_PROTOCOL

USB Mass Storage驱动(EFI_BLOCK_IO_PROTOCOL

下图是USB协议栈的代码框架:

技术分享

上图出自:《UEFI与EDKII源代码分析》

下图是USB Host Controller(EHCI)驱动初始化的流程(代码位于:\MdeModulePkg\Bus\Pci\EhciDxe\):

 技术分享

 

下图是USB BUS驱动初始化的流程(代码位于:MdeModulePkg\Bus\Usb\UsbBusDxe\): 

 技术分享

 

下图是USB Device(Mass Storage)驱动初始化的流程(代码位于:MdeModulePkg\Bus\Usb\UsbMassStorageDxe\): 

 技术分享

 

下面我们来看一个例子:

比如我们需要重启USB设备:

技术分享

 

总结:

1.UEFI中底层驱动程序是通过Protocol来向上层驱动提供接口的(Linux中的方式是内核符号表);

2.只有最底层的驱动会去操作硬件(寄存器),EHCI HC寄存器的定义:《ehci-specification-for-usb.pdf》;

3.EhcLinkQhToAsync()把我们要发送的URB放到ASYNCLISTADDR寄存器指定的地方,然后硬件会自动把这个地方的数据发送出去;

 

UEFI中USB协议栈的实现简介

原文:http://www.cnblogs.com/nju347/p/7764244.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!