2016-12-30 23 views
0

私はAllwinner H3ベースのLinuxボードであるnanopi-neoを持っています。 USB OTGモードをサポートしているので、GadgetFSを使ってスレーブに変換しようと思っていました。私は、このオプションGadgetFS on Allwinner H3ベースのLinuxボード

<*> USB Gadget Drivers 
<*>  Gadget Filesystem 

そしてrootfsのためにそれらが提供するLinuxカーネルを再構築することになっています私が理解から

は、この

Package Selection for the target ---> 
Hardware handling ---> 
    [*] gadgetfs-test 

を使用する私は、構築し、ブートを進めボード。

私はこのguideに続き、私はこのエラーに何かを見つけることができません

root:/dev> mkdir /dev/gadget 
root:/dev> mount -t gadgetfs gadgetfs /dev/gadget 
[ 219.808688] WRN:L2558(drivers/usb/sunxi_usb/udc/sunxi_udc.c):ERR: Error in bind() : -120 
[ 219.827939] nop sunxi_usb_udc: failed to start (null): -120 
root:/dev> ls /dev/gadget/ -l 
total 0 
-rw------- 1 root  root    0 Jan 1 00:03 sunxi_usb_udc 

これらのコマンドを使用していました。人が直面するほとんどの問題はinsmodに関するものですが、私はカーネルの中にモジュールを組み込んでいます。だから、私はこの問題は確かにありません。

は、私はその後、otg_roleするいくつかの値をエコーするために私を求めsunxiすなわちallwinner SDKのこのpostを見つけた私がやったと私はこの

echo 1 > /sys/bus/platform/devices/sunxi_usb_udc/otg_role 
[ 192.310934] sunxi-ehci sunxi-ehci.1: remove, state 4 
[ 192.326666] usb usb1: USB disconnect, device number 1 
[ 192.343775] sunxi-ehci sunxi-ehci.1: USB bus 1 deregistered 
[ 192.370300] sunxi-ohci sunxi-ohci.1: remove, state 4 
[ 192.385941] usb usb5: USB disconnect, device number 1 
[ 192.402761] sunxi-ohci sunxi-ohci.1: USB bus 5 deregistered 
[ 192.444442] sunxi-ehci sunxi-ehci.1: SW USB2.0 'Enhanced' Host Controller (EHCI) Driver 
[ 192.458113] sunxi-ehci sunxi-ehci.1: new USB bus registered, assigned bus number 1 
[ 192.471720] sunxi-ehci sunxi-ehci.1: irq 104, io mem 0xf1c1a000 
[ 192.500050] sunxi-ehci sunxi-ehci.1: USB 0.0 started, EHCI 1.00 
[ 192.511581] hub 1-0:1.0: USB hub found 
[ 192.519996] hub 1-0:1.0: 1 port detected 
[ 192.548993] sunxi-ohci sunxi-ohci.1: SW USB2.0 'Open' Host Controller (OHCI) Driver 
[ 192.561898] sunxi-ohci sunxi-ohci.1: new USB bus registered, assigned bus number 5 
[ 192.574365] sunxi-ohci sunxi-ohci.1: irq 105, io mem 0xf1c1a400 
[ 192.644522] hub 5-0:1.0: USB hub found 
[ 192.652612] hub 5-0:1.0: 1 port detected 

[email protected]:/$ # echo 2 > /sys/bus/platform/devices/sunxi_usb_udc/otg_role 
[ 195.940888] sunxi-ehci sunxi-ehci.1: remove, state 4 
[ 195.956330] usb usb1: USB disconnect, device number 1 
[ 195.976521] sunxi-ehci sunxi-ehci.1: USB bus 1 deregistered 
[ 195.997477] sunxi-ohci sunxi-ohci.1: remove, state 4 
[ 196.007624] usb usb5: USB disconnect, device number 1 
[ 196.018520] sunxi-ohci sunxi-ohci.1: USB bus 5 deregistered 

を持って、私は再びマウントしようが、私は同じエラーを取得します。

誰かが私にこれを案内できますか?

答えて

0

いつかずっと後...

短い答えは、あなたが実際にUSBエンドポイントをインスタンス化し、設定や制御の要求を処理するユーザーモードコンポーネントが欠落しているです。

このような獣の例は、以下の3つの部分に記載されています。

ロングバージョン:

デバイスとしてH3ボードを使用するには、あなたがmodprobe gadgetfsに必要な、ディレクトリmkdir -p /dev/gadgetを作成し、mount -t gadgetfs gadgetfs /dev/gadgetでそのディレクトリにデバイスをマウントします。

最後にecho 2 > /sys/bus/platform/devices/sunxi_usb_udc/otg_roleでデバイスの役割を有効にします。

autoconfig()の機能にusb.cの次のコードを追加する必要があります。そのコードウェイはAllWinnerの存在よりも前です。

usermodeアプリケーション(usb)が構築されたら、冗長モードの場合はsudo usb -vと実行するだけです。正しく接続して電源を入れると、2つのバルクエンドポイントと1つの割り込みEPを持つホスト上にデバイスが現れるはずです。

メインラインを使用する場合は、以下のコード(/ dev/gadgetにあります)でコントローラの名前を変更し、DTSファイルに正しいスペルを追加する必要があります。私はまだNanoPi M1とNanoPi Neo Airボードで4.11をデバイスモードで動作させるために幸運を祈っています。

これは非常に遅れていると思っています。

if (stat(DEVNAME = "sunxi_usb_udc", &statb) == 0) 
{ 
    HIGHSPEED = 1; 
    fs_source_desc.bEndpointAddress = hs_source_desc.bEndpointAddress = USB_DIR_IN | 1; 
    EP_IN_NAME = "ep1in-bulk"; 
    fs_sink_desc.bEndpointAddress = hs_sink_desc.bEndpointAddress = USB_DIR_OUT | 1; 
    EP_OUT_NAME = "ep1out-bulk"; 
    source_sink_intf.bNumEndpoints = 3; 
    fs_status_desc.bEndpointAddress = hs_status_desc.bEndpointAddress = USB_DIR_IN | 2; 
    EP_STATUS_NAME = "ep2in-interrupt"; 
} 

Main usermode driver

USB descriptor strings

Header file for the above