USB multi gadget 支持问题

来源:互联网 发布:ax软件 编辑:程序博客网 时间:2024/05/16 05:17



昨天,试了USB的gadget各项功能。当尝试USB multi gadget的时候,在加载驱动的时候出现了下面错误。

-----------------------------------------------------------------------
# insmod g_multi.ko file=test.img
g_multi gadget: using random self ethernet address
g_multi gadget: using random host ethernet address
g_multi gadget: usb0: Features changed: 0x00004800 -> 0x00004000
usb0: MAC ce:f8:43:78:50:90
usb0: HOST MAC da:c9:59:cf:0a:74
g_multi gadget: Mass Storage Function, version: 2009/09/11
g_multi gadget: Number of LUNs=1
lun0: LUN: removable file: /home/root/test.img
g_multi gadget: unable to autoconfigure all endpoints
insmod: error inserting 'g_multi.ko': -1 Unknown error 524
-----------------------------------------------------------------------

首先介绍一下USB的multi gadget所包含的功能(以下二选一):
1. RNDIS + CDC Serial + Storage configuration 
2. CDC Ethernet + CDC Serial + Storage configuration

注:如果同时选上,则使用1配置。

这样,USB就会有三个功能。然后阅读代码,看问题究竟出现在那里。经过几个小时的努力,竟然发现问题如下:

USB硬件端点数不够,所使用的USB硬件只支持7个端点(1 + 6)。

为什么端点数不够呢?原因如下:

(注:所说端点是不包括control端点)

RNDIS需要3个端点:Bulk IN, Bulk OUT, INT(interrupt Endpoint for Notify).

CDC serial需要2个端点:Bulk IN, Bulk OUT

Mass Storage需要两个端点:Bulk IN and Bulk OUT

至此,问题得以解决。