4.5.12. USB 总线速率测试
4.5.12.1. 测试原理
USB 速率
测试内容
USB 总线
dd 命令原理说明
使用 dd 命令
dd if=/dev/zero of=/mnt/usb/testfile bs=1M count=1024 conv=sync oflag=direct
if=/dev/zero:输入文件 是 /dev/zero,它会 生成 连续 的 零 数据。 of=/mnt/usb/testfile:输出文件 为 USB 存储设备 的 挂载 点下 的 testfile,即将 数据 写入 U 盘。 bs=1M:块大小 为 1MB。每次 操作 读取 或 写入 1MB 数据。 count=1024:共写入 1024 个块,即 1GB 的 数据。 conv=sync:按指定 块 大小 对齐,不足 部分 用 0 补齐;本 命令 中因 数据源 不间断,主要 起到 块 同步 写入 的 作用(if=/dev/zero 数据 不间断,不会 出现 “块 不足” 的 情况)。 oflag=direct:使用直接 I/O 模式,绕过 系统 页 缓存,更 接近 U 盘 真实 物理 写入 速度。
dd if=/path/to/source_file of=/dev/null bs=4K iflag=direct
if=/path/to/source_file: if( 输入文件 ) 指定 输入 文件 的 路径,/path/to/source_file 是 要 从中 读取数据 的 文件。 of=/dev/null: of(输出文件):指定 输出 文件 的 位置,这里 将 数据 写入 /dev/null。 bs=4K: bs(块大小):设置 每次 读取 和 写入 的 数据 块 大小 为 4KB( 4096 字节)。 iflag=direct: direct 标志确保 数据 直接 从 U 盘 读取,而 不 经过 操作系统 的 缓存。
通过dd 读写
usb 虚拟网口原理说明
设置 USB 口
4.5.12.2. 准备工作
U 盘读写准备方法
1. 查看 x5_evb 开发板
root@buildroot:~# cat /sys/kernel/debug/usb/35100000.usb/mode
host
设置 USB 3.0 为 Host 模式
下 的 命令:
echo host > /sys/class/usb_role/35100000.usb-role-switch/role
设置 USB 3.0 为 Device 模式
下 的 命令:
echo device > /sys/class/usb_role/35100000.usb-role-switch/role
2. 将 U 盘
root@buildroot:~# lsusb
Bus 002 Device 004: ID 0781:55a9
Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0003
通过 lsusb 命令
4.5.12.3. 测试方法
输入
root@buildroot:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 1 233G 0 disk
`-sda1 8:1 1 233G 0 part /media/UBUNTU_24_1
mtdblock0 31:0 0 512M 0 disk
mmcblk0 179:0 0 7.1G 0 disk
|-mmcblk0p1 179:1 0 4K 0 part
|-mmcblk0p2 179:2 0 2.3M 0 part
|-mmcblk0p3 179:3 0 2.3M 0 part
|-mmcblk0p4 179:4 0 4K 0 part
|-mmcblk0p5 179:5 0 2M 0 part
|-mmcblk0p6 179:6 0 256K 0 part
|-mmcblk0p7 179:7 0 16K 0 part
|-mmcblk0p8 259:0 0 12M 0 part
|-mmcblk0p9 259:1 0 250M 0 part /
|-mmcblk0p10 259:2 0 200M 0 part /usr/hobot
|-mmcblk0p11 259:3 0 700M 0 part /app
`-mmcblk0p12 259:4 0 6G 0 part /userdata
mmcblk0boot0 179:8 0 4M 1 disk
mmcblk0boot1 179:16 0 4M 1 disk
输入 dd 命令
root@buildroot:~# dd if=/dev/zero of=/media/UBUNTU_24_1/myfile bs=4K count=256K conv=sync
262144+0 records in
262144+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 26.0445 s, 41.2 MB/s
输入 dd 命令
root@buildroot:~# dd if=/media/UBUNTU_24_1/myfile of=/dev/null bs=4K count=256K
262144+0 records in
262144+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 8.27242 s, 130 MB/s
4.5.12.4. 准备工作
usb 虚拟网口准备方法
1. 将 x5_evb 开发板

2. 将 usb2.0 虚拟
/etc/init.d/usb-gadget.sh stop adb
/etc/init.d/usb-gadget.sh start rndis
执行
Detecting platform:
board : D-Robotics X5 EVB LP4 1_B board
udc : 35300000.usb
Creating the USB gadget
Loading composite module
Mount ConfigFS and create Gadget
configfs mount point: /sys/kernel/config
Configfs already mounted...
Creating gadget directory g_comp
OK
init configfs...
Setting Vendor and Product ID's
OK
Setting Multi-func Gadget for Windows
Setting English strings
OK
Creating Config
Init functions...
funciton_init, but do nothing, please init on demand
OK
Bind functions...
Bind functions according to .usb-config file
bind gadget rndis...
Creating RNDIS gadget functionality
[ 210.814912] using random self ethernet address
[ 210.815497] using random host ethernet address
OK
Pre run userspace daemons(eg. adb)...
0
waiting
.
OK
Binding USB Device Controller
UDC set to: 35300000.usb
OK
Run some userspace daemons(eg. usb_camera)...
usb-gadget start succeed.
usb-gadget restart succeed.
在Remote RNIS Compatible Device 网卡。

3. 使用
ifconfig usb0 192.168.1.10
PC 端

4.5.12.5. 测试方法
在 pc 端

在 x5_evb 开发板
root@buildroot:~# iperf3 -c 192.168.1.111 -i 1 -t 600 -p 5002
Connecting to host 192.168.1.111, port 5002
[ 5] local 192.168.1.20 port 44826 connected to 192.168.1.111 port 5002
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 36.9 MBytes 310 Mbits/sec 0 71.3 KBytes
[ 5] 1.00-2.00 sec 36.7 MBytes 308 Mbits/sec 0 71.3 KBytes
[ 5] 2.00-3.00 sec 36.7 MBytes 308 Mbits/sec 0 71.3 KBytes
[ 5] 3.00-4.00 sec 36.8 MBytes 308 Mbits/sec 0 71.3 KBytes
[ 5] 4.00-5.00 sec 36.8 MBytes 308 Mbits/sec 0 71.3 KBytes
此时
Accepted connection from 192.168.1.20, port 44822
[ 5] local 192.168.1.111 port 5002 connected to 192.168.1.20 port 44826
4.5.12.6. 测试指标
USB 总线
usb 2.0 : 480Mbps 即 60MB/s
usb 3.0 : 5Gbps 即 625MB/s
实际
常见影响因素
USB 版本: USB 3.0 、 3.1 和 2.0 的
带宽 差异 会 直接 影响 数据 传输速率。如果 你 在 USB 2.0 接口 上 使用 设备,理论 最大 速度 为 480 Mbps,实际 速度 可能 更 低。 设备
类型 : USB 设备(如 U 盘、外接硬盘、 SSD)具有 不同 的 读写 性能,尤其 是 闪存 类型 的 U 盘 速度 较慢,而 SSD 性能 更好。 块
大小 ( :bs)dd命令的 块 大小 选择 对 测试 结果 有 很大 影响,较大 的 块 大小 可能 提高 吞吐量,而 过 小 的 块 大小 可能 导致 效率 低下,可 适当 更改 dd命令参数 来 达到 更好 的 测试 效果。
测试结果
通过