12-硬件功能使用说明

1. 扩展引脚

开发板板载扩展引脚功能

  • 可用于连接外部设备(温度传感器、湿度传感器等)

  • 与其他电路板或模块通信(I2C、SPI、UART等)

  • 自定义GPIO功能

具体功能拓展详情查看引脚列表。

引脚列表标注了每个引脚的默认配置(带*号),同时给出该引脚所对应的可选择配置。

K1引脚列表

image-20240420181207097

K1B引脚列表

image-20240914152349051

K3引脚列表

image-20250312141333883

K8引脚列表

2. LED

开发板配备2个LED,绿色LED为电源指示灯,上电默认长亮

蓝色LED为系统工作心跳灯。若心跳灯持续闪烁,则表示内核正常运行。

另外,系统工作心跳灯可参考以下方面控制LED作为其他功能。

用户层控制LED状态

命令行控制LED状态

默认LED触发方式为heartbeat,此方式下LED状态不可人为控制。

若想要实现命令控制LED状态的话,可通过以下命令设置为none,然后再设置LED的brightness

$ echo none > /sys/class/leds/work-led/trigger
$ echo 1 > /sys/class/leds/work-led/brightness
$ echo 0 > /sys/class/leds/work-led/brightness

恢复心跳模式

$ echo heartbeat > /sys/class/leds/work-led/trigger

3. GPIO

开发板的扩展引脚中默认配置多路可控GPIO。

首先,通过扩展引脚章节,确认GPIO引脚位置、编号,参考以下步骤可对指定GPIO进行状态控制。

用户层控制GPIO电平

默认软件拓展引脚中配置为GPIO一般都注册为此方式控制

此方式可控制引脚输出高电平或低电平

查看GPIO注册列表

$ ls /sys/class/leds/

gpio1b0/ gpio1b2/ gpio1d4/ gpio3b6/ 
gpio1a4/ gpio1b1/ gpio1d0/ gpio3b5/ gpio4c4/

命令行控制GPIO

$ echo 1 > /sys/class/leds/gpio3b6/brightness
$ echo 0 > /sys/class/leds/gpio3b6/brightness

sys gpio控制

当GPIO没有任何使用时,可以通过 /sys/class/gpio 进行控制

PIN 脚计算

GPIO1-D0 (gpio1-24)为例:

每组GPIO有32位:0-32
A(0-7)B(8-15)C(16-23)D(24-31)
GPIO1-D0  计算 Pin num = 32 * 1 + 24 = 56

步骤一 确保GPIO没有任何使用

先将对应GPIO引脚注释,/sys/class/gpio/export 只能导入未注册的 gpio,将设备树对应IO取消使能

步骤二 编译镜像,重新烧录

步骤三 确认gpio未被注册

cat /sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl/pinmux-pins

未注册如下:pin 56 (gpio1-24): (MUX UNCLAIMED) (GPIO UNCLAIMED)

步骤四 对IO口进行控制

通过 /sys/class/gpio/export 注册 56并进行控制

// 注册
root@kickpi:~# echo  56 > /sys/class/gpio/export
// 查看是否生成
root@kickpi:~# ls /sys/class/gpio/
export  gpio56  gpiochip0  gpiochip352  unexport
// 注册后的结点内容
root@kickpi:~# ls /sys/class/gpio/gpio56
active_low  device  direction  edge  power  subsystem  uevent  value
root@kickpi:~#

通过结点下的内容控制 gpio , 常用如下

direction
	in / out
	echo in > /sys/class/gpio/gpio56/direction
	echo out > /sys/class/gpio/gpio56/direction
value
	0 / 1
	cat /sys/class/gpio/gpio56/value 		// 读取
	echo 1 > /sys/class/gpio/gpio56/value	// 配置高电平
	echo 0 > /sys/class/gpio/gpio56/value  // 配置低电平

4. UART

调试串口使用

查看DEBUG引脚

kickpi开发板调试串口一般内嵌到扩展引脚上,可通过扩展引脚章节查看对应的 DEBUG 引脚位置,一般按顺序排列为 UART_RX_DEBUGUART_TX_DEBUGGND

调试串口线说明

目前提供的调试串口线有四根线,红色的为VCC,绿色的为TX,白色的为RX,黑色的为GND,一般不需要连接VCC

image-20241231145656021

其他调试工具线同理,只需连接 TX RX GND即可

