EDK II 源码剖析---USB协议之EHCI(例子)二

上一节主要讲了USB主控制器驱动的一般流程,接下来主要讲一下USB 总线驱动和USB 设备驱动

USB总线驱动

同样的,从下面的函数开始说起:

EFI_STATUS
EFIAPI
UsbBusControllerDriverStart (
  IN EFI_DRIVER_BINDING_PROTOCOL  *This,
  IN EFI_HANDLE                   Controller,
  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath
  )
{......

尝试打开USB BUS Protocol 判断UsbBus 驱动程序是否已经在当前主控制器句柄上启动。

如果第一次启动,则需要调用UsbBusBuildProtocol()进行初始化。

 //
    // If first start, build the bus execute environment and install bus protocol
    //
    REPORT_STATUS_CODE (EFI_PROGRESS_CODE, (EFI_IO_BUS_USB | EFI_P_PC_ENABLE));
    Status = UsbBusBuildProtocol (This, Controller, RemainingDevicePath);

整体流程如下图:

USB Device(Mass Storage)驱动初始化的流程

 重启USB(MASS DEVICE)设备

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值