内部低速控制接口
GPIO/LED
功能简介
RK3576大部分GPIO被用于其他功能(如I2C、UART等),如需将这些接口作为普通GPIO使用,须在设备树中解除功能占用。
RK3576载板有一个绿色LED(USER)可自定义灯状态,使用GPIO4_C7引脚(GPIO ID为151)。

GPIO ID计算方式
GPIO ID = 32*X + 8*Y + Z
例如:GPIO4_C7
X=4, Y=2(C), Z=7
GPIO ID = 32*4+8*2+7 = 151
命令行相关指令
cat /sys/class/gpio/gpio151/direction #读取操作方向
echo out > /sys/class/gpio/gpio151/direction #设置为输出
echo in > /sys/class/gpio/gpio151/direction #设置为输入
echo in > /sys/class/gpio/gpio151/direction #设置为输入模式
cat /sys/class/gpio/gpio151/value #读取当前的电平状态
echo 0 >/sys/class/gpio/gpio151/value #输出低电平
echo 1 >/sys/class/gpio/gpio151/value #输出高电平
echo 151 > /sys/class/gpio/export #导出GPIO 接口
测试脚本
该脚本在 /dfrobot-test/blink.sh中,请在root权限下执行该脚本,可看到载板的LED间隔一秒闪烁。
. /dfrobot-test/blink.sh
# 或
bash /dfrobot-test/blink.sh
脚本代码
#!/bin/bash
GPIO=151
cleanup() {
echo 0 > /sys/class/gpio/gpio${GPIO}/value
echo ${GPIO} > /sys/class/gpio/unexport
exit 0
}
trap cleanup EXIT
echo ${GPIO} > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio${GPIO}/direction
while true; do
echo 1 > /sys/class/gpio/gpio${GPIO}/value
sleep 1
echo 0 > /sys/class/gpio/gpio${GPIO}/value
sleep 1
done
I2C/RTC
功能简介
RK3576有10个I2C端口,部分I2C端口与其他功能复用。
- 支持7位和10位地址模式
- 软件可编程时间频率
- 支持100kbps标准模式和400kbps快速模式
RK3576载板I2C使用情况如下:
| I2C端口 | I2C0 | I2C2 | I2C3 | I2C5 | I2C6 | I2C8 |
|---|---|---|---|---|---|---|
| 映射功能 | DSI触摸 | RTC | ES8388音频控制 | CSI1 I2C | CSI0 I2C | CSI3 I2C |
命令行相关指令
RK3576载板板载了RTC芯片 - IT8563UE
cat /sys/class/rtc/rtc0/date #获取RTC日期
cat /sys/class/rtc/rtc0/time #获取RTC时间
cat /proc/driver/rtc #打印RTC相关信息
执行命令后效果如下:

UART
RK3576有12个UART端口,部分UART端口与其他功能复用。
- 集成2个64字节的FIFO
- 支持5bit、6bit、7bit、8bit串口数据接收
- 支持标准异步通讯
- 支持不同输入时钟,波特率高达8Mbps
- UART1-UART11支持自动流控模式
- UART1-UART11支持RS485功能
RK3576载板UART使用情况如下:
| UART端口 | UART0 | UART2 | UART3 | UART4 | UART5 | UART7 |
|---|---|---|---|---|---|---|
| 映射功能 | 排针引出(debug) | 排针引出 | 排针引出 | 蓝牙通讯 | 排针引出 | RS485 |
RK3576载板引出了4路UART排针

测试脚本
该脚本在 /dfrobot-test/uart.sh中。将UART3的TX和RX短接到一起,在root权限下执行该脚本,即可看到测试结果
. /dfrobot-test/uart.sh

脚本代码
#!/bin/bash
SERIAL_DEV="/dev/ttyS3" # 替换为你实际串口
TEST_STRING="LoopbackTest_$(date +%s)"
TMP_FILE=$(mktemp) # 安全创建临时文件
TIMEOUT=2 # 超时时间(秒)
# 清理函数
cleanup() {
[[ -n "$CAT_PID" ]] && kill -TERM "$CAT_PID" 2>/dev/null
rm -f "$TMP_FILE"
}
trap cleanup EXIT
# 配置串口
stty -F "$SERIAL_DEV" 115200 cs8 -cstopb -parenb -ixon -ixoff -crtscts -echo
# 清空串口缓冲区
timeout 0.5 cat "$SERIAL_DEV" >/dev/null
# 后台读串口
cat "$SERIAL_DEV" > "$TMP_FILE" &
CAT_PID=$!
# 确保读取进程启动
sleep 0.1
# 发送字符串(添加换行符)
echo "$TEST_STRING" > "$SERIAL_DEV"
# 等待接收完成(带超时)
start_time=$(date +%s)
while true; do
# 检查超时
if [[ $(($(date +%s) - start_time)) -ge $TIMEOUT ]]; then
echo "错误:接收超时"
exit 2
fi
# 检查是否收到完整字符串
if grep -q "$TEST_STRING" "$TMP_FILE" 2>/dev/null; then
break
fi
sleep 0.1
done
# 获取接收内容
RECEIVED=$(grep "$TEST_STRING" "$TMP_FILE" | head -n1)
# 判断结果
if [[ "$RECEIVED" == "$TEST_STRING"* ]]; then
echo "串口环回测试成功:$RECEIVED"
exit 0
else
echo "串口环回测试失败,发送:$TEST_STRING"
echo "收到:$RECEIVED"
exit 1
fi
风扇接口
内置风扇控制接口,使用方法如下:
linaro@linaro-alip:~$ dfrobot-fan-ctl --help
Device found: hwmon6 (name: 'dfrobot-fan')
Fan device found: /sys/class/hwmon/hwmon6
DFRobot Fan Control Program
Usage: dfrobot-fan-ctl [options]
Options:
-t, --temp Show current temperature
-f, --fan Show fan status
-s, --status Show all status information
--set-temp <value> Set temperature threshold (°C, range 0.0-100.0)
--set-time <value> Set check interval (seconds, range 1.0-60.0)
--monitor Enter monitor mode
-h, --help Show this help message
Examples:
dfrobot-fan-ctl -s # Show all status
dfrobot-fan-ctl --set-temp 65.5 # Set temperature threshold to 65.5°C
dfrobot-fan-ctl --set-time 2.5 # Set check interval to 2.5 seconds
dfrobot-fan-ctl --monitor # Enter monitor mode
linaro@linaro-alip:~$ dfrobot-fan-ctl -s
Device found: hwmon6 (name: 'dfrobot-fan')
Fan device found: /sys/class/hwmon/hwmon6
Current temperature: 36.1°C (36076 millidegree)
Fan status: OFF
Temperature threshold: 60.0°C (60000 millidegree)
Check interval: 10.0 seconds (10000 milliseconds)
请注意在设置风扇温度阈值以及查询时间时请使用root权限
linaro@linaro-alip:~$ dfrobot-fan-ctl --set-temp 65.5
Device found: hwmon6 (name: 'dfrobot-fan')
Fan device found: /sys/class/hwmon/hwmon6
Failed to set temperature threshold: Permission denied
linaro@linaro-alip:~$ sudo dfrobot-fan-ctl --set-temp 65.5
Device found: hwmon6 (name: 'dfrobot-fan')
Fan device found: /sys/class/hwmon/hwmon6
Temperature threshold set: 65.5°C (driver value: 65500 millidegree)
工业与串行通讯接口
RS485
测试RS485收发,需使用串口转RS485工具,使用前需将RK3576载板RS485_A连接到串口转RS485工具的RS485_A口,RK3576载板RS485_B连接到串口转RS485工具的RS485_B口。
RK3576载板将RS485挂载在UART7上。