开发板调试串口接线

  • 调试串口位置接线说明

调试线TX连接主板上的RXRX连接主板上的TXGND连接主板上的GND,不需要连接VCC

image-20241231151848065

主板上的PIN:RX TX GND

调试线的PIN:TX RX GND

下载串口助手软件

串口助手软件 可自行下载,下面以Mobaxterm为例

Mobaxterm软件地址下载:https://mobaxterm.mobatek.net/

Mobaxterm操作步骤

  1. 新建会话窗口

  2. 选择会话窗口类型为serial

  3. 选择串口COM编号(打开Windows系统 设备管理器 -> 端口界面可查看COM编号)

  4. 选择串口波特率1500000

  5. 启动会话窗口

image-20230519113450846

普通串口使用

  1. 确认使用的串口号

  2. 查看对应的节点是否存在

$ ls /dev/ttyS*

例如 uart4 对应 /dev/ttyS4

  1. 使用 microcom 进行通信测试

Android默认安装有microcom

$ microcom -s 115200 /dev/ttyS4

如串口4查找到的节点为 /dev/ttyS4

-s 设置波特率为 115200

  1. 使用minicom验证:

Linux建议使用minicom

第一次安装需要配置一下:

  • minicom -s 将 Serial port setup>> F Hardware Flow Control 关掉

  • Esc按键或回车返回上一层选择Save setup as dfl保存

  • Exit from Minicom 退出

使用命令:

$ minicom -b 9600 -D /dev/ttyS3

默认显示:接收的内容会打印出来,发送的内容无打印

crt+A 进入控制 B-Z命令 Z为help

Ctrl+A X
退出程序

Ctrl+A W

启用/禁用自动换行,默认禁用

Ctrl+A E

启用/禁用输入显示,默认禁用

Ctrl+A C

清屏

或者使用echo直接发送

$ stty -F /dev/ttyAS3 -a 	//可以看默认波特率
$ stty -F /dev/ttyAS3 115200 	//可以设置
$ echo "123" > /dev/ttyAS3

5. USB

OTG模式切换

Android13.0系统 USB默认支持OTG模式,可自动切换主从功能

Linux系统 USB默认为HOST模式,暂不支持OTG

ADB调试

Android支持adb调试(type-c接口连接主机)

  • adb的主要命令如下:

adb devices

  • 说明:查看当前连接的设备, 连接到计算机的设备或者模拟器将会列出显示

  • adb start-server

  • 说明:启动adb

adb kill-server

  • 说明:关闭adb

adb shell

  • 说明:这个命令将登录设备的shell, 后面加直接运行设备命令, 相当于执行远程命令

adb push

  • 说明:此命令可以把电脑上的文件复制到开发板上

  • 举例: adb push hello.c /tmp/ 这样就把电脑上的hello.c文件复制到了开发板上的/tmp目录下

adb pull

  • 说明:此命令可以把开发板上的文件复制到电脑上

  • 举例: adb pull /tmp/hello.c ./ 将开发板上/tmp目录下的文件hello.c复制到当前目录

adb version

  • 说明:查看adb的版本

adb help

  • 说明:adb的帮助,有关更多命令详情,请使用adb help命令查看

6. PWM

RK3568 有4个PWM模块,每个PWM模块有4路PWM,一共有16路PWM

用户层配置PWM输出

Extend 40Pin接口 包含多路PWM,以PWM3通道为例,按照以下命令进入PWM配置

按照示例配置参数设置成功后,可用万用表测量PWM3引脚,正确电压应为1.6V左右

示例:设置PWM3通道,周期10000ns,占空比5000ns,极性为normal

PWM路径为/sys/class/pwm,pwmchip* 则按你使能顺序从0开始排序 设置pwmchip0如下:

$ echo 0 > /sys/class/pwm/pwmchip0/export
$ echo 10000 > /sys/class/pwm/pwmchip0/pwm0/period
$ echo 5000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle
$ echo normal > /sys/class/pwm/pwmchip0/pwm0/polarity
$ echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable
  • 如何确认 pwmchip 对应的 pwm

$ find /sys/devices/ | grep pwmchip | grep uevent
/sys/devices/platform/fd8b0020.pwm/pwm/pwmchip1/uevent
/sys/devices/platform/fd8b0010.pwm/pwm/pwmchip0/uevent
/sys/devices/platform/fd8b0030.pwm/pwm/pwmchip2/uevent

