This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

usb gadget "g_acm_ms"加载失败,搞了两天搞不定。

启动启动后

使用insmod  g_acm_ms.ko file=/dev/mmcblk0p1这个命令尝试加载,出现下面的调试信息。

[ 213.987792] usb_composite_probe
[ 213.991149] usb_gadget_probe_driver
[ 213.994781] usb_gadget_probe_driver
[ 213.998443] udc musb-hdrc.0: registering UDC driver [g_acm_ms]
[ 214.006164] gserial_setup: registered 1 ttyGS* device
[ 214.011627] lun0: open backing file: /dev/mmcblk0p1
[ 214.016937] gadget: Mass Storage Function, version: 2009/09/11
[ 214.023132] gadget: Number of LUNs=1
[ 214.026977] lun0: LUN: removable file: /dev/mmcblk0p1
[ 214.032348] gadget: I/O thread pid: 1466
[ 214.036529] gadget: adding config #1 'Composite Gadget (ACM + MS)'/bf19f10c
[ 214.043914] gadget: adding 'acm'/c4a56440 to config 'Composite Gadget (ACM + MS)'/bf19f10c
[ 214.052673] gadget: acm ttyGS0: dual speed IN/ep1in OUT/ep1out NOTIFY/ep2in
[ 214.060028] gadget: adding 'Mass Storage Function'/c48fd140 to config 'Composite Gadget (ACM + MS)'/bf19f10c
[ 214.070404] gadget: cfg 1/bf19f10c speeds: high full
[ 214.075714] gadget: interface 0 = acm/c4a56440
[ 214.080627] gadget: interface 1 = acm/c4a56440
[ 214.085540] gadget: interface 2 = Mass Storage Function/c48fd140
[ 214.092102] gadget: Composite Gadget (ACM + MS), version: 2011/10/10
[ 214.098846] gadget: g_acm_ms ready
[ 214.102478] g_acm_ms musb-hdrc.0: bind result [0]
[ 214.107391] g_acm_ms musb-hdrc.0: new start result [-22]
[ 214.112945] gadget: unbind function 'acm'/c4a56440
[ 214.118041] gadget: unbind function 'Mass Storage Function'/c48fd140
[ 214.124786] gadget: unbind
[ 214.128295] lun0: close backing file
[ 214.141937] gserial_cleanup: cleaned up ttyGS* support
[ 214.147338] g_acm_ms musb-hdrc.0: failed to start *** g_acm_ms: -22

红色部分是我插入的调试信息,源码在udccore.c里

if (udc_is_newstyle(udc)) {
ret = bind(udc->gadget);
dev_dbg(&udc->dev, "bind result [%d]\n",ret);
if (ret){
goto err1;
}
ret = usb_gadget_udc_start(udc->gadget, driver);
dev_dbg(&udc->dev, "new start result [%d]\n",ret);
if (ret) {
driver->unbind(udc->gadget);
goto err1;
}
usb_gadget_connect(udc->gadget);
} else {
ret = usb_gadget_start(udc->gadget, driver, bind);
dev_dbg(&udc->dev, "start result [%d]\n",ret);
if (ret){
goto err1;
}

}

说明模块加载接近成功,可是就是不知道死在哪里。再往下我已经找不到对应源码了。

但是,如果单独使用g_serial g_mass_storage这样的模块加载,却有是可以的。甚至g_mutil都可以,就是不能使用g_acm_ms这个模块。

google,百度搜遍了,几乎没有人遇到这种问题。