昨天,试了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
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
-----------------------------------------------------------------------
# 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