at_kazutaka.bito
2015年2月1日 21時24分
カーネル起動時にUSBのプローブが有効になっていると、 認識された順番にデバイスファイルの末尾の番号がつく。
例えば、Armadillo-IoT開発セットの場合、3Gモジュールには、ttyUSB[0-4]が割り当てられるが、 USBコネクタにUSB-シリアル変換ケーブルを挿入した状態で起動すると、 USB-シリアル変換ケーブル:ttyUSB0 3Gモジュール:ttyUSB[1-4] のように3Gモジュールのデバイスファイルの番号がずれる。 補足)本例では、カーネルコンフィギュレーションのUSBサポートの機能で、シリアル変換のサポートを有効にしているものとする。
このような番号ずれを防ぐ方法としては、delayed_probeという方法がある。
本例について、USBコネクタにさしたデバイスを、3Gモジュールより後で認識させる場合は、 make menuconfigでカーネルコンフィギュレーションを
Linux Kernel Configuration Device Drivers ---> [*] USB support ---> [*] Delay probe of OTG port <- '*'にする
のように設定してビルドしたカーネルを使用する。
上記のカーネルを使用すると、Armadillo起動時には、USBコネクタ側は認識されず、 3Gモジュールには、ttyUSB[0-4]が割り当てられるため、デバイスファイルの番号ずれを防ぐことができる。
USBコネクタ側のデバイスを認識するには、下記のようにdelayed_probeに'1'を設定する。
[armadillo ~]# echo 1 > /sys/devices/platform/fsl-ehci.1/delayed_probe