命令行操作RS485相关指令
# 配置RS485通讯参数
stty -F /dev/ttyS7 115200 cs8 -parenb -cstopb
# 发送数据
echo "hello dfrobot" > /dev/ttyS7
# 接收数据
cat /dev/ttyS7
CAN
RK3576有2路CAN端口。
- 符合CAN和CAN FD规范
- 支持CAN标准和扩展框架
- 支持数据帧、远程帧、过载帧、错误帧和帧间隔
- 支持8192位接收FIFO
RK3576载板引出了2路CAN。

命令行操作CAN相关指令
# 配置CAN通讯参数
ip link set can0 type can bitrate 500000 dbitrate 2000000 sample-point 0.8 fd on
# 参数说明
# bitrate 设置波特率为
# dbitrate 设置数据波特率
# ample-point 设置采样点位置
# fd on 是否启用CAN-FD
# 开启CAN设备
ip link set can0 up
# 查看CAN网路接口
ifconfig can0
# 选择配置“TX队列长度”,用于调优 发送队列缓存长度,如在大量高速帧需要发送(比如 CAN-FD),这项设置能显著减少丢帧。
echo 4096 > /sys/class/net/can0/tx_queue_len
# 发送数据
cansend can0 5A1#123456
# 接收数据
candump can0
# 关闭CAN设备
ip link set can0 down
使用CAN
为保证CAN总线的安全性,系统默认设置SocketCAN接口是未激活状态,需要通过ip link set ...来配置并启用它。
# 配置并启用CAN
ip link set can0 type can bitrate 500000 dbitrate 2000000 sample-point 0.8 fd on
ip link set can0 up
# 查看启用的CAN端口
ifconfig can0
# 发送数据
cansend can0 5A1#123456
音频与视频接口
显示输出接口
RK3576支持HDMI、eDP、DP、MIPI-DSI、EBC、并行接口显示输出。
- HDMI/eDP TX接口
- HDMI接口
- HDMI V2.1
- 最高支持4K@120Hz
- 输出数据格式:RGB/YUV444/YUV422/YUV420 8/10-bit
- eDP接口
- eDP V1.3,兼容DisplayPort V1.2
- 最高支持4K@60Hz
- 输出数据格式:RGB/YUV444/YUV422 8/10-bit
- HDMI接口
- DP V1.4 TX接口
- 支持DsiplayProt V1.4
- 最高支持4K@120Hz
- 输出数据格式:RGB/YUV444/YUV422/YUV420 8/10-bit
- MIPI DSI-2 TX接口
- MIPI DSI-2 V1.1接口,带D-PHY V2.0或C-PHY V1.1
- 支持D-PHY 4 data lanes或C-PHY 3 data trios
- 最高支持2560x1600@60Hz
- 支持最高10位RGB数据格式
- EBC接口
- 支持E-ink EPD
- 支持2560x1920硬件解码
- 支持16-bit数据总线
- 支持32级灰度
- 并行接口
- 支持RBG/BT656/BT1120
- 最高支持1920x1080@60Hz
- 支持最高8位RGB数据格式
RK3576视频输出处理器有三个视频输出端口(HDMI/eDP/DP/DSI-2可连接到任意Video Port,并行输出接口只能连接到Video Port1或2)
- Video Port0最高支持10-bit 4K@120Hz视频
- Video Port1最高支持10-bit 2560x1600@60Hz视频
- Video Port2最高支持8-bit 1920x1080@60Hz视频
RK3576载板引出了标准HDMI(A)、DP、DSI接口,默认视频输出端口分配如下:
- Video Port0:HDMI接口 最大支持4K@120Hz
- Video Port1:DSI接口 最大支持2560x1600@60Hz
- Video Port2:DP接口 最大支持1920x1080@60Hz
视频输入接口
RK3576支持MIPI-CSI、DVP接口输入视频。
- MIPI-CSI接口
- 支持5个CSI-2接口
- 端口0支持4 D-PHY data-lane或3 C-PHY trios
- 端口1-4支持2 D-PHY V1.2 data-lane(2.5Gbps/lane),2个端口可合并为1个端口,合并后端口有2 data-lane
- DVP接口
- 支持8/10/12/16-bit,150Mhz I/O频率
- 支持BT.601/BT.656和BT.1120 VI接口
RK3576载板引出了3个MIPI-CSI接口,每个接口有4个数据通道
- CAM0:使用CSI0端口,使用I2C6
- CAM1:使用CSI1和CSI2端口,使用I2C5
- CAM2:使用CS3和CSI4端口,使用I2C8
当前RK3576适配了IMX415摄像头
命令行操作CSI相关指令
# 查看摄像头设备,在rkisp_mainpath中找到对应的设备
v4l2-ctl --list-devices
# 预览摄像头,格式、分辨率和帧率可根据实际修改
gst-launch-1.0 v4l2src device=/dev/video11 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=30/1 ! videoconvert ! autovideosink
音频
RK3576支持5个串行音频接口(SAI)
- SAI0/1支持4个TX通道和4个RX通道
- SAI2/3/4支持1个TX通道和1个RX通道
- 支持I2S/TDM/PCM模式
- 支持3种I2S格式
- 支持4种PCM格式
- 采样率高达192KHz
- 支持16-32bits音频分辨率
RK3576载板ES8388音频编解码芯片,使用了SAI1进行音频传输和I2C3进行配置控制。MIC座子连接到ES8388的IN2接口;SPK通过功放芯片(PAM8302AADCR)连接到ES8388的OUT1接口;PHONE座子连接到ES8388的IN1和OUT2接口。
测试脚本
该脚本在 /dfrobot-test/audio.sh中。将音频设备连接到接口即可测试。
# 测试SPK和MIC
. /dfrobot-test/audio.sh speaker
# 测试PHONE音频
. /dfrobot-test/audio.sh headphone
脚本代码
#!/bin/bash
# 声卡测试脚本
# 支持两种模式:扬声器测试 (默认) 和 耳机测试
# 用法:
# ./audio.sh speaker # 测试扬声器和主麦克风
# ./audio.sh headphone # 测试耳机和耳机麦克风
# 函数:配置扬声器模式
setup_speaker_mode() {
# SAI接口配置
amixer -c 0 cset numid=31,iface=MIXER,name='SAI1 Transmit SDO2 Source Select' 0
amixer -c 0 cset numid=4,iface=MIXER,name='SAI1 Receive SDIx Select' 1
amixer -c 0 cset numid=3,iface=MIXER,name='SAI1 Transmit SDOx Select' 1
# 输出通道配置
amixer -c 0 cset name='OUT1 Switch' on
amixer -c 0 cset name='OUT2 Switch' off
amixer -c 0 cset name='spk switch' on
amixer -c 0 cset name='Speaker Switch' on
amixer -c 0 cset name='Headphone Switch' off
# 输入通道配置
amixer -c 0 cset name='Main Mic Switch' on
amixer -c 0 cset name='Headset Mic Switch' off
# PGA混音器配置
amixer -c 0 cset name='Left PGA Mux' 1
amixer -c 0 cset name='Right PGA Mux' 1
echo "已配置为扬声器模式"
}
# 函数:配置耳机模式
setup_headphone_mode() {
# SAI接口配置
amixer -c 0 cset numid=31,iface=MIXER,name='SAI1 Transmit SDO2 Source Select' 0
amixer -c 0 cset numid=4,iface=MIXER,name='SAI1 Receive SDIx Select' 1
amixer -c 0 cset numid=3,iface=MIXER,name='SAI1 Transmit SDOx Select' 1
# 输出通道配置
amixer -c 0 cset name='OUT1 Switch' off
amixer -c 0 cset name='OUT2 Switch' on
amixer -c 0 cset name='spk switch' off
amixer -c 0 cset name='Speaker Switch' off
amixer -c 0 cset name='Headphone Switch' on
# 输入通道配置
amixer -c 0 cset name='Main Mic Switch' off
amixer -c 0 cset name='Headset Mic Switch' on
# PGA混音器配置 (注意:耳机模式下使用0)
amixer -c 0 cset name='Left PGA Mux' 0
amixer -c 0 cset name='Right PGA Mux' 0
echo "已配置为耳机模式"
}
# 显示当前音频设备信息
show_audio_devices() {
echo "================================================"
echo "系统音频设备列表:"
echo "播放设备:"
aplay -l
echo "录制设备:"
arecord -l
echo "================================================"
}
# 主程序开始
show_audio_devices
# 解析命令行参数
MODE=${1:-speaker} # 默认为扬声器模式
case $MODE in
speaker|spk)
setup_speaker_mode
DEVICE_NAME="扬声器"
MIC_NAME="主麦克风"
;;
headphone|hp)
setup_headphone_mode
DEVICE_NAME="耳机"
MIC_NAME="耳机麦克风"
;;
*)
echo "错误:未知模式 '$MODE'"
echo "可用模式: speaker, headphone"
exit 1
;;
esac
# 执行实时录音播放测试
echo "开始测试: 使用${DEVICE_NAME}播放,${MIC_NAME}录音"
echo "================================================"
echo "测试说明:"
echo "1. 请对着${MIC_NAME}说话"
echo "2. 声音将从${DEVICE_NAME}实时播放"
echo "3. 按 CTRL+C 停止测试"
echo "================================================"
# 设置陷阱,确保退出时关闭音频流
trap 'echo "测试已停止"; exit 0' SIGINT
# 执行实时录放(CD质量:44.1kHz, 16-bit, 立体声)
arecord -v -f cd -Dhw:0 | aplay -v -Dhw:0 -f cd
# 处理可能的错误
if [ $? -ne 0 ]; then
echo "错误:音频设备操作失败!请检查:"
echo "1. 声卡设备是否存在 (hw:0)"
echo "2. 是否具有音频设备访问权限"
echo "3. 其他进程是否占用了音频设备"
echo "4. 物理连接是否正确(麦克风和耳机是否已插入)"
exit 1
fi
声卡配置
amixer
使用amixer可以获取和配置声卡的详细信息,以rockchip-es8388为例
#列出可以声卡0的所有可用控件
amixer controls -c 0
输出信息如下:
root@linaro-alip:/dfrobot-test# amixer controls -c 0
numid=64,iface=MIXER,name='Headphone Switch'
numid=56,iface=MIXER,name='PCM Volume'
numid=71,iface=MIXER,name='Mono Mux'
numid=61,iface=MIXER,name='ADC Data Select'
numid=50,iface=MIXER,name='Capture Digital Volume'
numid=51,iface=MIXER,name='Capture Mute'
numid=55,iface=MIXER,name='Capture Polarity'
numid=54,iface=MIXER,name='Playback De-emphasis'
numid=37,iface=MIXER,name='3D Mode'
numid=45,iface=MIXER,name='ALC Capture Attack Time'
numid=44,iface=MIXER,name='ALC Capture Decay Time'
numid=41,iface=MIXER,name='ALC Capture Function'
numid=43,iface=MIXER,name='ALC Capture Hold Time'
numid=39,iface=MIXER,name='ALC Capture Max PGA'
numid=40,iface=MIXER,name='ALC Capture Min PGA'
numid=48,iface=MIXER,name='ALC Capture NG Switch'
numid=46,iface=MIXER,name='ALC Capture NG Threshold'
numid=47,iface=MIXER,name='ALC Capture NG Type'
numid=38,iface=MIXER,name='ALC Capture Target Volume'
numid=42,iface=MIXER,name='ALC Capture ZC Switch'
numid=70,iface=MIXER,name='Differential Mux'
numid=67,iface=MIXER,name='Headset Mic Switch'
numid=52,iface=MIXER,name='Left Channel Capture Volume'
numid=72,iface=MIXER,name='Left Line Mux'
numid=75,iface=MIXER,name='Left Mixer Left Bypass Switch'
numid=57,iface=MIXER,name='Left Mixer Left Bypass Volume'
numid=74,iface=MIXER,name='Left Mixer Left Playback Switch'
numid=68,iface=MIXER,name='Left PGA Mux'
numid=66,iface=MIXER,name='Main Mic Switch'
numid=78,iface=MIXER,name='OUT1 Switch'
numid=79,iface=MIXER,name='OUT2 Switch'
numid=59,iface=MIXER,name='Output 1 Playback Volume'
numid=60,iface=MIXER,name='Output 2 Playback Volume'
numid=53,iface=MIXER,name='Right Channel Capture Volume'
numid=73,iface=MIXER,name='Right Line Mux'
numid=77,iface=MIXER,name='Right Mixer Right Bypass Switch'
numid=58,iface=MIXER,name='Right Mixer Right Bypass Volume'
numid=76,iface=MIXER,name='Right Mixer Right Playback Switch'
numid=69,iface=MIXER,name='Right PGA Mux'
numid=34,iface=MIXER,name='SAI1 Clk Auto Switch'
numid=5,iface=MIXER,name='SAI1 Receive Mono Slot Select'
numid=6,iface=MIXER,name='SAI1 Receive Mono Switch'
numid=29,iface=MIXER,name='SAI1 Receive PATH0 Source Select'
numid=28,iface=MIXER,name='SAI1 Receive PATH1 Source Select'
numid=27,iface=MIXER,name='SAI1 Receive PATH2 Source Select'
numid=26,iface=MIXER,name='SAI1 Receive PATH3 Source Select'
numid=4,iface=MIXER,name='SAI1 Receive SDIx Select'
numid=2,iface=MIXER,name='SAI1 Receive Start Mode Sel'
numid=11,iface=MIXER,name='SAI1 SDI0 Loopback I2S LR Channel Sel'
numid=15,iface=MIXER,name='SAI1 SDI0 Loopback I2S LR Switch'
numid=19,iface=MIXER,name='SAI1 SDI0 Loopback Src Select'
numid=23,iface=MIXER,name='SAI1 SDI0 Loopback Switch'
numid=10,iface=MIXER,name='SAI1 SDI1 Loopback I2S LR Channel Sel'
numid=14,iface=MIXER,name='SAI1 SDI1 Loopback I2S LR Switch'
numid=18,iface=MIXER,name='SAI1 SDI1 Loopback Src Select'
numid=22,iface=MIXER,name='SAI1 SDI1 Loopback Switch'
numid=9,iface=MIXER,name='SAI1 SDI2 Loopback I2S LR Channel Sel'
numid=13,iface=MIXER,name='SAI1 SDI2 Loopback I2S LR Switch'
numid=17,iface=MIXER,name='SAI1 SDI2 Loopback Src Select'
numid=21,iface=MIXER,name='SAI1 SDI2 Loopback Switch'
numid=8,iface=MIXER,name='SAI1 SDI3 Loopback I2S LR Channel Sel'
numid=12,iface=MIXER,name='SAI1 SDI3 Loopback I2S LR Switch'
numid=16,iface=MIXER,name='SAI1 SDI3 Loopback Src Select'
numid=20,iface=MIXER,name='SAI1 SDI3 Loopback Switch'
numid=25,iface=MIXER,name='SAI1 Sync In Switch'
numid=24,iface=MIXER,name='SAI1 Sync Out Switch'
numid=7,iface=MIXER,name='SAI1 Transmit Mono Switch'
numid=33,iface=MIXER,name='SAI1 Transmit SDO0 Source Select'
numid=32,iface=MIXER,name='SAI1 Transmit SDO1 Source Select'
numid=31,iface=MIXER,name='SAI1 Transmit SDO2 Source Select'
numid=30,iface=MIXER,name='SAI1 Transmit SDO3 Source Select'
numid=3,iface=MIXER,name='SAI1 Transmit SDOx Select'
numid=1,iface=MIXER,name='SAI1 Transmit Start Mode Sel'
numid=65,iface=MIXER,name='Speaker Switch'
numid=49,iface=MIXER,name='ZC Timeout Switch'
numid=63,iface=MIXER,name='hp switch'
numid=62,iface=MIXER,name='spk switch'
numid=35,iface=PCM,name='SAI1 PCM Read Wait Time MS'
numid=36,iface=PCM,name='SAI1 PCM Write Wait Time MS'
#列出每个控件的当前值和取值范围等详细信息
amixer contents -c 0
输出信息如下:
root@linaro-alip:/dfrobot-test# amixer contents -c 0
numid=64,iface=MIXER,name='Headphone Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=56,iface=MIXER,name='PCM Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=192,step=0
: values=192,192
| dBscale-min=-96.00dB,step=0.50dB,mute=1
numid=71,iface=MIXER,name='Mono Mux'
; type=ENUMERATED,access=rw------,values=1,items=3
; Item #0 'Stereo'
; Item #1 'Mono (Left)'
; Item #2 'Mono (Right)'
: values=0
numid=61,iface=MIXER,name='ADC Data Select'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'Left Right'
; Item #1 'Left Left'
; Item #2 'Right Right'
; Item #3 'Right Left'
: values=0
numid=50,iface=MIXER,name='Capture Digital Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=192,step=0
: values=192,192
| dBscale-min=-96.00dB,step=0.50dB,mute=1
numid=51,iface=MIXER,name='Capture Mute'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=55,iface=MIXER,name='Capture Polarity'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'Normal'
; Item #1 'L Invert'
; Item #2 'R Invert'
; Item #3 'L + R Invert'
: values=0
numid=54,iface=MIXER,name='Playback De-emphasis'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'None'
; Item #1 '32Khz'
; Item #2 '44.1Khz'
; Item #3 '48Khz'
: values=0
numid=37,iface=MIXER,name='3D Mode'
; type=ENUMERATED,access=rw------,values=1,items=8
; Item #0 'No 3D '
; Item #1 'Level 1'
; Item #2 'Level 2'
; Item #3 'Level 3'
; Item #4 'Level 4'
; Item #5 'Level 5'
; Item #6 'Level 6'
; Item #7 'Level 7'
: values=1
numid=45,iface=MIXER,name='ALC Capture Attack Time'
; type=INTEGER,access=rw------,values=1,min=0,max=15,step=0
: values=5
numid=44,iface=MIXER,name='ALC Capture Decay Time'
; type=INTEGER,access=rw------,values=1,min=0,max=15,step=0
: values=0
numid=41,iface=MIXER,name='ALC Capture Function'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'Off'
; Item #1 'Right'
; Item #2 'Left'
; Item #3 'Stereo'
: values=0
numid=43,iface=MIXER,name='ALC Capture Hold Time'
; type=INTEGER,access=rw------,values=1,min=0,max=15,step=0
: values=0
numid=39,iface=MIXER,name='ALC Capture Max PGA'
; type=INTEGER,access=rw------,values=1,min=0,max=7,step=0
: values=0
numid=40,iface=MIXER,name='ALC Capture Min PGA'
; type=INTEGER,access=rw------,values=1,min=0,max=7,step=0
: values=0
numid=48,iface=MIXER,name='ALC Capture NG Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=46,iface=MIXER,name='ALC Capture NG Threshold'
; type=INTEGER,access=rw------,values=1,min=0,max=31,step=0
: values=10
numid=47,iface=MIXER,name='ALC Capture NG Type'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Constant PGA Gain'
; Item #1 'Mute ADC Output'
: values=1
numid=38,iface=MIXER,name='ALC Capture Target Volume'
; type=INTEGER,access=rw------,values=1,min=0,max=15,step=0
: values=12
numid=42,iface=MIXER,name='ALC Capture ZC Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=70,iface=MIXER,name='Differential Mux'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Line 1'
; Item #1 'Line 2'
: values=0
numid=67,iface=MIXER,name='Headset Mic Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=52,iface=MIXER,name='Left Channel Capture Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=8,step=0
: values=3
| dBscale-min=0.00dB,step=3.00dB,mute=0
numid=72,iface=MIXER,name='Left Line Mux'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'Line 1L'
; Item #1 'Line 2L'
; Item #2 'NC'
; Item #3 'MicL'
: values=0
numid=75,iface=MIXER,name='Left Mixer Left Bypass Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=57,iface=MIXER,name='Left Mixer Left Bypass Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=0
| dBscale-min=-0.15dB,step=3.00dB,mute=0
numid=74,iface=MIXER,name='Left Mixer Left Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=68,iface=MIXER,name='Left PGA Mux'
; type=ENUMERATED,access=rw------,values=1,items=3
; Item #0 'Line 1L'
; Item #1 'Line 2L'
; Item #2 'DifferentialL'
: values=0
numid=66,iface=MIXER,name='Main Mic Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=78,iface=MIXER,name='OUT1 Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=79,iface=MIXER,name='OUT2 Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=59,iface=MIXER,name='Output 1 Playback Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=33,step=0
: values=27,27
| dBscale-min=-45.00dB,step=1.50dB,mute=0
numid=60,iface=MIXER,name='Output 2 Playback Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=33,step=0
: values=27,27
| dBscale-min=-45.00dB,step=1.50dB,mute=0
numid=53,iface=MIXER,name='Right Channel Capture Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=8,step=0
: values=3
| dBscale-min=0.00dB,step=3.00dB,mute=0
numid=73,iface=MIXER,name='Right Line Mux'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'Line 1R'
; Item #1 'Line 2R'
; Item #2 'NC'
; Item #3 'MicR'
: values=0
numid=77,iface=MIXER,name='Right Mixer Right Bypass Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=58,iface=MIXER,name='Right Mixer Right Bypass Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=0
| dBscale-min=-0.15dB,step=3.00dB,mute=0
numid=76,iface=MIXER,name='Right Mixer Right Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=69,iface=MIXER,name='Right PGA Mux'
; type=ENUMERATED,access=rw------,values=1,items=3
; Item #0 'Line 1R'
; Item #1 'Line 2R'
; Item #2 'DifferentialR'
: values=0
numid=34,iface=MIXER,name='SAI1 Clk Auto Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=5,iface=MIXER,name='SAI1 Receive Mono Slot Select'
; type=INTEGER,access=rw---R--,values=1,min=0,max=128,step=0
: values=0
| dBscale-min=0.00dB,step=1.28dB,mute=0
numid=6,iface=MIXER,name='SAI1 Receive Mono Switch'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Disable'
; Item #1 'Enable'
: values=0
numid=29,iface=MIXER,name='SAI1 Receive PATH0 Source Select'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'From SDI0'
; Item #1 'From SDI1'
; Item #2 'From SDI2'
; Item #3 'From SDI3'
: values=0
numid=28,iface=MIXER,name='SAI1 Receive PATH1 Source Select'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'From SDI0'
; Item #1 'From SDI1'
; Item #2 'From SDI2'
; Item #3 'From SDI3'
: values=1
numid=27,iface=MIXER,name='SAI1 Receive PATH2 Source Select'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'From SDI0'
; Item #1 'From SDI1'
; Item #2 'From SDI2'
; Item #3 'From SDI3'
: values=2
numid=26,iface=MIXER,name='SAI1 Receive PATH3 Source Select'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'From SDI0'
; Item #1 'From SDI1'
; Item #2 'From SDI2'
; Item #3 'From SDI3'
: values=3
numid=4,iface=MIXER,name='SAI1 Receive SDIx Select'
; type=ENUMERATED,access=rw------,values=1,items=5
; Item #0 'Auto'
; Item #1 'SDIx1'
; Item #2 'SDIx2'
; Item #3 'SDIx3'
; Item #4 'SDIx4'
: values=1
numid=2,iface=MIXER,name='SAI1 Receive Start Mode Sel'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Standalone'
; Item #1 'Chained'
: values=0
numid=11,iface=MIXER,name='SAI1 SDI0 Loopback I2S LR Channel Sel'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'L:MIC R:LP'
; Item #1 'L:LP R:MIC'
: values=0
numid=15,iface=MIXER,name='SAI1 SDI0 Loopback I2S LR Switch'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Disable'
; Item #1 'Enable'
: values=0
numid=19,iface=MIXER,name='SAI1 SDI0 Loopback Src Select'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'From SDO0'
; Item #1 'From SDO1'
; Item #2 'From SDO2'
; Item #3 'From SDO3'
: values=0
numid=23,iface=MIXER,name='SAI1 SDI0 Loopback Switch'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Disable'
; Item #1 'Enable'
: values=0
numid=10,iface=MIXER,name='SAI1 SDI1 Loopback I2S LR Channel Sel'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'L:MIC R:LP'
; Item #1 'L:LP R:MIC'
: values=0
numid=14,iface=MIXER,name='SAI1 SDI1 Loopback I2S LR Switch'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Disable'
; Item #1 'Enable'
: values=0
numid=18,iface=MIXER,name='SAI1 SDI1 Loopback Src Select'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'From SDO0'
; Item #1 'From SDO1'
; Item #2 'From SDO2'
; Item #3 'From SDO3'
: values=0
numid=22,iface=MIXER,name='SAI1 SDI1 Loopback Switch'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Disable'
; Item #1 'Enable'
: values=0
numid=9,iface=MIXER,name='SAI1 SDI2 Loopback I2S LR Channel Sel'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'L:MIC R:LP'
; Item #1 'L:LP R:MIC'
: values=0
numid=13,iface=MIXER,name='SAI1 SDI2 Loopback I2S LR Switch'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Disable'
; Item #1 'Enable'
: values=0
numid=17,iface=MIXER,name='SAI1 SDI2 Loopback Src Select'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'From SDO0'
; Item #1 'From SDO1'
; Item #2 'From SDO2'
; Item #3 'From SDO3'
: values=0
numid=21,iface=MIXER,name='SAI1 SDI2 Loopback Switch'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Disable'
; Item #1 'Enable'
: values=0
numid=8,iface=MIXER,name='SAI1 SDI3 Loopback I2S LR Channel Sel'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'L:MIC R:LP'
; Item #1 'L:LP R:MIC'
: values=0
numid=12,iface=MIXER,name='SAI1 SDI3 Loopback I2S LR Switch'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Disable'
; Item #1 'Enable'
: values=0
numid=16,iface=MIXER,name='SAI1 SDI3 Loopback Src Select'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'From SDO0'
; Item #1 'From SDO1'
; Item #2 'From SDO2'
; Item #3 'From SDO3'
: values=0
numid=20,iface=MIXER,name='SAI1 SDI3 Loopback Switch'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Disable'
; Item #1 'Enable'
: values=0
numid=25,iface=MIXER,name='SAI1 Sync In Switch'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'From IO'
; Item #1 'From Sync Port'
: values=0
numid=24,iface=MIXER,name='SAI1 Sync Out Switch'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'From CRU'
; Item #1 'From IO'
: values=0
numid=7,iface=MIXER,name='SAI1 Transmit Mono Switch'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Disable'
; Item #1 'Enable'
: values=0
numid=33,iface=MIXER,name='SAI1 Transmit SDO0 Source Select'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'From PATH0'
; Item #1 'From PATH1'
; Item #2 'From PATH2'
; Item #3 'From PATH3'
: values=0
numid=32,iface=MIXER,name='SAI1 Transmit SDO1 Source Select'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'From PATH0'
; Item #1 'From PATH1'
; Item #2 'From PATH2'
; Item #3 'From PATH3'
: values=1
numid=31,iface=MIXER,name='SAI1 Transmit SDO2 Source Select'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'From PATH0'
; Item #1 'From PATH1'
; Item #2 'From PATH2'
; Item #3 'From PATH3'
: values=0
numid=30,iface=MIXER,name='SAI1 Transmit SDO3 Source Select'
; type=ENUMERATED,access=rw------,values=1,items=4
; Item #0 'From PATH0'
; Item #1 'From PATH1'
; Item #2 'From PATH2'
; Item #3 'From PATH3'
: values=3
numid=3,iface=MIXER,name='SAI1 Transmit SDOx Select'
; type=ENUMERATED,access=rw------,values=1,items=5
; Item #0 'Auto'
; Item #1 'SDOx1'
; Item #2 'SDOx2'
; Item #3 'SDOx3'
; Item #4 'SDOx4'
: values=1
numid=1,iface=MIXER,name='SAI1 Transmit Start Mode Sel'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Standalone'
; Item #1 'Chained'
: values=0
numid=65,iface=MIXER,name='Speaker Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=49,iface=MIXER,name='ZC Timeout Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=63,iface=MIXER,name='hp switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=62,iface=MIXER,name='spk switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=35,iface=PCM,name='SAI1 PCM Read Wait Time MS'
; type=INTEGER,access=rw------,values=1,min=0,max=10000,step=1
: values=0
numid=36,iface=PCM,name='SAI1 PCM Write Wait Time MS'
; type=INTEGER,access=rw------,values=1,min=0,max=10000,step=1
: values=0
以numid为65的控件为例,详解如下:
numid=65,iface=MIXER,name='Speaker Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
-
基本信息部分:numid=65,iface=MIXER,name='Speaker Switch'
-
numid=65: 控件的数字标识符。这是ALSA系统内部用于唯一标识该控件的数字。
-
iface=MIXER: 表示这是一个混音器(MIXER)接口的控件。
-
name='Speaker Switch': 用户友好的控件名称,表示这是扬声器的开关控制。
-
属性描述部分: ; type=BOOLEAN,access=rw------,values=1
-
type=BOOLEAN: 控件类型为布尔值,表示它只有两种状态:开(ON)或关(OFF)。
-
access=rw------: 访问权限设置:
- r: 可读(readable)
- w: 可写(writable)
- ------: 没有其他特殊权限
-
values=1: 这个控件只有一个值(布尔类型只有开/关两种状态)
-
当前值部分:: values=off
-
这表示控件的当前状态为关闭(OFF)
由上述信息我们就可以知道:这是一个扬声器开关控件,用于启用或禁用扬声器输出,布尔类型意味着它只有两种状态:ON 或 OFF。
操作方式:
# 开启扬声器
amixer -c 0 cset name='Speaker Switch' on
# 或使用numid
amixer -c 0 cset numid=65 on
##关闭扬声器
amixer -c 0 cset name='Speaker Switch' off
# 或使用numid
amixer -c 0 cset numid=65 off
##查看该控制器的配置
amixer -c 0 cget name='Speaker Switch'
alsamixer
alsamixer是一个命令行图形化的配置声卡的工具,具体功能和amixer一致,用来查看和配置声卡的详细信息。
#打开配置界面
alsamixer
#打开card 0 的配置界面
alsamixer -Dhw:0
alsamixer图像化界面使用比较简单除面板中的F系列快捷键以外,通过左右键来切换控件,上下键来更换控件的值,其中面板中的"00"表示on,"MM"表示off。
配置完声卡后,若我们需要保存当前配置,可使用如下命令生成声卡配置文件,
alsactl store
该文件默认保存在/var/lib/alsa目录,文件名为asound.state。当我们需要使用该配置文件时,可使用如下命令使其生效。
alsactl restore
arecord
功能: 从系统的音频输入设备(如麦克风、线路输入、数字输入等)捕获音频数据,并将其保存为音频文件或输出到标准输出。
基本语法:
arecord [选项] [文件名]
- 常用选项:
-D [设备名称]: 指定要使用的录音设备。使用arecord -l或aplay -l列出可用设备。设备名称通常是类似hw:0,0或plughw:1,0的格式。如果省略,使用默认设备。-d [秒数]: 指定录音的持续时间(秒)。例如-d 10录 10 秒。-f [格式]: 指定音频样本格式。常见格式:cdr(16-bit little-endian, CD 质量) - 最常用dat(16-bit big-endian)S16_LE(16-bit signed little-endian)S24_LE(24-bit signed little-endian)S32_LE(32-bit signed little-endian)U8(8-bit unsigned)- 等等。使用
arecord --help查看完整列表。
-r [采样率]: 指定采样率(Hz)。常见值: 8000 (电话音质), 16000, 22050, 44100 (CD 音质), 48000 (DVD 音质), 96000, 192000。-c [通道数]: 指定声道数(1=单声道, 2=立体声)。-t [文件类型]: 指定输出文件的格式(容器)。常见值:wav(Microsoft WAV) - 最常用,有标准头voc(Creative Voice)raw(无头原始 PCM 数据) - 需要额外指定格式(-f)和采样率(-r)au(Sun AU)- 等等。如果文件名有扩展名(如
.wav),通常可以自动推断类型。
-v: 详细模式,显示录制过程中的信息(如电平)。--help: 显示帮助信息。
- 常用示例:
- 录制一个 10 秒的 CD 质量 WAV 文件:
arecord -D hw:0,0 -d 10 -f cd -t wav my_recording.wav
- 录制并直接播放(管道):
arecord -v -f cd -D hw:0 | aplay -v -D hw:0 -f cd
aplay
功能: 读取音频文件或标准输入中的音频数据,并通过系统的音频输出设备(如扬声器、耳机、线路输出等)播放出来。
基本语法:
aplay [选项] [文件名]
- 常用选项: (很多与
arecord类似)-D [设备名称]: 指定要使用的播放设备。使用aplay -l列出可用设备。-f [格式]: 当播放原始 PCM (raw) 文件时,必须指定音频样本格式(与录制时一致)。格式与arecord相同(cdr,S16_LE等)。-r [采样率]: 当播放原始 PCM (raw) 文件时,必须指定采样率。-c [通道数]: 当播放原始 PCM (raw) 文件时,必须指定声道数。-t [文件类型]: 指定输入文件的格式。如果文件名有扩展名(如.wav),通常可以自动推断。对于raw文件,必须指定-t raw并配合-f,-r,-c使用。-v: 详细模式,显示播放过程中的信息。-V: 显示 VU 表(音量表)。--help: 显示帮助信息。
- 常用示例:
- 播放一个 WAV 文件:
aplay -D hw:0,0 external_speakers.wav
网络通讯接口
以太网
RK3576支持两个以太网控制器,支持IEEE 802.3 10/100/1000M,带RGMII和RMII。
RK3576载板引出了两个1000M以太网网口。

