通过USB线实现开发板与PC端的网络通信
板上的uart通过usb线接到pc上,板子可以通过uart口接收到pc端的uart口发出内容,pc端也可接收到板上发的内容。
板上的uboot会接收uart数据,并会把接收到的内容转发回去(回显)。
板上uboot通过uart接收命令,并把执行命令的结果通过uart口发出去。
linux内核的作用:统一管理软硬件的资源,而且也统一硬件设备的驱动的接口及应用程序调用的的接口。
板子没有有线网卡,但有提供otg接口,可以让我们的板子作个虚拟网卡通过usb线接到pc,在pc上就会多产生一个网络设备,然后pc就可以通过产生的网络设备与板子通信了,板子也可以通过网络挂载pc上的共享目录。
步骤:
1.配置内核,让内核支持此功能(在内核源码根目录orangepi_sdk/source/linux-3.4.112下):
make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
File systems --->
[*] Network File Systems --->
[*] NFS client support for NFS version 3
[*] NFS client support for NFS version 4
Device Drivers --->
[*] USB support --->
<*> USB Gadget Support --->
<M> USB Gadget Drivers //修改成'M',原来是'*'
<M> Ethernet Gadget (with CDC Ethernet support)
2.修改好后,退出保存,再编译内核(注意不用"make clean"):
make uImage ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
3.再编译驱动模块(也就是选'M'项):
make modules ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
4.更新内核镜像及文件系统:
sudo cp arch/arm/boot/uImage /sd卡挂载目录 //更新内核镜像
make modules_install INSTALL_MOD_PATH=/sd卡挂载目录 //把编译生成的模块驱动.ko文件放到文件系统的分区里
make modules_install INSTALL_MOD_PATH=/disk3/h3fs/ //也给PC上的板子文件系统更新,以防SD卡系统挂掉后可以恢复
5.把SD卡接回板子上启动系统
6.加载驱动文件(驱动文件就是"/lib/modules/3.4.112/kernel/drivers/usb/gadget/g_ether.ko"):
modprobe g_ether //加载刚才的ko驱动文件
echo 2 > /sys/devices/platform/sunxi_usb_udc/otg_role //让板子的otg接口作设备用
(以上操作完成后,板子端会多usb0网络设备;接入usb线后,pc端也会多一个网络设备(名字不确定,如:enp0s29f7u1))
(ifconfig -a:可以查看IP信息)
7.把两端的网络设备设好IP,即可网络通信:
ifconfig usb0 192.168.11.10 //设置板子端的IP(IP自己定,但前三个点分十进制要相同,第四个不能相同)
ifconfig enp0s29f7u1 192.168.11.20 //设置PC端的IP(IP自己定,但前三个点分十进制要相同,第四个不能相同,之后挂载时记得写这里自己定的IP)
8.pc端配置及启动nfs服务:
(1)配置/etc/exports文件:
sudo vim /etc/exports
增加以下内容(nfs的共享目录):
/nfs共享目录 *(rw, sync, no_root_squash, no_subtree_check)
或者:/nfs共享目录 *(rw)
注意(以下不用写到exports文件中):
*:允许所有的网段访问,也可以使用具体的IP
rw:挂接此目录的客户端对该共享目录具有读写权限
sync:资料同步写入内存和硬盘
no_root_squash:root用户具有对根目录的完全管理访问权
no_subtree_check:不检查父目录的权限
(2)启动nfs(Ubuntu下):
sudo /etc/init.d/nfs-kernel-server start
另外:
重启nfs:sudo /etc/init.d/nfs-kernel-server restart
停止nfs:sudo /etc/init.d/nfs-kernel-server stop
9.ping查看板子和pc能否ping通
10.在板子上挂载pc的nfs共享目录
mount 192.168.11.20:/nfs共享目录 /mnt -o nolock
或者:mount 192.168.11.20:/nfs共享目录 /mnt -o nolock,tcp
11.为了以后使用不用经常麻烦与加载驱动文件,可以将加载驱动的命令写到系统初始化文件(/etc/init.d/rcS)里,即加上以下内容:
modprobe g_ether
echo 2 > /sys/devices/platform/sunxi_usb_udc/otg_role
注意:
以后可以通过挂载pc的共享目录,来运行程序。(这样就可以不用经常拔插卡了)
版权声明:本文为ForFuture_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。