主要内容:

当你调试的使用如果有网络, 是不是很方便呢! 但是你想搭建环境的时候却发现各种麻 烦, 例如需要专门的硬件(路由器), 需要一根网线链接, 没有路由的话可能要来回插 拔网线,很是麻烦. 大家电脑USB口都很多, 那为什么不用USB来的调试板子呢? 如果能 像ADB一样,那多方便啊, 但是人家是Android啊, 我们在调基本的linux的时候没有ADB 这样的服务啊, 那能不能USB转网口来通信呢? 网络一通什么nfs, ssh都能用了, 其他的 什么的都是浮云了, 于是成文共享.

准备工作

1,可以正常使用的开发板一个

2,Linux系统电脑一台

3,2G SD卡一张

4,搭建编译环境

根据前面的文章,想必现在板子也是能够启动了,不行的赶紧先看看前面的文章。

配置 Kernel 编译选项

其中需要选定的是下面几个选项

1
2
3
4
5
[*] CONFIG_USB_MUSB_HDRC
[*] MUSB Mode Selection (Dual Role mode)
[*] CONFIG_TWL6030_USB
[*] CONFIG_USB_GADGET
    [*] USB Gadget Drivers (CONFIG_USB_ETH)

这里是已经配置好的 config,我的是 linux4.0 版本,不过里面的选项差不多,对比USB部分配置即可。

配置网络

使用新编译的boot.img镜像来启动开发板,然后用USB线连接到电脑上(板子的OTG口接到电脑的USB口上),此时电脑会出现一个usb网卡:

1
2
3
4
5
6
enp0s20u9i1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether ba:2c:17:c4:83:aa  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8  bytes 1184 (1.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

系统识别信息

1
2
3
4
[ 2304.806598] usbcore: registered new interface driver cdc_subset
[ 2304.806601] cdc_ether: probe of 3-9:1.0 failed with error -16
[ 2304.806616] usbcore: registered new interface driver cdc_ether
[ 2304.807396] cdc_subset 3-9:1.1 enp0s20u9i1: renamed from usb0

如果电脑上没有上面的信息,请确认你编译的Kernel的正确性。 首先设置开发板的IP地址以及网关:

1
2
#ifconfig usb0 192.168.0.200 netmask 255.255.255.0 up
#route add default gw 192.168.0.201

设置电脑上的网络配置:

1
#ifconfig enp0s20u13i1 192.168.0.201 netmask 255.255.255.0 up

现在就可以ping一下开发板了:

1
#ping 192.168.0.200

如果你想板子通过电脑的网络来访问外网,那么你可以这样:

1
2
#iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24
#sysctl -w net.ipv4.ip_forward=1

现在你就可以在板子上访问外网了,好玩吧!

参考资料: [1]: Openmoko Networking Setup USB Networking