fd8b0010.pwm 为 dts 对应的节点

7. WIFI

K1开发板 配备RTL8822CS高性能WIFI模块

支持2.4G/5G双频段,WIFI5,2T2R

image-20231215153316513

图形界面配置WIFI

image-20240120091252595

命令连接WIFI

$ sudo nmcli dev wifi connect "you_WIFI_name" password "WiFi_password" ifname wlan0

you_WIFI_name : 你要连接的WiFi名称

WiFi_password :你要连接的WiFi密码

  • 连接后WiFi的信息在这个目录下:

$ ls /etc/NetworkManager/system-connections
wifi_oranth_5G.nmconnection
  • 取消对应WiFi自动连接,例如WiFi:wifi_oranth_5G

$ sudo rm -rf /etc/NetworkManager/system-connections/wifi_oranth_5G.nmconnection

命令行配置WIFI热点(AP)模式

查看是否支持AP模式

$ iw list | grep AP
Device supports AP-side u-APSD.
		 * AP
		 * AP/VLAN
		HE Iftypes: AP
		HE Iftypes: AP
		 * wake up on EAP identity request
		 * AP/VLAN
		 * #{ managed } <= 1, #{ AP, P2P-client, P2P-GO } <= 1, #{ P2P-device } <= 1,
	Driver supports full state transitions for AP/GO clients
	Driver/device bandwidth changes during BSS lifetime (AP/GO mode)
		 * AP: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
		 * AP/VLAN: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
		 * AP: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
		 * AP/VLAN: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0

AP/VLAN则可以表示硬件支持

#创建依赖
sudo apt-get install util-linux hostapd dnsmasq iptables iproute2 haveged 

# 创建虚拟网卡
sudo iw dev <wirelessname> interface add <virtualwlanname> type __ap  
# <wirelessname> 是真实无线网卡名,可通过ifconfig查看,<virtualwlanname>是虚拟的无线网卡名
#例如命令 
sudo iw dev wlan0 interface add wlo2 type __ap

#为虚拟网卡添加物理地址
sudo ip link set dev <virtualwlanname> address 22:33:44:55:66:00
# 随意填写,假如冲突则换一个,<virtualwlanname>是虚拟的无线网卡名
#例如命令:
sudo ip link set dev wlo2 address 22:33:44:55:66:00
#查看创建情况
sudo iw dev <virtualwlanname> info
sudo iw dev wlo2 info

# 输出内容类似
   Interface wlo2
	ifindex 5
	wdev 0x5
	addr 04:e2:b9:17:18:72
	type managed
	wiphy 0
	txpower 0.00 dBm
	multicast TXQ:
		qsz-byt	qsz-pkt	flows	drops	marks	overlmt	hashcol	tx-bytestx-packets
		0	0	0	0	0	0	0	0	0

注意:重启电脑后,这里创建的虚拟网卡就会失效

  1. 下载安装工具 create_ap

git clone https://github.com/oblique/create_ap
cd */create_ap
sudo make install
  1. 使用create_ap创建热点

sudo create_ap -c 11 <virtualwlanname> <wirelessname> <SSID> <password> 
#<wirelessname> 是你的无线网卡的姓名,<virtualwlanname> 虚拟网卡名,<SSID> <password>分别是创建的热点wifi名和密码

#例如 
sudo create_ap -c 11 wlo2 wlan0 m3 88888888
  1. 如果创建的热点卡住

开启热点时报如下错误:
#RTNETLINK answers: Device or resource busy

#ERROR: Maybe your WiFi adapter does not fully support virtual interfaces.
     #  Try again with --no-virt.
     
可以如下操作停止之前创建的热点,然后重启开启热点。
sudo create_ap --stop <virtualwlanname>  #<virtualwlanname> 虚拟网卡名

8. 蓝牙

K1 开发板配备了 RTL8822CS 高性能蓝牙模块。

9. SATA硬盘

K1开发板 配备一路SATA3.0 硬盘接口

硬件接线

SATA硬盘接线 分为硬盘供电接口、硬盘数据接口

特别注意:SATA硬盘供电接口是PH2.0端子,需要另外购买PH2.0端子转SATA电源线

电源部分包含5V、12V,必须确认线序正确后方可接入硬盘,否则会烧坏硬盘

