如何在RK3568开发板上实现USBNET模式?

本文将借助飞凌嵌入式ok3568-c开发板为大家介绍实现usbnet模式的方法,在这之前需要先知道什么是usb gadget——usb gadget是指所开发的电子设备以usb从设备的模式通过usb连接到主机。
举个例子:将手机通过usb线插入pc后,手机就是usb gadget。同理,在本文的操作中就是将手机替换成了ok3568-c开发板。
gadget框架提出了一套标准api,在底层,usb设备控制器(udc) 驱动则实现这一套api,不同的udc(通常是soc的一部分) 需要不同的驱动, 甚至基于同样的udc的不同板卡也需要对代码进行修改。
我们想要实现usbnet也需要驱动,它的名字叫做rndis。rndis驱动在内核中是存在的,只需要找到配置项并编译进内核即可。
首先进入源码kernel目录,进入menuconfig图形配置界面:
进入menuconfig时需要指定环境,不然直接执行make menuconfig进入的图形配置界面为x86架构。如下图进入的为arm架构是正确的图形配置界面:
按 /,可以进入搜索界面:
直接搜索rndis,找到写有usb gadget字样的目录,可以看到有多个路径,可以直接进入usb gadget目录下去看,那个就是配置rndis的选项。
经过寻找最终路径如下图所示:
将rndis驱动开启,并选中一些网络协议配置,如下图圈中所示:
找到usb gadget precomposed configurations,将rndis编译进内核(如果选择编译成模块,单独编译内核不会生成 .ko文件,为了省去繁琐挂载步骤,本篇就将rndis编译进内核)。
配置完成,选择exit按键直到退出,“是否保存”选择yes即可:
返回源码目录进入build.sh脚本,注释掉defconfig生成.config文件的命令,使menuconfig配置生效,注释位置如下:
保存退出,单独编译内核,在源码目录下执行./build.sh kernel。编译完成之后会在kernel目录下生成boot.img文件。
单步更新镜像使用瑞芯微官方提供的烧写工具—— rkdevtool 。按住recovery键按reset,直到烧写工具显示发现一个loader设备后松开recovery键。
替换图中位置,点击设备分区表,完成后,点击执行,设备重启后,即为烧录完成,右侧也会有烧录进度。开发板重启后,ifconfig -a查看可以看到生成usb0节点。
利用linux usb gadget设备驱动可以实现一些比较有意思的功能:
1. 一个嵌入式产品中的某个存储设备,或是一个存储设备的某个分区,可以作为一个u盘被pc识别;
2. 一个嵌入式设备通过usb连接到pc后,在pc端会出现一个新的网络连接,在嵌入式设备上也会有一个网卡设备,你可以配置它们的ip地址,并进行网络通讯,俗称usbnet。
此次使用的是usb3.0接口,因此需要detect激活type-c 5v转3.3v type-a,硬件改动为p40的pin1连接c23的正极。将播码开关拨至on,插入双公头usb线;
强制使usb输出为device
echo peripheral > /sys/devices/platform/fe8a0000.usb2-phy/otg_mode
打印信息如图所示:
可以在设备管理器网络适配器上看到这个节点,配置一个ip
查看网络连接可以看到一个未识别网络,将这个也配置上ip,注意需要跟ok3568-c开发板配置的ip在同一网段:
使用ok3568-c开发板去ping刚才电脑配置的ip,发现可以ping通。
通过以上信息可以看出,ok3568-c开发板已实现usbnet功能,实现网络共享。

如何构建树莓派调频发射器
湿法清洗过程中的颗粒沉积和去除研究
IM7583阻抗分析仪
华为的激光雷达是虚晃一枪还是真功夫?
HTC成功出售手机业务给谷歌 HTC有望否极泰来股价大涨近6%
如何在RK3568开发板上实现USBNET模式?
如何推导电容式MEMS加速度计中使用的传递函数
解读MEMS智能传感器技术的新进展
如何使用双极电机创建3点轴机械臂
外媒:央行数字货币可以解决支付数据留在主要技术平台手中的隐私问题
各类网线标识代表含义
臻鼎坐上全球PCB龙头 突破千亿元大关
2016无人机市场笼罩阴云 今年“血战”主战场在哪?
余承东:华为mate9对标苹果 Mate9 Pro中国独享
智能手表PSRAM芯片存储方案的介绍
驾驶员监控系统提升安全性
从设计角度,以高压电缆为案例重点讨论高电压安全发展进步
小米手表Color评测 绝非盲目跟风
锂电池四大技术难题制约电动汽车的发展
浅谈5G通信系统中毫米波的天线设计