首页 > 系统相关 >嵌入式LINUX开发系列之基于Radxa zero的usb_gadgetEthnet功能配置

嵌入式LINUX开发系列之基于Radxa zero的usb_gadgetEthnet功能配置

时间:2024-03-26 13:30:41浏览次数:20  
标签:gadgetEthnet USB zero 5.10 radxa 69 usb

LINUX系列文章目录

第二章 嵌入式linux开发之基于Radxa zero的usb_gadgetEthnet功能配置

文章目录


前言

最近张工拿到一款比较热门的开发板Radxa zero。Radxa zero是一款基于Amlogic S905Y2 Quad [email protected]的小型开发板,主要面向对性能要求不是特别高的嵌入式系统和物联网应用。如果需要更高性能或更多功能,就需要考虑其他型号的开发板。如果你有对其特定用途的需求,也可以考虑使用它。为什么选择这个开发板作为usb_gadgetEthnet开发呢?因为我开发这个功能的时候网络上没有基于radxa zero做的usb gadgetEthnet的有效参考,官网给的参考步骤做下来也没有成功。今天基于这个开发板做usb gadgetEthnet的功能,以下内容是张工经过项目验证成功后总结出来的,保证真实有效。本着真实写技术文章,希望对大家开发有所帮助。


一、usb_gadgetEthnet是什么?

先来普及一下概念:

  • USB Gadget Ethernet 是一个将 USB 设备模拟成以太网适配器的功能。它使得一个嵌入式设备(如单片机、开发板等)可以通过USB 接口模拟成一个以太网设备,与另外的主机(如 PC 或其他嵌入式设备)通过 USB 线缆连接,并以太网的方式进行通信。
  • USB Gadget Ethernet 主要有两种模式:
    1. USB Gadget Ethernet Function 模式:在这种模式下,嵌入式设备模拟成一个 USB 以太网适配器,可以被 PC 或其他主机识别为一个网络设备。这使得嵌入式设备可以通过 USB 连接实现与外部设备的通信,进行数据传输等操作。
    2. USB Gadget Ethernet RNDIS 模式:Remote Network Driver Interface Specification(远程网络驱动接口规范),这是一种标准的 USB 协议,它允许设备通过USB连接以太网进行网络通信。在这种模式下,嵌入式设备模拟成一个 RNDIS 设备,从而可以被 PC 识别为一个远程网络设备,实现通过USB与 PC 进行网络通信。
  • USB Gadget Ethernet 通常用于嵌入式系统、单片机或一些嵌入式开发板上,使得这些设备可以通过 USB 端口方便地与 PC 或其他设备进行网络通信,对于一些物联网或嵌入式应用具有一定的推广和应用前景。

二、具体操作

1.开发板上电,查询网络信息