相关命令行指令
# 安装带宽测试工具
sudo apt install iperf3
# 测试网络
iperf3 -c 192.168.199.129 -p 5011

WiFi
RK3576载板板载AP6256(2.4G/5G WiFi)模组,通过SDIO1连接到RK3576。

相关命令行指令
# 扫描可用 Wi-Fi 网络
nmcli device wifi list
# 连接 Wi-Fi
nmcli device wifi connect <SSID> password <密码>
# 指定网卡连接
nmcli device wifi connect <SSID> password <密码> ifname wlan0
# 断开 Wi-Fi
nmcli device disconnect wlan0

4G
RK3576载板板载了一个M.2 B KEY座子(在载板背部),可以连接4G模组,使用USB通讯。

quectel-CM已经内置到/dfrobot-test中可以使用 quectel-CM 工具进行 4G 拨号上网,以下是完整操作流程:
- 拨号上网
使用quectel-CM 进行拨号连接:
#跳转到dfrobot-test目录下
cd /dfrobot-test
# 基本拨号命令
sudo ./quectel-CM -s [APN名称] &
# 中国电信示例
sudo ./quectel-CM -s ctnet &
# 中国移动示例
sudo ./quectel-CM -s cmnet &
# 中国联通示例
sudo ./quectel-CM -s 3gnet &
- 连接验证
# 查看网络接口状态
ip addr show wwan0
# 测试网络连通性
ping -I wwan0 8.8.8.8
外部通用接口
USB
RK3576支持两路USB2.0接口和两路USB3.2 Gen1x1 OTG接口(其中USB3.2 Gen1x1 OTG1与PCIE1、SATA1复用端口)。
ACM载板引出了1路type-C USB3.2 Gen1 OTG接口,1路USB-A USB3.2 Gen1 Host接口,以及2路USB2.0接口(通过hub芯片扩展)

