[Armadillo:07730] Re: armadillo-420 usb cdc_acmのドライバが落ちる

Yasushi SHOJI email@hidden
2011年 11月 25日 (金) 12:24:29 JST


At Thu, 24 Nov 2011 09:16:20 +0900,
辻 泰裕 wrote:
> 
> armadillo-420で/dev/ttyACM0 を介して通信を行っている途中
> でUSBを抜き取ると以下のようなメッセージが表示され、
> その後、どのUSBも認識しなくなります。
> 
> -----------------------------------------------------------------------------
> usb 2-1: USB disconnect, address 2
> cdc_acm: acm_ctrl_irq - usb_submit_urb failed with result -19
> fsl-ehci fsl-ehci.1: HC died; cleaning up
> irq 37: nobody cared (try booting with the "irqpoll" option)

いまいち自分が分かっていないので、整理さてください。

acm_ctrl_irq()って、acm_probe() の中で interrupt urb の処理をするコード
の初期化に使われているはず。

skip_countries:
        usb_fill_int_urb(acm->ctrlurb, usb_dev, usb_rcvintpipe(usb_dev, epctrl->bEndpointAddress),
                         acm->ctrl_buffer, ctrlsize, acm_ctrl_irq, acm, epctrl->bInterval);

interrupt の urb は、指定された interval で polling するので、そこで
acm_ctrl_irq が呼ばれ、usb_submit_urb()するが、すでにデバイスが抜けてい
るので、-19つまり -NODEVでusb_submit_urb()が戻ってくる。

そうすると、なぜかホストコントローラー(HC)が死んだという認識になり、
37番の割り込みが処理されなくなるんでしょうか?

[...]
> ccd_acmドライバがエラーを認識し、落ちていると思われますがなにか解決方法は
> ないでしょうか?
> 通信(ポートのオープン?)を行っていない場合は、抜き差ししても大丈夫です。

probe() は、open(2)の後に呼ばれるんでしょうね。データー通信しなくても
openしていると、ダメだったりしませんか?
-- 
              yashi




armadillo メーリングリストの案内