保持开发板断电状态,接入硬盘后上电开机,Android/Linux会自动挂载硬盘分区

特别注意:硬盘尽量提前做好分区,并且分区格式

image-20231215153119268

10. M.2 SSD

K1开发板 配备一路PCIE3.0 M.2 SSD硬盘接口

Android系统 仅支持 NTFSFat32 格式分区

建议提前格式化固态硬盘,并且创建支持格式分区

若SSD分区非系统支持格式的话,也可按照系统提示,进行分区格式化,默认格式化为Fat32

硬件接线

M.2接口支持当下主流2280规格硬盘,并且配备固定螺柱

确保开发板断电状态,接入硬盘后上电开机

image-20231215153247719

性能测试

测试SSD型号:三星PM981 256G

测试结果:

平台
顺序写入速度
顺序读取速度

K1 Android13.0

243 MB/s

604 MB/s

K1 Debian11

若没特殊需求,建议使用Fat32格式分区

11. RTC

K1开发板配备HYM8563 RTC芯片,可实现掉电保存时间功能

硬件接线

测试RTC功能 必须外接纽扣电池,并且确认电池电量充足

image-20231215153345278

掉电保存时间测试

测试步骤:

  1. 开发板连接网络,自动同步正确网络时间

  2. 断开网络连接,并且断开开发板供电电源

  3. 等待若干时间后,重新接上开发板电源

  4. 若系统时间与当前时间一致,则RTC功能正常

12. LCD

K1开发板 配备三路LCD接口,分别是两路LVDS/MIPI接口(可复用)、一路eDP接口

三路LCD接口支持三屏异显/异触

默认出厂固件为多屏幕兼容镜像,已适配好三款屏幕

一个固件可以兼容任意一款LCD + HDMI输出,若需要两路以上LCD显示,则需要重新编译镜像

MIPI屏硬件接线

排线要求

引脚数30Pin、排线方向为同向

建议使用随屏附赠排线,否则有可能会导致屏幕损坏

接线示例图

image-20231215152820685
image-20231021170724701

注意:任何FPC接口外设插拔前,必须保证板卡完全断电

Single LVDS屏硬件接线

排线要求

引脚数30Pin、排线方向为同向

建议使用随屏附赠排线,否则有可能会导致屏幕损坏

接线示例图

image-20231215152838710
image-20231021171105002

注意:任何FPC接口外设插拔前,必须保证板卡完全断电

DUAL LVDS屏硬件接线

KICKPI K3支持一路Dual LVDS屏,采用CS5518芯片实现MIPI 转Dual LVDS功能

PS:Dual LVDS屏 与 MIPI/LVDS屏 互为复用,只能二选一

K3 Dual LVDS接口说明

image-20240517143001898

LVDS供电电压可选3.3V、5V、12V,必须根据规格书选择对应电压,否则会不能点亮或烧屏

eDP屏硬件接线

排线要求

引脚数30Pin、排线方向为同向

建议使用随屏附赠排线,否则有可能会导致屏幕损坏

接线示例图

image-20231021171209133
image-20231215152730038

注意:任何FPC接口外设插拔前,必须保证板卡完全断电

EDP屏 必须在屏端额外接12V电源

13. MIPI CAMERA

K1开发板支持单路MIPI CSI 4Lane 摄像头接口,最多可接两路摄像头

K3开发板支持双路MIPI CSI 4Lane 摄像头接口,最多可接四路摄像头

硬件接线

image-20231215153036711

排线要求

引脚数40Pin、排线方向为反向

建议使用随屏附赠排线,否则有可能会导致屏幕损坏

任何FPC接口外设插拔前,必须保证板卡完全断电

Debian gst-launch-1.0预览图像

Debian文件系统 内置gst-launch-1.0测试脚本

/rockchip-test/camera/camera_rkisp_test.sh

根据连接摄像头数量不同,会导致/dev/video节点编号偏移,使脚本不能打开正确的摄像头

此时可修改脚本指定正确的video编号,device=/dev/video-camera0

14. HDMI in

K8 支持一路HDMI输入,目前驱动代码中EDID支持的分辨率包括:

3840x2160P60、3840x2160P50、3840x2160P30、3840x2160P25、3840x2160P24、
1920x1080P60、1920x1080P50、1920x1080P30、1920x1080i60、1920x1080i50、
1600x900P60、1440x900P60、1280x800P60、
1280x720P60、1280x720P50、1024x768P60、
720x576P50、720x480P60、720x576i50、720x480i60、
800x600P60、640x480P60

支持输入的格式包括:

RGB888、YUV420、YUV422、YUV444

16. GPU

GPU使⽤率

$ cat /sys/devices/platform/*gpu/utilisation

移动鼠标或窗口或进行GPU测试,可以查看GPU使⽤率来确定硬加速是否有⽤起来

Debian GLmark2性能测试

RK Linux文件系统内置glmark2-es性能测试工具

板卡连接显示设备,打开虚拟终端 或 调试串口终端,执行以下命令开始GPU性能测试

$ source /rockchip-test/gpu/test_fullscreen_glmark2.sh

# 终端打印最终测试成绩分数
=======================================================
                                  glmark2 Score: 471
=======================================================

外接显示屏可查看GPU渲染图形(得分约49),调试串口可查看GPU渲染日志(得分约203)

根据GPU性能差异,大概需要等待10分钟左右可完成性能测试

K8 测试结果

$ source /rockchip-test/gpu/test_fullscreen_glmark2.sh
=======================================================
                                  glmark2 Score: 676 
=======================================================

接入HDMI_OUT0,测试结果为 676

17. NPU

RK3568 配备0.8T算力NPU单元

查看NPU使用情况

$ watch cat /sys/kernel/debug/rknpu/load
$ cat /sys/kernel/debug/rknpu/load

Debian 图像分类

打开虚拟终端 或 调试串口终端,执行以下命令开始NPU功能测试

$ source /rockchip-test/npu2/npu_stress_test.sh

rknn_api/rknnrt version: 1.4.0 (a10f100eb@2022-09-09T09:07:14), driver version: 0.8.2
model input num: 1, output num: 1
input tensors:
  index=0, name=input, n_dims=4, dims=[1, 224, 224, 3], n_elems=150528, size=150528, fmt=NHWC, type=INT8, qnt_type=AFFINE, zp=0, scale=0.007812
output tensors:
  index=0, name=MobilenetV1/Predictions/Reshape_1, n_dims=2, dims=[1, 1001, 0, 0], n_elems=1001, size=1001, fmt=UNDEFINED, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003906
custom string: 
Begin perf ...
   0: Elapse Time = 4.95ms, FPS = 201.82
   1: Elapse Time = 4.84ms, FPS = 206.61
   2: Elapse Time = 4.86ms, FPS = 205.85
   3: Elapse Time = 4.79ms, FPS = 208.68
   4: Elapse Time = 4.82ms, FPS = 207.47
   5: Elapse Time = 4.82ms, FPS = 207.25
   6: Elapse Time = 4.81ms, FPS = 207.77
   7: Elapse Time = 4.82ms, FPS = 207.25
   8: Elapse Time = 4.82ms, FPS = 207.34
   9: Elapse Time = 4.82ms, FPS = 207.60
---- Top5 ----
0.984375 - 156
0.007812 - 155
0.003906 - 205
0.000000 - 0
0.000000 - 1

Begin perf... 后的内容展示了模型多次运行的性能数据:

  • 每次记录了运行的序号以及对应的耗时(Elapse Time)和每秒处理帧数(FPS)。例如,0: Elapse Time = 2.85ms, FPS = 351.12表示第 1 次运行模型推理时,总共花费了 2.85 毫秒的时间,由此计算出每秒可以处理 351.12 帧的数据(FPS 的计算方式就是 1000 除以每次的耗时,单位换算后得到每秒的帧数)。

---- Top5 ---- 部分呈现了模型推理输出结果中概率排名前 5 的类别及其对应的概率值和类别编号:

  • 0.935059 - 156表示模型认为输入的数据(比如可能是一张图像)最有可能属于编号为 156 的类别,其对应的概率高达 0.935059,这个概率值相对较高,说明模型对该判断有比较高的置信度。

  • 后续的0.057037 - 1550.003881 - 2050.003119 - 2840.000172 - 285分别列出了概率排名第 2 到第 5 的类别编号及其概率值,这些概率值依次递减,表明模型对它们属于相应类别判断的把握程度也逐渐降低。

K8 NPU 压力测试结果

接入HDMI_OUT0

$ source /rockchip-test/npu2/npu_stress_test.sh
...
Begin perf ...
   0: Elapse Time = 2.32ms, FPS = 431.97
   1: Elapse Time = 2.29ms, FPS = 437.64
   2: Elapse Time = 2.22ms, FPS = 450.05
   3: Elapse Time = 2.17ms, FPS = 461.47
   4: Elapse Time = 2.10ms, FPS = 475.51
   5: Elapse Time = 2.15ms, FPS = 464.25
   6: Elapse Time = 2.08ms, FPS = 481.70
   7: Elapse Time = 2.09ms, FPS = 478.24
   8: Elapse Time = 2.09ms, FPS = 479.62
   9: Elapse Time = 2.20ms, FPS = 454.13
---- Top5 ----
0.984375 - 156
0.007812 - 155
...

从打印信息可知平均每秒处理 450 帧的数据

Debian 目标检测

检测数据流 可从摄像头 或 视频文件获取

检测结果直接输出到显示屏上,所以需要连接显示屏才能看到结果

$ source /rockchip-test/npu2/rknn_yolov5_demo_Linux.sh

18. MPP

Rockchip MPP提供mpi_enc_test、mpi_dec_test等测试工具

可直接命令行调用MPI进行硬件编解码测试

硬编码测试

  • 编码H.264 4096x2160 100帧测试

$ mpi_enc_test -w 4096 -h 2160 -t 7 -o ./test.h264 -n 100
  • 编码H.265 4096x2160 100帧测试

$ mpi_enc_test -w 4096 -h 2160 -t 16777220 -o ./test.h265 -n 100

参数解析:

​ mpi_enc_test MPP编码测试工具

​ -w 4096 -h 2160 指定编码视频分辨率为4096x2160

​ -t 16777220 指定编码类型为H.265

​ -o ./test.h265 指定编码内容输出文件

​ -n 100 指定编码帧数

硬解码测试

  • 解码H.264视频100帧测试

$ mpi_dec_test -t 7 -i test.h264 -n 100
  • 解码H.265视频100帧测试

$ mpi_dec_test -t 16777220 -i test.h265 -n 100

K8 编解码测试结果

编码 H.264 4096x2160 100帧测试 fps 44.65
编码 H.265 4096x2160 100帧测试 fps 45.53
解码 H.264 4096x2160 100帧测试 fps 206.22
解码 H.265 4096x2160 100帧测试 fps 386.86

chromium视频测试

板卡连接显示设备,打开虚拟终端 或 调试串口终端,执行以下命令开始chromium视频测试

$ source /rockchip-test/chromium/test_chromium_with_video.sh

19. ADC

RK3568 配备8路ADC,K1开发板引出ADC3通道到扩展引脚座

读取ADC3值

$ cat /sys/bus/iio/devices/iio\:device0/in_voltage3_raw

20. WatchDog

RK3568配备一路看门狗,上电默认开启开门狗,内核线程自动喂狗

用户层配置手动喂狗

可用以下命令修改为用户层手动喂狗,并且每44秒必须重复执行以下命令喂狗,否则系统重启

$ echo A > /dev/watchdog

21. FAN

风扇供电电压为5V,连接方式如下图所示

image-20231215152208539

22. 4G通讯模块

目前适配支持 Quecte EC20、Quecte EC200M-CN 型号模块

硬件连接方式

image-20231215153217640
1733198014256
/etc/ppp/peers/quectel-pppd.sh /dev/ttyS4
image-20241203115419752

23. 喇叭

image-20231215153423975

Linux 播放测试

alsa工具

Linux 系统一般可以通过alsa工具控制声卡配置以及音频播放,目前Linux系统软件已内置相关工具。

如无相关工具,可执行下列命令进行安装

$ sudo apt install alsa-utils

安装后 aplay 、arecord 、amixer 等命令可使用

工具使用说明

$ amixer -h
Usage: amixer <options> [command]

Available options:
  -h,--help       this help
...

$ aplay -h
Usage: aplay [OPTION]... [FILE]...

-h, --help              help
    --version           print current version
-l, --list-devices      list all soundcards and digital audio devices
...

$ arecord -h
Usage: arecord [OPTION]... [FILE]...

-h, --help              help
    --version           print current version
-l, --list-devices      list all soundcards and digital audio devices
-L, --list-pcms         list device names
...

使用命令 -h 即可查看对应命令的使用说明

列举查看声卡

$ cat /proc/asound/cards
 0 [rockchiphdmiin ]: rockchip_hdmiin - rockchip,hdmiin
                      rockchip,hdmiin
 1 [rockchipes8388 ]: rockchip-es8388 - rockchip-es8388
                      rockchip-es8388
 2 [rockchiphdmi0  ]: rockchip-hdmi0 - rockchip-hdmi0
                      rockchip-hdmi0
 3 [rockchiphdmi1  ]: rockchip-hdmi1 - rockchip-hdmi1
                      rockchip-hdmi1

喇叭声卡为 es8388,即声卡1

查看声卡控制配置列表

$ amixer -c 1
Simple mixer control 'Headphone',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'Speaker',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [on]
...

$ amixer controls -c 1
numid=36,iface=CARD,name='Headphone Jack'
numid=37,iface=CARD,name='Headset Mic Jack'
numid=38,iface=MIXER,name='Headphone Switch'
numid=31,iface=MIXER,name='PCM Volume'
...

获取声卡指定配置

$ amixer cget -c 1 name='Speaker Switch'
numid=39,iface=MIXER,name='Speaker Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=on

设置声卡指定配置

$ amixer sget -c 1 numid=39,iface=MIXER,name='Speaker Switch' 1

喇叭播放测试

$ amixer cset -c 1 name='Speaker Switch' 1
$ amixer cset -c 1 name='Output 2 Playback Volume' 20 20
$ amixer cset -c 1 name='Right Mixer Right Playback Switch' 1
$ amixer cset -c 1 name='Left Mixer Left Playback Switch' 1
$ aplay -D hw:1,0 1.wav

amixer 配置适用于 es8388 声卡

耳机播放测试

$ amixer cset -c 1 name='Headphone Switch' 1
$ amixer cset -c 1 name='Output 1 Playback Volume' 20 20
$ aplay -D hw:1,0 1.wav

amixer 配置适用于 es8388 声卡

24. 麦克风

Linux 录音测试

MIC录音测试

$ amixer cset -c 1 numid=25,iface=MIXER,name='Capture Digital Volume' 192 192 
$ amixer cset -c 1 numid=26,iface=MIXER,name='Capture Mute' 0
$ amixer cset -c 1 numid=27,iface=MIXER,name='Left Channel Capture Volume' 3
$ amixer cset -c 1 numid=28,iface=MIXER,name='Right Channel Capture Volume' 3
$ amixer cset -c 1 numid=42,iface=MIXER,name='Left PGA Mux' 2
$ amixer cset -c 1 numid=43,iface=MIXER,name='Right PGA Mux' 2
$ amixer cset -c 1 numid=44,iface=MIXER,name='Differential Mux' 1
$ arecord -D hw:1,0 a.wav -r 48000 -f S16_LE -d 5 -c 2

amixer 配置适用于 es8388 声卡

Headset MIC录音测试

$ amixer cset -c 1 numid=25,iface=MIXER,name='Capture Digital Volume' 192 192 
$ amixer cset -c 1 numid=26,iface=MIXER,name='Capture Mute' 0
$ amixer cset -c 1 numid=27,iface=MIXER,name='Left Channel Capture Volume' 3
$ amixer cset -c 1 numid=28,iface=MIXER,name='Right Channel Capture Volume' 3
$ amixer cset -c 1 numid=42,iface=MIXER,name='Left PGA Mux' 2
$ amixer cset -c 1 numid=43,iface=MIXER,name='Right PGA Mux' 2
$ amixer cset -c 1 numid=44,iface=MIXER,name='Differential Mux' 0
$ arecord -D hw:1,0 a.wav -r 48000 -f S16_LE -d 5 -c 2

amixer 配置适用于 es8388 声卡

26. CAN

适用平台:RK3568 / RK3576 / RK3588

RK部分芯片支持原生CAN接口,通常引出到扩展引脚上,具体位置可查看扩展引脚部分

芯片原生CAN接口 不可直接使用,需要增加外部电平转接电路

查询当前⽹络设备

$ ifconfig -a

CANFD配置

关闭CAN

$ ip link set can0 down

设置比特率500KHz

$ ip link set can0 type can bitrate 500000

打印can0信息

$ ip -details -statistics link show can0

启动CAN

$ ip link set can0 up

CAN FD发送

发送(标准帧,数据帧,ID:123,date:DEADBEEF):

$ cansend can0 123#DEADBEEF

发送(标准帧,远程帧,ID:123)

$ cansend can0 123#R

CAN接收

开启打印,等待接收

$ candump can0

回环模式测试

启动can后,io输⼊命令开启回环⾃测(基地址根据实际dts启动的can配置)

$ io -4 0xfea60000 0x8415

0xfea60000 为 K8 CAN0 的 dts 节点

回环模式下,cansend 后 candump 可以接收。

示例

  • 终端1

开启回环模式测试,并监听 can

root@linaro-alip:/# io -4 0xfea60000 0x8415
root@linaro-alip:/# candump can0
  can0  123   [4]  DE AD BE EF
  • 终端2

发送命令

root@linaro-alip:/# cansend can0 123#DEADBEEF

27. SPI

工具位置

$ kernel/tools/spi/spidev_test.c

编译

$ make CROSS_COMPILE=~/path-to-toolchain/gcc-xxxxx-toolchain/bin/xxxx-linux-gnu-

选择 kernel 所⽤ CROSS_COMPILE

回环模式测试

$ spidev_test -D /dev/spidev0.0 -v -l -p "hello"

主控做 Master 端

MISO、MOSI 进行短接

  • 示例

root@linaro-alip:/data# ./spidev_test -D /dev/spidev0.0 -v -l -p "hello"
spi mode: 0x24
bits per word: 8
max speed: 500000 Hz (500 kHz)
TX | 68 65 6C 6C 6F __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __  |hello|
RX | 68 65 6C 6C 6F __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __  |hello|

28. PCI-E

适用平台:KICKPI-K8 RK3588 Android/Linux

目前仅有RK3588支持一路4Lane PCIE3.0接口,理论传输速率可达3.938GB/s

标准PCI-E扩展口可外接市面上通用的PCIE USB扩展卡、PCIE 以太网扩展卡、PCIE SSD扩展卡

PCIE to USB 3.0测试

  • 硬件接线(PCIE X1模块)

image-20250103184113556
  • 软件测试

PCIE to SSD测试

  • 硬件接线(PCIE X4模块)

image-20250103184238105
  • 软件测试

29、以太网

适用平台:全平台

iperf测试方法

待完善

30、KEY测试

  • Android测试使用命令getevent:

console:/ # getevent
add device 1: /dev/input/event3
  name:     "sunxi-ir-uinput"
add device 2: /dev/input/event2
  name:     "gt9xxnew_ts"
add device 3: /dev/input/event0
  name:     "sunxi-ir"
add device 4: /dev/input/event1
  name:     "gpio-keys"
/dev/input/event2: 0001 014a 00000001
/dev/input/event2: 0003 0035 00000247
/dev/input/event2: 0003 0036 000001c3
/dev/input/event2: 0003 0030 0000001e
/dev/input/event2: 0003 0032 0000001e
  • Linux测试使用evtest:

root@ubuntu2004:~# evtest 
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:      fe6e0030.pwm
/dev/input/event1:      rk805 pwrkey
/dev/input/event2:      rockchip-rk809 Headset
/dev/input/event3:      hdmi_cec_key
/dev/input/event4:      adc-keys
/dev/input/event5:      gpio-keys
Select the device event number [0-5]: 5
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Input device name: "gpio-keys"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 2 (KEY_1)
Key repeat handling:
  Repeat type 20 (EV_REP)
    Repeat code 0 (REP_DELAY)
      Value    250
    Repeat code 1 (REP_PERIOD)
      Value     33
Properties:
Testing ... (interrupt to exit)
Event: time 1699275783.300685, type 1 (EV_KEY), code 2 (KEY_1), value 1
Event: time 1699275783.300685, -------------- SYN_REPORT ------------
Event: time 1699275783.573759, type 1 (EV_KEY), code 2 (KEY_1), value 2
Event: time 1699275783.573759, -------------- SYN_REPORT ------------
Event: time 1699275783.610429, type 1 (EV_KEY), code 2 (KEY_1), value 2
Event: time 1699275783.610429, -------------- SYN_REPORT ------------
Event: time 1699275783.647094, type 1 (EV_KEY), code 2 (KEY_1), value 2
Event: time 1699275783.647094, -------------- SYN_REPORT ------------
Event: time 1699275783.647094, type 1 (EV_KEY), code 2 (KEY_1), value 0
Event: time 1699275783.647094, -------------- SYN_REPORT ------------

Last updated