相关命令行指令
测试时根据自己的实际/dev目录情况挂载测试
# 切换成device设备
sudo echo device > /sys/kernel/debug/usb/23000000.usb/mode
# 切换成usb host
sudo echo host > /sys/kernel/debug/usb/23000000.usb/mode
# 挂载设备
sudo mount /dev/sda1 /mnt/
# 写入测试
dd if=/dev/zero of=/mnt/test.txt bs=1M count=1024 oflag=direct status=progress
# 读取测试
dd if=/mnt/test.txt of=/dev/null bs=1M count=1024 iflag=direct status=progress
# 删除创建的测试文件
sudo rm /mnt/test.txt
# 卸载挂载点
sudo umount /mnt
连接好U盘后:挂载存储设备 → 测试写入性能 → 测试读取性能 → 清理测试文件 → 卸载设备

存储接口
RK3576核心板板载有EMMC存储,RK3576载板板载有M.2 M KEY、TF卡、UFS存储接口(载板未焊接UFS存储芯片)
eMMC
RK3576核心板板载有eMMC存储,符合eMMC V5.1规范,兼容eMMC V4.51及以下标n。
相关命令行指令
测试时根据自己的实际/dev目录情况挂载测试
# 挂载设备
sudo mount /dev/sda1 /mnt/
# 写入测试
dd if=/dev/zero of=/mnt/test.txt bs=1M count=1024 oflag=direct status=progress
# 读取测试
dd if=/mnt/test.txt of=/dev/null bs=1M count=1024 iflag=direct status=progress
# 删除创建的测试文件
sudo rm /mnt/test.txt
# 卸载挂载点
sudo umount /mnt
挂载存储设备 → 测试写入性能 → 测试读取性能 → 清理测试文件 → 卸载设备

M.2 M KEY
RK3576载板板载有M.2 M KEY,最大支持29.5W电源输出,可连接SSD、算力卡,用于扩展系统存储容量和算力。

相关命令行指令
测试时根据自己的实际/dev目录情况挂载测试
# 挂载设备
sudo mount /dev/sda1 /mnt/
# 写入测试
dd if=/dev/zero of=/mnt/test.txt bs=1M count=1024 oflag=direct status=progress
# 读取测试
dd if=/mnt/test.txt of=/dev/null bs=1M count=1024 iflag=direct status=progress
# 删除创建的测试文件
sudo rm /mnt/test.txt
# 卸载挂载点
sudo umount /mnt
连接好SSD后:挂载存储设备 → 测试写入性能 → 测试读取性能 → 清理测试文件 → 卸载设备

TF
RK3576开发板板载一个TF Card 接口,用于可扩展系统存储容量,数据总线宽度为 4bits,支持 SD3.0,MMC ver4.51。

相关命令行指令
测试时根据自己的实际/dev目录情况挂载测试
# 挂载设备
sudo mount /dev/sda1 /mnt/
# 写入测试
dd if=/dev/zero of=/mnt/test.txt bs=1M count=1024 oflag=direct status=progress
# 读取测试
dd if=/mnt/test.txt of=/dev/null bs=1M count=1024 iflag=direct status=progress
# 删除创建的测试文件
sudo rm /mnt/test.txt
# 卸载挂载点
sudo umount /mnt
连接好TF卡后:挂载存储设备 → 测试写入性能 → 测试读取性能 → 清理测试文件 → 卸载设备

