g_ncm Linux USB network gadget driver framework – philips_ki

由于项目关系,最近在拜读Linux USB gadget network driver,下面是整个USB network gadget驱动的架构图。

USB network Gadget 主要是通过两个end point来收发网络包。其中这个out and In 是以host的角度来看的。所以我们在device这一侧会发现,Out end point 是负责收数据,In endpoint 是负责发数据的。而endpoint0是Gadget default,主要用来收发usb control request。

要理解上面的架构图,必须先了解USB Specification一些关键的概念,详细可以参考USB 2.0 specification chapter 8 9 10:

USB Topology:

USB Device Hierarchy

USB Composite Gadget description structureUSB device stateBus EnumerationWhen a USB device is attached to or removed from the USB, the host uses a process known as busenumeration to identify and manage the device state changes necessary. When a USB device is attached to a powered port, the following actions are taken:1.The hub to which the USB device is now attached informs the host of the event via a reply on its status change pipe (refer to div 11.12.3 for more information). At this point, the USB device is in the Powered state and the port to which it is attached is disabled.2.The host determines the exact nature of the change by querying the hub.3.Now that the host knows the port to which the new device has been attached, the host then waits for at least 100 ms to allow completion of an insertion process and for power at the device to become stable. The host then issues a port enable and reset command to that port. Refer to div 7.1.7.5 for sequence of events and timings of connection through device reset.4.The hub performs the required reset processing for that port (see div 11.5.1.5). When the reset signal is released, the port has been enabled. The USB device is now in the Default state and can draw no more than 100 mA from VBUS. All of its registers and state have been reset and it answers to the default address.5.The host assigns a unique address to the USB device, moving the device to the Address state.6.Before the USB device receives a unique address, its Default Control Pipe is still accessible via the default address. The host reads the device descriptor to determine what actual maximum data payload size this USB devices default pipe can use.7.The host reads the configuration information from the device by reading each configuration zero to n-1, where n is the number of configurations. This process may take several milliseconds to complete8.Based on the configuration information and how the USB device will be used, the host assigns a configuration value to the device. The device is now in the Configured state and all of the endpoints in this configuration have taken on their described characteristics. The USB device may now draw the amount of VBUS power described in its descriptor for the selected configuration. From the devices point of view, it is now ready for use.9.When the USB device is removed, the hub again sends a notification to the host. Detaching a device disables the port to which it had been attached. Upon receiving the detach notification, the host will update its local topological information.愈想得到,就愈要放手。放手是很难的,但是别无选择。

g_ncm Linux USB network gadget driver framework – philips_ki

相关文章:

你感兴趣的文章:

标签云: