首先:打开linux 内核配置菜单:
$ make CROSS_COMPILE=arm-arago-linux-gnueabi- ARCH=arm menuconfig
在主菜单选择 Device Drivers
... ... Power management options ---> [ ] Networking support ---> Device Drivers ---> File systems ---> Kernel hacking ---> ... ...
如下图选择USB support
... ... <*> Sound card support ---> [*] HID Devices ---> [*] USB support ---> <*> MMC/SD/SDIO card support ---> ... ...
进入USB Gadget Support 菜单
... ... < > USB YUREX driver support <*> USB Gadget Support ---> *** OTG and related infrastructure *** < > GPIO based peripheral-only VBUS sensing 'transceiver' ... ...
如下所示选择Inventra HDRC USB Peripheral
... ... (2) Maximum VBUS Power usage (2-500 mA) (2) Number of storage pipeline buffers <*> USB Peripheral Controller (Inventra HDRC USB Peripheral (TI, ADI, ...)) ---> < > USB Gadget Drivers ... ...
如下所示选择Ethernet Gadget
... ... <*> USB Peripheral Controller (Inventra HDRC USB Peripheral (TI, ADI, ...)) ---> < > USB Gadget Drivers ... <M> Ethernet Gadget (with CDC Ethernet support) [*] RNDIS support [ ] Ethernet Emulation Model (EEM) support ... ...
设置完毕后需要make modules 以便生成g_ether.ko驱动
然后将生成的镜像文件下载到开发板中。
进入板子的文件系统,加载该驱动:insmod g_ether.ko
此时RNDIS驱动会生成网络设备usb0(/dev/usb0),为了能正常的通信可以设置ip地址及其掩码:
ifconfig usb0 <IP_ADDR> netmask 255.255.255.0 up
此时就可以正常的通信工作,测试可以使用:
ping -I <usb0 IP_ADDR> <target IP_ADDR >
一般情况下,可能配置的不同,有可能版本等不相同,在/dev目录下并没有生成驱动文件usb0,此时只需要执行:
modprobe g_ether
ifconfig usb0 192.168.7.2 netmask 255.255.255.0 up
假如没有提示错误,且通过ifocnfig可以看到对应的网络信息就可以了。
假如要板子通过usb与windows系统网络通信,则需要当连接板子的usb插到电脑上的时候会产生一个网络接口如产生本地连接3
此时要设置其的ip地址与板子的usb0的ip地址向对应如192.168.7.4
设置完毕后就可ping通了、