root@radxa-zero:~# ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.200  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::13c:18e0:f2aa:ea60  prefixlen 64  scopeid 0x20<link>
        ether b8:13:32:d2:90:e0  txqueuelen 1000  (Ethernet)
        RX packets 15549  bytes 2091196 (1.9 MiB)
        RX errors 0  dropped 1  overruns 0  frame 0
        TX packets 1673  bytes 214327 (209.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

可以看出目前开发板里面只存在一个无线网卡wlan0,不存在usb虚拟网络。

2.usb_gadgetEthnet配置流程

操作环境:

  Ubuntu 系统的 PC 机
  Radxa Zero

基于Ubuntu 系统的 PC 机操作

配置内核
我这里的内核版是5.10.69,对于配置步骤不熟悉的可参考https://wiki.radxa.com/Zero/dev/kernel在内核目录下,打开内核配置选项菜单:

cd kernel
export ARCH=arm64
export CROSS_COMPILE=/opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/bin/aarch64-none-elf-
make menuconfig

进行 make menuconfig 可视化配置。增加如下配置,开启RNDIS配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
保存之后退出,然后编译内核

 make radxa_zero_defconfig
 make -j8

打包内核

export ARCH=arm64
export CROSS_COMPILE=/opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/bin/aarch64-none-elf-
make radxa_zero_defconfig
export build_id="999"  
export lv="-$build_id-amlogic"
export kv=$(make kernelversion)
export debv="$kv$lv"
make bindeb-pkg -j8 LOCALVERSION=$lv KDEB_PKGVERSION=$debv

查看生成的软件包(内核修订版本不同名称可能不同,我这边是5.10.69)

ls  ../*.deb

在这里插入图片描述

基于Radxa Zero开发板操作

  1. 在 Radxa Zero 上安装内核

将 linux-headers-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb 和 linux-image-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb复制到 Radxa Zero板子上。使用以下命令进行安装:

rock@radxa-zero:~$ sudo dpkg -i linux-headers-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb
rock@radxa-zero:~$ sudo dpkg -i linux-image-5.10.69-999-amlogic_5.10.69-999-amlogic_arm64.deb

重新启动,进入到新内核

root@radxa-zero:~# reboot
  1. 安装并打开 DHCP 服务器,在 /etc/modules 末尾添加 libcomposite

    root@radxa-zero:~# vim /etc/modules
    

    在这里插入图片描述

  2. 在 /etc/dhcpcd.conf 末尾添加 denyinterfaces usb0

    root@radxa-zero:~# vim  /etc/dhcpcd.conf
    

  3. 安装 dnsmasq

root@radxa-zero:~# apt update
root@radxa-zero:~# apt install dnsmasq
  1. 创建 /etc/dnsmasq.d/usb 文件
interface=usb0
dhcp-range=10.24.0.2,10.24.0.254,255.255.255.0,24h
dhcp-option=3
leasefile-ro
#其中 dhcp-range 设置表示 DHCP 服务分配的 IP 地址范围从 10.55.0.2-10.55.0.254,子网掩码为 255.255.255.0,有效期为 24小时。
  1. 创建 /etc/network/interfaces.d/usb0 文件
auto usb0
allow-hotplug usb0
iface usb0 inet static
address 10.24.0.1
netmask 255.255.255.0
#其中,address 表示 USB 接口的 IP 地址为 10.24.0.1,子网掩码为 255.255.255.0。
  1. 创建 /root/usb.sh
#!/bin/bash
sudo -i
modprobe configfs
modprobe udc-core
modprobe libcomposite
insmod /lib/modules/5.10.69-999-amlogic/kernel/drivers/usb/gadget/function/u_ether.ko
insmod /lib/modules/5.10.69-999-amlogic/kernel/drivers/usb/gadget/function/usb_f_rndis.ko
insmod /lib/modules/5.10.69-999-amlogic/kernel/drivers/usb/gadget/function/usb_f_ecm.ko
insmod /lib/modules/5.10.69-999-amlogic/kernel/drivers/usb/gadget/function/usb_f_ecm_subset.ko
insmod /lib/modules/5.10.69-999-amlogic/kernel/drivers/usb/gadget/legacy/g_ether.ko

cd /sys/kernel/config/usb_gadget/
mkdir -p radxa
cd radxa
echo 0x0525 > idVendor # Linux Foundation
echo 0xa4a2 > idProduct # Multifunction Composite Gadget
echo 0x0100 > bcdDevice # v1.0.0
echo 0x0200 > bcdUSB # USB2
echo 0x02 > bDeviceClass
echo 0x06 > bDeviceSubClass
echo 0x02 > bDeviceProtocol
mkdir -p strings/0x409
echo "fedcba9876543211" > strings/0x409/serialnumber
echo "RADXAZERO" > strings/0x409/manufacturer
echo "USB Device" > strings/0x409/product

mkdir -p configs/c.1/strings/0x409
echo "Config 1: ECM network" > configs/c.1/strings/0x409/configuration
echo 250 > configs/c.1/MaxPower
# Add functions here
# see gadget configurations below
# End functions
mkdir -p ./functions/ecm.usb0
HOST="00:dc:c8:f7:75:14" # "HostPC"
SELF="00:dd:dc:eb:6d:a1" # "BadUSB"
echo $HOST > functions/ecm.usb0/host_addr
echo $SELF > functions/ecm.usb0/dev_addr
ln -s ./functions/ecm.usb0 configs/c.1/
udevadm settle -t 5 || :
ls /sys/class/udc > UDC
ifup usb0
service dnsmasq restart

给脚本添加可执行权限

root@radxa-zero:~# sudo chmod +x /root/usb.sh
  1. 添加脚本开机启动,在 /etc/rc.local 中 exit 0 上一行添加 /root/usb.sh

在这里插入图片描述

  1. 重启设备,radxa-zero看到 USB 接口的 IP 地址为10.24.0.1

在这里插入图片描述

  1. 安装驱动,驱动下载链接:https://pan.baidu.com/s/1KEbE4MUPH_hOwT116ihs5Q 提取码:HA11

在这里插入图片描述
打开设备管理器->网络适配器,观察驱动是否安装完成。
在这里插入图片描述

三. usb_gadgetEthnet测试

  1. windows上测试
    观察radxa-zero的usb-typec接口分配的IP地址
    在这里插入图片描述
    windows上ping radxa-zero板子
    在这里插入图片描述
    在这里插入图片描述

  2. linux上ping radxa-zero板子
    在这里插入图片描述

总结

以上就是今天要讲的内容,本文详细系统介绍了基于RadxaZero的usb_gadgetEthnet功能开发流程,以上内容是张工经过项目验证成功后总结出来的,均真实有效。相信你仔细阅读之后,必有所收获。最后希望大家点点关注,订阅,多多支持,是我持续更新的动力。张工致力于有效解决我们项目开发过程中遇到的痛点问题。

标签:gadgetEthnet,USB,zero,5.10,radxa,69,usb
From: https://blog.csdn.net/qq_32706229/article/details/136958244

相关文章

  • 【兆易创新GD32H759I-EVAL开发板】USB设备 介绍1
    一、引言在当今数字化快速发展的时代,USB(通用串行总线)作为一种普遍应用的通信接口,在各种电子设备中发挥着不可或缺的作用。它不仅支持高速数据传输,而且支持热插拔,使设备连接更加方便快捷。兆易创新的GD32H7系列微控制器,凭借其卓越的计算性能和丰富的通信功能,为USB设备的开发提......
  • 【微前端】微前端的零信任(Zero-trust)机制应用
    【微前端】微前端的零信任(Zero-trust)机制应用目录【微前端】微前端的零信任(Zero-trust)机制应用零信任如何应用于前端将零信任扩展到微前端1\.独立的构建过程2\.微前端隔离3\.用于微前端组件的身份验证结论推荐超级课程:Docker快速入门到精通Kub......
  • go-zero处理本地事务
    go-zero处理本地事务,sqlx.SqlConn提供了基础的事务机制,官方代码varconnsqlx.SqlConnerr:=conn.TransactCtx(context.Background(),func(ctxcontext.Context,sessionsqlx.Session)error{r,err:=session.ExecCtx(ctx,"insertintouser(......
  • 拆个七口usbhub
    年前t宝工厂店买过一个,带单独开关和指示灯,外接开发板调试挺方便。不外接电源能有十多兆写入,也够用。想当然地拼夕夕在买两,渣渣,不加供电最多能插一个u盘,写入不到一兆,翻车翻车。不过也不贵,大概一个口一块钱。刚好用atx电源和转接板改了个高功率电源,能输出5v,12v,24v,hub拆了接入5v......
  • Linux系统连接手机USB网络共享后无法联网
    如题,离线安装了ubantu系统的服务器的所有网口都设置了静态ip,通过usb口外接手机usb网络共享后,通过ipaddr命令查看,发现usb0网卡没有拿到ip,通过尝试可以用以下命令解决sudodhclientusb0usb0重新向dhcp服务器请求ip,ipaddr看到获取到ip后可以pingbaidu.com试下,如果还......
  • linux 中shell脚本中遇到 Runtime error (func=(main), adr=22): Divide by zero
    在Linux中编写Shell脚本时,遇到“Runtimeerror(func=(main),adr=22):Dividebyzero”这样的错误通常是因为在脚本中进行了除以零的操作,类似于编程语言中的除零错误。要解决这个问题,您需要检查Shell脚本中涉及到除法运算的地方,确保分母不为零。下面是一个示例S......
  • 开源模型应用落地-qwen模型小试-Zero/One/Few Shot-进阶篇(九)
    一、前言  Zero-Shot、One-Shot和Few-Shot是机器学习领域中重要的概念,特别是在自然语言处理和计算机视觉领域。通过Zero-Shot、One-Shot和Few-Shot学习,模型可以更好地处理未知的情况和新任务,减少对大量标注数据的依赖,提高模型的适应性和灵活性。这对于推动人工智能在现实......
  • GP232RNL兼容替代FT232RL/FT232RNL USB转UART桥接控制器芯片低成本方案
    关注过小编的朋友都知道,之前小编有推荐过FT232RL的替代产品GP232RL,软硬件直接兼容,无需做修改。随着产品的更新迭代,后面也出来了升级版GP232RNL,低成本方案,可直接替代FT232RL/FT232RNL,参数无需改动。GP232RNL支持Windows11系统,可以直接替换使用。芯片概述:GP232RNL是一款高度集成......
  • Meta-Learned Attribute Self-Interaction Network for Continual and GeneralizedZer
    目录摘要介绍releatedworkzero-shotlearning零样本持续学习提出的方法bibtex格式参考文献摘要零样本学习(ZSL)是一种有希望的方法,通过利用类别属性将模型推广到训练期间未见过的类别,但仍然存在挑战。最近,利用生成模型来解决对训练期间已见类别的偏见的方法推动了技......
  • 中考英语首字母快速突破010-2021上海浦东英语二模-Living a Fun Zero-Waste Lifestyle
    PDF格式公众号回复关键字:ZKSZM010原文​Canlivingazero-wastelifestylebetrue?OneNewYorkerisprovingit'snotonlypossible,butitlooksfunaswell.​TheNewYorker,Ms.Singerdidn'tgrowupinareally"green"home.&qu......