taniguchi
2014年8月5日 15時27分
taniguchiです。
Armadillo-440に、ロジテックのUSBハブ搭載LANアダプタ LAN-TX/U2H3Bを使用したいのですが、
ドライバの組込み方法を教えていただけないでしょうか。
環境はatmark-dist-20110704で、
ASIX社のドライバは、v4.13.0です。
宜しくお願いいたします。
コメント
at_daisuke.sasaki
佐々木大輔です。
中村さんが回答してくださったように、ドライバをクロスビルドする事で組み込みは可能です。
ASIX社のチップを搭載したUSB LANアダプタについては、カーネル2.6.26-atに古いドライバが組み込まれています。
そのため、ドライバを差し替える形でも組み込めます。
1. {linux-2.6.26-at*}/drivers/net/usb 以下に
ASIX社からダウンロードしたドライバをコピー
2. 以下のカーネルコンフィギュレーションを有効化
-> Device Drivers -> Network device support (NETDEVICES [=y]) -> USB Network Adapters -> <*> Multi-purpose USB Networking Framework (USB_USBNET [=y]) <*> ASIX AX88xxx Based USB 2.0 Ethernet Adapters
3. ビルド
尚、asix.c内に記述されている「static const struct usb_device_id products[]」に
使用するデバイスが定義されている必要があります。
※使用されるLAN-TX/U2H3Bについては、最新のドライバに組み込まれていました。
接続されたUSB LANアダプタのVendor IDとProduct IDは、ATDEでlsusbを行う事で確認できます。
[Vendor ID/Product IDの確認方法]
[ATDE5 ~] lsusb (省略) Bus 002 Device 008: ID 0b95:772a ASIX Electronics Corp.
[asix.c内のLAN-TX/U2H3Bの定義部分]
}, { /* ASIX AX88772A 10/100 */ USB_DEVICE(0x0b95, 0x772A), .driver_info = (unsigned long) &ax88772a_info, }, {
y.nakamura
佐々木さん、
中村です。
> 1. {linux-2.6.26-at*}/drivers/net/usb 以下に
> ASIX社からダウンロードしたドライバをコピー
>
> 2. 以下のカーネルコンフィギュレーションを有効化
私も先にこの方法をやってビルドできることは確認したのですが、
次の理由から、この方法を案内するのはやめました。
入れ替えるasix.cや他のソースを眺めてみたところ、
> -> <*> Multi-purpose USB Networking Framework (USB_USBNET [=y])
> <*> ASIX AX88xxx Based USB 2.0 Ethernet Adapters
ここでASIX...の上にあるMulti-purpose...のUSB_USBNETが気になりました。
このディレクトリのKconfigでは、ASIXのドライバはUSB_USBNETに依存していて、
元から入っているasix.cはusbnet.cを使っています。
ところが、チップメーカからダウンロードできるソースはusbnet.cを使わずに、
自前のaxusbnet.cを使っています。
とりあえず動かすならこれでもいいですけど、ちゃんと修正しようとすると、
asix.cを入れ替えてしまう(asix.h,axusbnet.c,axusbnet.hも追加する)のならば、
KconfigでのUSB_USBNETの依存関係なども修正したくなります。
こういう説明をしたくなかったので、out-of-treeの方法にしました。
ですが、out-of-treeだと組み込みにできない(モジュールになってしまう)ので、
組み込みにしたいならば、linux/driver/...の下に入れないとならないですね。
その場合は、既存のasixのソースを入れ替えるのではなくて、
「Atmark-dist開発者ガイド」の
11.2. driversディレクトリへのマージ
http://manual.atmark-techno.com/dist/atmark-dist_developers_guide_ja-1…
で説明されている方法でやるのがいいのではないかと思います。
細かい話ですが・・・
--
なかむら
at_daisuke.sasaki
taniguchi
y.nakamura
2014年8月9日 7時49分
中村です。
ただ「教えてくれ」ではなくて、自分でどこまで調べたのか?
何をやってみたのか?、何がうまくいかないのか?
などを書けば、もう少し反応がよくなると思いますよ。
何もない状態で「教えて」では、どこから説明をしたらいいのか
わかりませんから。
ドライバをビルドする方法はいろいろとありますが、
「Atmark-dist開発者ガイド」のドライバのビルドのところは
読みましたか?
簡単なのは、「Atmark-dist開発者ガイド」の
11.1. Out of Tree コンパイル
http://manual.atmark-techno.com/dist/atmark-dist_developers_guide_ja-1…
を真似することです。
> ASIX社のドライバは、v4.13.0です。
この中に入っているMakefileは使いません。捨ててください。
あるいは".orig"などをつけてrenameしてください。
でもって、
11.1.2. ソースコードの用意
http://manual.atmark-techno.com/dist/atmark-dist_developers_guide_ja-1…
に出てくるMakefileをasxiに合わせて修正したものを
そのドライバソースのディレクトリに入れます。
修正箇所は
MODULES = message.o
をasxi.oに変更し、
INSTALL_MOD_DIR=kernel/drivers/char
はkernel/drivers/net/usbにでもすればいいと思います。
次の2行がエラーになるかもしれません。
$(ROOTDIR)/user/busybox/examples/depmod.pl -b \
$(ROMFSDIR)/lib/modules/$(KERNELRELEASE) &> /dev/null
そのときは、この2行は消してしまって大丈夫です。
それから、makeで
make: arm-linux-gcc: コマンドが見つかりませんでした
というメッセージが何度もでてくるかもしれません。
これは無視してください。
linux-2.6.26-atXX/Makefileの538行目あたりにある
# arch Makefile may override CC so keep this after arch Makefile is included
NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
CHECKFLAGS += $(NOSTDINC_FLAGS)
が表示しているようですが、悪影響はなさそうです。
LAN-TX/U2H3Bを持っていないので動作の確認はできませんが、
上の説明のようにやって、ビルドはできました。
--
なかむら