1. 前言
2. 源码架构
3. 枚举过程
1. 前言
Gadget,小饰品。USB Gadget,就是指所开发的电子设备以USB从设备的模式通过USB连接到主机。比如手机用USB线插入PC后,手机就是USB Gadget。本文以Mavell为例,以Gadget插入主机的全过程为主线,分析USB Gadget的架构。
2. 源码架构
USB的源码位于/drivers/usb文件夹内,其中包括核心层core,主控制器host,U盘storage,以及USB Gadget等。
gadget文件夹里存放了各芯片厂商支援的USB Gadget控制器驱动,比如支持Mavell的PXA9XX系列的USB Gadget驱动为mv_gadget.c,其架构如下图所示,
2.1 Gadget控制器驱动
设备要有gadget功能,硬件上要集成gadget控制器,软件上要具备gadget控制器驱动。
首先是该驱动的数据结构 struct mv_usb_dev,