找回密码
 注册
关于网站域名变更的通知
查看: 543|回复: 1
打印 上一主题 下一主题

如何在RK3568开发板上实现USBNET?——飞凌嵌入式/USB Gadget/USB-NET/网络

[复制链接]

该用户从未签到

跳转到指定楼层
1#
 楼主| 发表于 2023-9-15 15:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本文将借助飞凌嵌入式OK3568-C开发板为大家介绍实现USBNET模式的方法,在这之前需要先知道什么是USB Gadget——USB Gadget是指所开发的电子设备以USB从设备的模式通过USB连接到主机。举个例子:将手机通过USB线插入PC后,手机就是USB Gadget。同理,在本文的操作中就是将手机替换成了OK3568-C开发板。

( {# R9 u( H- q( N
Gadget框架提出了一套标准API,在底层,USB设备控制器(UDC) 驱动则实现这一套API,不同的UDC(通常是SoC的一部分) 需要不同的驱动, 甚至基于同样的UDC的不同板卡也需要对代码进行修改。我们想要实现USBNET也需要驱动,它的名字叫做RNDIS。RNDIS驱动在内核中是存在的,只需要找到配置项并编译进内核即可。
5 K9 W. ?; j7 h" o; ?! w2 ^
首先进入源码kernel目录,进入menuconfig图形配置界面:
3 t/ O- q4 w6 T, s# q2 r
进入menuconfig时需要指定环境,不然直接执行make menuconfig进入的图形配置界面为X86架构。如下图进入的为ARM架构是正确的图形配置界面:
2 E$ w+ K& B0 i9 K0 x
按 /,可以进入搜索界面:
( h  S. s, t3 U; c: M0 Z
直接搜索rndis,找到写有USB Gadget字样的目录,可以看到有多个路径,可以直接进入USB Gadget目录下去看,那个就是配置RNDIS的选项。

4 x+ _+ ]: g2 Z! l* J
经过寻找最终路径如下图所示:

8 r' B+ u4 p. C4 K; ^% _7 `
将RNDIS驱动开启,并选中一些网络协议配置,如下图圈中所示:

  S  m4 m% ~" E  F" F# }, b
找到USB Gadget precomposed configurations,将RNDIS编译进内核(如果选择编译成模块,单独编译内核不会生成 .ko文件,为了省去繁琐挂载步骤,本篇就将RNDIS编译进内核)。

# [$ ~9 M9 @1 L3 `5 q0 `. y, F0 m
配置完成,选择Exit按键直到退出,“是否保存”选择yes即可:
3 S# H* r7 a3 ?1 u
返回源码目录进入build.sh脚本,注释掉defconfig生成.config文件的命令,使menuconfig配置生效,注释位置如下:

. J" o4 a4 R7 k8 S. u7 h* b( U  J
保存退出,单独编译内核,在源码目录下执行./build.sh kernel。编译完成之后会在kernel目录下生成boot.img文件。

( f/ k- F6 |- S$ u6 y: w) I- x3 ]
单步更新镜像使用瑞芯微官方提供的烧写工具——RKDevTool。按住Recovery键按Reset,直到烧写工具显示发现一个LOADER设备后松开Recovery键。
1 T6 `$ {, w( }+ |& \. ~
替换图中位置,点击设备分区表,完成后,点击执行,设备重启后,即为烧录完成,右侧也会有烧录进度。开发板重启后,ifconfig -a查看可以看到生成usb0节点。
. y8 L8 ]2 L4 ?+ d/ A! ^9 X, z
利用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线;
3 {3 T, @, c( d: A8 Q* Y
强制使USB输出为device
echo peripheral > /sys/devices/platform/fe8a0000.usb2-phy/otg_mode
打印信息如图所示:

7 A1 t$ ]& G9 n3 D, z4 m1 G5 N
可以在设备管理器网络适配器上看到这个节点,配置一个IP
) U2 F" L$ |2 s" E3 u: L# ^5 B
查看网络连接可以看到一个未识别网络,将这个也配置上IP,注意需要跟OK3568-C开发板配置的IP在同一网段:
. \# c4 M* K" s8 q3 n: Z/ Q7 P
使用OK3568-C开发板去ping刚才电脑配置的IP,发现可以ping通。
$ }: H$ w5 ]3 n" ]
通过以上信息可以看出,OK3568-C开发板已实现USBNET功能,实现网络共享。
+ L; s7 n) Z# D& s% s

该用户从未签到

2#
发表于 2023-9-15 15:53 | 只看该作者
这个开发板的功能强大,竟然还有API
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-23 16:42 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表