CPU & NPU
CPU跑分
RK3576集成4核Cortex A72处理器和4核Cortex A53处理器
- Cortex A72
- 每个核心有45KB L1指令缓存和32KB L1数据缓存
- 1MB统一L2缓存
- Cortex A53
- 每个核心有32KB L1指令缓存和32KB L1数据缓存
- 512KB统一L2缓存
测试脚本
该脚本在 /rockchip-test/cpu/cpu_stress_test.sh中,请在root权限下执行该脚本,可对CPU进行压力测试
. /rockchip-test/cpu/cpu_stress_test.sh
NPU推理测试
RK3576内置NPU支持INT4/INT8/INT16/FP16/BF16/TF32混合操作。此外,凭借其强大的兼容性,基于TensorFlow/MXNet/PyTorch/Caffe等一系列框架的网络模型可以轻松转换。
- 支持6TOPS@INT8的稀疏算例
- 支持双核协同工作或单核独立工作
- 支持INT4/INT8/INT16/FP16/BF16/TF32混合操作
- 支持1MB内部SRAM
- 支持多场景、多任务并行运行
- 支持深度学习框架:TensorFlow, Caffe, Tflite, Pytorch, Onnx NN, Android NN
测试脚本
该脚本在 /rockchip-test/npu2/npu_stress_test.sh中,请在root权限下执行该脚本,可看到NPU推理性能
. /rockchip-test/npu2/npu_stress_test.sh
