ATK-DLRV1126功能测试
本章将介绍如何测试ATK-DLRV1126开发板。这里说明了开发板的使用方法及测试方法。对开发有很大帮助。
3.1 LED测试
正点原子ATK-DLRV1126开发板上有配备两个LED。它们在底板原理图对应硬件管脚的关系如下表。在出厂系统里,我们把LED0作为心跳灯,一般用于指示系统是否正常运行,LED1作为用户LED。
管脚名称 | PI3_PD4 | PF3_PD6 |
正点原子ATK-DLRV1126 | GPIO3_PD4 | GPIO3_PD6 |
测试:
在出厂文件系统里,我们可以通过如下指令来控制LED和蜂鸣器的状态。输入后查看开发板上的LED的状态。
cat /sys/class/leds/sys-led/trigger //查看LED0的当前触发方式及支持的触发方式
echo none > /sys/class/leds/sys-led/trigger //改变LED0的触发模式
echo 1 > /sys/class/leds/sys-led/brightness //点亮LED0
echo 0 > /sys/class/leds/sys-led/brightness //熄灭LED0
echo none > /sys/class/leds/user-led/trigger //改变LED1的触发模式
echo 1 > /sys/class/leds/user-led/brightness //点亮LED1
echo 0 > /sys/class/leds/user-led/brightness //熄灭LED1
3.2 按键测试
正点原子ATK-DLRV1126开发板上有配备7个按键。其中4个按键是用ADC0模拟,按键按下去ADC0有不同的电压变化。
KEY4 | KEY5 | KEY6 | KEY7 | |
按键的名称 | RECOVERY | RIGHT | LEFT | MENU |
ADC0的值 | 0 | 228 | 456 | 682 |
测试:
在开发板串口终端下运行以下命令进行测试:
evtest
运行结果如下所示:
图3.2.1 evtest按键测试
在上图要我们选择测试的设备,本小节是按键测试,所以选择adc-keys。输入2即可和上图一样进入测试按键。我们可以直接按下KEY4-7就会有对应的打印信息出现。如下图所示:
图3.2.2 按键测试值说明
3.3 LCD测试
在出厂系统里,因为正点原子的屏幕排线有ADC管脚连接到CPU上,所以出厂系统会识别加载不同屏的分辨率。正点原子所使用的MIPI屏幕有2个,如下表所示:
屏幕尺寸 | 触摸芯片 | ADC值 |
5.5寸屏(720x1280) | gt911 | 0 |
5.5寸屏(1080x1920) | gt911 | 340 |
3.3.1 触摸测试
开发板启动后我们使用evtest指令查看触摸屏对应的触摸事件,与3.2小节一样的方法也可以测试屏幕是否正常触摸。先停止出厂的默认的Qt桌面界面,在设置APP里面点击退出按键即可退出界面。tslib是基于linuxfb显示的,在正点原子ATK-DLRV1126出厂系统里,配置了fb0与DRM接口:
ts_test
运行结果如下图所示:
3.3.3 背光测试
LCD屏幕的背光支持255个等级的pwm调节,亮度级数为 0~255,默认为200。数值越大,屏幕越亮。
cat /sys/class/backlight/backlight/max_brightness查看lcd最大亮度等级
cat /sys/class/backlight/backlight/brightness查看当前亮度等级
echo 255 > /sys/class/backlight/backlight/brightness修改当前亮度等级观察屏的亮度变化
cat /sys/class/backlight/backlight/brightness再查看当前亮度等级
3.4时钟测试
ATK-DLRV1126底板上有RTC时钟芯片PCF8563,属于芯片外部RTC时钟。若需要提高时钟的精度,需要用高精度的晶振。
请检查开发板底板上是否有安装RTC纽扣电池。也可以用万用表检查RTC电池有没有电,测出来是3.3v左右才是正常的。防止因RTC电池没电不能保存时间。(注意,电池属于易耗品,若没电请更换纽扣电池)
Linux系统分两个时钟,一个是system time(软件时钟),一个是hardware clock(硬件时钟)。使用date和hwclock命令可分别查看和设定系统时间和硬件时间。系统时钟掉电即会消失,RTC 时钟在有电池的情况下会长期运行。系统时钟会在系统重启时与 RTC 时钟同步。
查看系统时钟,使用指令date。
date
设置当前系统时钟
date -s "2022-10-28 21:00:00"
查看系统时钟
date
使用hwclock写入硬件时钟
hwclock -w
查看硬件时钟,检查是否是上面hwclock -w所设置的时钟
hwclock
3.5 音频测试
ATK-DLRV1126核心板的电源管理芯片rk809带有一颗音频芯片。板载麦克风可录音,底板背面接了一个2欧8瓦的喇叭,方便用户播放音乐。注意:喇叭和耳机是不能切换的,只能同时播放音乐。
3.5.1 播放音频测试
使用系统指令aplay或者rkmedia库可以播放音频文件。执行下面的指令播放音频文件。用户也可以自己拷贝音频文件到文件系统下使用指令aplay或者rkmedia库 + 音频文件播放。
aplay /demo/media/test.wav //使用aplay播放音乐
使用RK官方的库命令去播放音频,命令如下所示:
file 111.wav //确定文件格式
图3.5.1.1 音频文件格式
上图可以看出111.wav文件格式为WAV,16位格式采样,采样率为44100。
rkmedia_ao_test -h //查看此命令的使用方法,此命令只能播放PCM格式
图3.5.1.2 rkmedia_ao_test帮助查看
rkmedia_ao_test命令参数解释:
- -d:指定硬件的声卡,ATK-DLRV1126只有一个所以使用默认的就行。
- -r:指定采样率,默认为16000。
- -c:多少个声道,默认为2个。
- -s:要播放音频每一帧的采样点数,默认为1024。
- -v:播放声音的大小,默认为50。
- -i:播放的文件,必须指定。
- -f:播放音频格式采样,默认为s16。
结合图3.5.1.1和图3.5.1.2即可得出rkmedia_ao_test如何播放test.wav音频,命令如下所示:
rkmedia_ao_test -i /demo/media/test.wav -r 22050 -c 1
3.5.2 录制音频测试
ATK-DLRV1126底板上有个一路MIC输入,可以运行录音命令进行录音。录音前我们需要设置录音音量大小[0,120],比如这边我们把录音音量大小设置为120,命令如下所示:
amixer cset name='Digital Capture Volume' 120,120
录音命令如下所示:
arecord -r 44100 -f S16_LE -d 10 record.wav
arecord命令参数解释:
- -f S16_LE:以S16_LE格式采样,等于rkmedia_ao_test -f s16。
- -r 44100:采样率 44.1K
- -d 10:录音长度 10s
- record.wav:录音存生成的音频文件
录音也可以使用rkmedia_ai_test命令进行。播放上面录制的音频文件,备注:生成的文件大小与用户设置的格式及录制的长度有关。
aplay record.wav
3.6 摄像头测试
ATK-DLRV1126支持两路的MIPI CSI摄像头。最大支持14M(4416x3312)像素摄像头,正点原子为此开发板配套两款摄像头分为IMX415和IMX335。IMX415为8M像素摄像头可以录制4K(3840x2160)视频,IMX335为5M像素摄像头可以录制2K(2592x1944)视频。安装方法是摄像头背对开发板(两款摄像头MIPI CSI接口随便接做了兼容),如下图所示:
图3.6.1 安装摄像头正确方法
笔者这边摄像头接法为:MIPI CSI0 接IMX415,MIPI CSI1接IMX335摄像头。
3.6.1 摄像头视频播放
本小节是使用RKMedia接口去调用摄像头的硬件资源,RKMedia是RK官方为RV1126芯片内多媒体资源做了接口封装。如果启动了QT界面请先关闭QT程序。运行以下命令进行测试:
rkmedia_vi_vo_test 命令默认摄像头采集数据为1080x1920无法修改(两款摄像头都能用作测试),720P屏幕用以下命令:
rkmedia_vi_vo_test -a /etc/iqfiles/ -I 0 //播放MIPI CSI0
rkmedia_vi_vo_test -a /etc/iqfiles/ -I 1 //播放MIPI CSI1
rkmedia_vi_vo_test命令参数说明:
- -a /etc/iqfiles/:表示摄像头的配置文件在/etc/iqfiles/,RAW数据的摄像头需要配置文件。
- -I 0:0表示使用MIPI CSI0,1表示使用MIPI CSI1。
我们屏幕就会输出摄像头的数据,如果想结束摄像头的播放,可以在终端里按“Ctrl + c”结束程序。
1080P屏幕用以下命令:
rkmedia_vi_vo_test -a /etc/iqfiles/ -w 1080 -h 1920 -I 0 //播放MIPI CSI0
rkmedia_vi_vo_test -a /etc/iqfiles/ -w 1080 -h 1920 -I 1 //播放MIPI CSI1
rkmedia_vi_vo_test命令参数说明: - -w 1080:显示画面的高度。
- -h 1920:显示画面的宽度。
rkmedia_vi_vo_test默认的显示720x1280所以测试720P屏幕是不用指定-w和-h。
3.6.2 摄像头数据采集
- IMX415摄像头最大数据采集测试IMX415最大支持4K(3840x2160),用以下命令进行录制,看是否支持4K视频录制
rkmedia_vi_venc_test -h 2160 -w 3840 -a /etc/iqfiles/ -o output.h264 -I 0
rkmedia_vi_venc_test命令参数说明:
- -h 2160:摄像头采集数据的高度。
- -w 3840:摄像头采集数据的宽度。
- -a /etc/iqfiles/:表示摄像头的配置文件在/etc/iqfiles/。
- -o output.h264:output.h264存放摄像头采集数据的文件,格式为H264。
- -I 0:0表示使用MIPI CSI0,笔者CSI0接了IMX415所以可以采集摄像头4K数据。
运行结果如下图所示:
数据采集完了,在当前目录下生成output.h264文件。可以使用以下命令进行查看文件。
ls -l output.h264
如果想看采集后的数据,可以拷贝到电脑端进行播放。
- IMX335摄像头最大数据采集测试
IMX415最大支持2K(2592x1944),用以下命令进行录制,看是否支持2K视频录制。
rkmedia_vi_venc_test -h 2160 -w 3840 -a /etc/iqfiles/ -o output.h264 -I 1
3.7测试
ICM-20608简介:
ICM-20608 是 InvenSense 出品的一款 6 轴 MEMS 传感器,包括 3 轴加速度和 3 轴陀螺仪。
ICM-20608 尺寸非常小,只有 3x3x0.75mm,采用 16P 的 LGA 封装。ICM-20608 内部有一个 512字节的 FIFO。陀螺仪的量程范围可以编程设置,可选择±250,±500,±1000 和±2000°/s,加速度的量程范围也可以编程设置,可选择±2g,±4g,±4g,±8g 和±16g。陀螺仪和加速度计都是 16 位的 ADC,并且支持 I2C 和 SPI 两种协议,使用 I2C 接口的话通信速度最高可以达到 400KHz,使用 SPI 接口的话通信速度最高可达到 8MHz。I.MX6U-ALPHA 开发板上的 ICM-20608 通过 SPI 接口和 I.MX6U 连接在一起。ICM-20608 特性如下:
①、陀螺仪支持 X,Y 和 Z 三轴输出,内部集成 16 位 ADC,测量范围可设置:±250,±
500,±1000 和±2000°/s。
②、加速度计支持 X,Y 和 Z 轴输出,内部集成 16 位 ADC,测量范围可设置:±2g,±4g,±4g,±8g 和±16g。
③、用户可编程中断。
④、内部包含 512 字节的 FIFO。
⑤、内部包含一个数字温度传感器。
⑥、耐 10000g 的冲击。
⑦、支持快速 I2C,速度可达 400KHz。
⑧、支持 SPI,速度可达 8MHz。
ICM20608元器件在ATK-DLRV1126底板上的位置如下
图3.7.1在开发板的位置
ATK-DLRV1126底板上使用 SPI0接口连接了一个六轴传感器 ICM-20608。出厂系统已经把驱动模块加载进内核了。直接使用CAT命令进行测试:
cd /lib/modules/
insmod industrialio-triggered-buffer.ko
insmod inv-mpu6050.ko
insmod inv-mpu6050-spi.ko
有以下打印说明六轴已经驱动已经加载成功了,
/sys/bus/iio/devices/iio\:device1/ in_anglvel_xxxx下的节点都可以使用“cat”命令进行测试,这里只列出一个,命令测试:
cat /sys/bus/iio/devices/iio\:device1/in_anglvel_y_raw
用cat命令可以查看六轴传感器数据,结果如下图所示:
图3.7.2 读取出来的数据
3.8 USB测试
3.8.1 USB HOST测试
将一张FAT32格式的U盘用读卡器,直接插在ATK-DLRV1126底板的USB_HOST1或USB_HOST2或USB_HOST3的USB接口上,如下图。
图3.8.1.1 U盘挂载的信息
我们可以直接进入/media/usb0目录进入读写文件操作。
读速度测试:
hdparm -t /dev/sda1
图3.8.1.2读取速度评测
写速度测试:
time dd if=/dev/zero of=/media/usb0/test bs=1024k count=100 cnotallow=fdatasync
rm /media/usb0/test
图3.8.1.3 写速度评测
这里代表写入100MiB的文件,写入速度为13.9。实际上写入的文件越大求平均写入速度越接近实际值。
3.8.2 OTG从机测试
不知道ADB是啥?可以参考ATK-DLRV1126 SDK使用手册。ATK-DLRV1126底板上OTG接口,可当作ADB使用,我们使用一根USB Type-C连接线连接OTG接口到PC(电脑)。
图3.8.2.1 OTG连接(PC)电脑
3.8.3 OTG主机测试
在出厂系统启动后,插上鼠标,LCD屏上会显示鼠标指针,即可用鼠标操作Qt界面。
3.9 网络测试
ATK-DLRV1126底板上搭载一颗千兆网络芯片,CPU只支持一路千兆网络,自适应10/100/1000M。在文件系统使用如下指令测试网络,将网线插在网口处,确保网线能上网。查看网络获取的IP。
ifconfig
图3.9.1 eth0获取到IP地址
检查网络能否上网,如果有数据回复,则说明网络功能正常。按Ctrl+c终止指令。
ping www.baidu.com
图3.9.1百度
测试是否为千兆网络,注意要使用千兆网线,千兆路由器或者千兆交换机,PC(电脑)网卡必须是千兆网卡,否则测试出来的速度或识别出来的速度可能是百兆的!如下图,看到软件识别为1Gbps/Full代表是千兆网络。
图3.9.1识别为千兆网络
使用iperf3指令可测试千兆网络的连接速度
设置Ubuntu为服务器
iperf3 -s
ATK-DLRV1126为客户端,通过iperf3命令,输入服务器的IP即可。
iperf3 -c 192.168.6.190 -i 1
命令解析:
- -s:表示当前设备做服务器。
- -c:表示当前设备做客户端。
- 192.168.6.190:服务器的IP地址。
- -i:触发周期。
图3.9.3 iperf3测试结果
测试出来的Bitrate大概为900 Mbits/sec左右才是千兆网络速度(测试前请不要开启其他应用,以免影响测试速度),如果不是,请检查是否使用了千兆网线、PC电脑的网卡是不是千兆网卡,通过的路由器是不是千兆的等,不能有一个为百兆的设备,否则测试出来的是百兆网络。
3.10 板载SDIO WIFI测试
ATK-DLRV1126板载了一个AP6212芯片,此芯片是WIFI和蓝牙二合一。运行以下命令进行测试WIFI
connmanctl //进入WIIF操作终端
connmanctl> enable wifi //使能WIFI
命令运行结果如下所示:
图3.10.1 启动WIFI打印信息
继续进入connmanctl操作终端
connmanctl> scan wifi //开启WIFI扫描,可以多次扫描
connmanctl> scan wifi
connmanctl> agent on //注册代理
connmanctl> services //列出扫描到的WIFI列表
命令运行结果如下所示:
图3.10.2 列出扫描到的WIFI
从扫描到WIFI列表中,使用connect XXXX进行连接,再输入密码按回车确认。比如这边我要连接ZZK,运行结果如下命令:
connect wifi_08e9f6c925a6_5a5a4b_managed_psk
exit
图3.10.3 连接成功WIFI
连接成功后,可以使用ifconfig指令查看我们的wlan0所获取到IP地址。
图3.10.4 查看获取到的ip地址
ping百度测试连通性,也可以ping网关来测试WIFI的连通性。备注:如果ping不通百度,请重启开发板,不要插网线,重新连接WIFI即可!因为系统会默认只让一个网络设备连通外网。
ping www.baidu.com -I wlan0
ping 192.168.6.1 -I wlan0
图3.10.4 ping百度测试
3.11 板载蓝牙测试
测试ATK-DLRV1126的板载蓝牙,运行以下命令即可。
bt_init.sh
运行以下命令可以查看蓝牙的设备
hciconfig -a
3.12 TF(SD)卡或者EMMC测试
指令提示:
time命令常用于测量一个命令的运行时间,dd 用于复制,从 if(input file)文件读出,写到 of(output file)指定的文件,bs 是每次写块的大小,count 是读写块的数量。"if=/dev/zero"不产生 IO,即可以不断输出数据,因此可以用来测试纯写速度。
3.12.1 SD测试
开发板启动后将TF卡插到开发板底板卡槽处。开发板会将TF卡自动挂载。。(注意需要使用FAT32格式的TF卡,不能使用NTFS格式)。
使用df -h命令确定,SD挂载的分区。运行结果如下所示:
- 读取速度测试常用于测试硬盘读取速度指令有hdparm与dd,本次只演示hdparm读取TF卡的速度。(读取速度与你所用的TF卡类型有关)
hdparm -t /dev/mmcblk2p1
可以看出读取速度为85933KB/s。
图3.12.1.1 读取速度评测
- 写速度测试time dd if=/dev/zero of=/mnt/sdcard/test bs=1024k count=50cnotallow=fdatasync
测试完成删除“/mnt/sdcard”目录下的test文件。
3.12.2 EMMC测试
使用df -h命令确定,EMMC挂载的分区。运行结果如下所示:
- 读取速度测试hdparm -t /dev/mmcblk0p8
可以看出读取速度为132242KB/s。
- 写速度测试
time dd if=/dev/zero of=/userdata/test bs=1024k count=50 cnotallow=fdatasync
3.13 ADC测试
注意:ADC的采集电压绝对值最大是1.8V,请不要超过 1.8V,否则可能对芯片造成损坏。
ATK-DLRV1126底板上VR1处有一路ADC方便用户测试。电位器连接ADC3接口,如下图所示:
图3.13.1 电位器图
在Linux系统中,ADC采样属于IIO子系统下,可以通过SYSFS提供的接口来访问ADC控制器,使用的是10位精度。使用以下命令查看ADC采集的原始数据:
cat /sys/bus/iio/devices/iio\:device0/in_voltage3_raw
使用标准电压将 AD 转换的值转换为用户所需要的电压值。其计算公式如下:
Vref / (2^n-1) = Vresult / raw
注意:Vref为标准电压,n为AD转换的位数,raw为AD采集的原始数据,Vresult为用户所需要采集的电压。
Vresult = (1800mv * 492) /1023 = 865.68mv
通过公式我们可以计算出大概为865mv左右。
3.14 CPU温度
使用CAT命令查看CPU主频
cat /sys/class/thermal/thermal_zone0/temp //查看CPU0温度
cat /sys/class/thermal/thermal_zone1/temp //查看CPU1温度
48800表示48.8度。
3.15 CPU频率
命令如下所示:
cat /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq //查看当前运行CPU频率
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq //查看软件上最后一次设置的CPU频率
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies //查看支持的CPU频率
echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor //使能CPU性能模式,跑最高频
echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor //切换governor到userspace
echo 1008000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed //设置CPU频率 需要先切换到userspace
3.16 查看NPU驱动版本
命令如下所示:
dmesg | grep -i galcore
3.17 查看rknn_server版本
命令如下所示:
strings /usr/bin/rknn_server | grep build
3.18 查看librknn_runtime版本
命令如下所示:
strings /usr/lib/librknn_runtime.so | grep version
3.19 4G模块ME3630-W测试
正点原子ATK-DLRV1126底板上预留4G模块接口,ME3630-W,EC20等4G模块的安装。准备ME3630-W 4G模块,正点原子店铺有售卖。将ME3630-W 4G模块插到4G模块接口处,拧上螺丝。保证4G模块与座子接口吻合连接。请使用原装天线,把天线连接到4G模块的MAIN接口处。(温馨提示:4G模块在开封使用后,金手指容易氧化,时间长了上面会有一层氧化膜,如果多次实验不成功,请检查4G模块是否插好,或者是否有氧化膜。使用后请保存好4G模块!)
正确插入4G卡(支持移动、联通、电信4G卡)及插好模块,开发板启动后底板上的WWAN LED 会亮绿灯。如果WWAN LED绿灯未亮起,请检查模块是否正确连接插入,4G卡是否插入,天线是否接好,开发板是必须插上配带的12V电源,不能只用串口USB_TTL供电。
图3.19.1 4G模块天线SIM卡连接图
4G模块正常加载后,可以在/dev/下看到有3个ttyUSB*生成。4G模块通AT指令访问/dev/ttyUSB2进行通信。
ls /dev/ttyUSB*
图3.19.2 查看生成的/dev/ttyUSB*节点
3.19.1 pppd拨号上网
出厂文件系统/home/root/shell/4G目录下已经存放有测试4G模块相关脚本。新建一个目录,用于下面的脚本运行时生成DNS客户机配置文件。
mkdir /etc/ppp/ #如果已经存在,则不用重复创建
进入/home/root/shell/4G/目录下。
cd /demo/bin/4G/
使用ls指令可以看到此路径下有多个脚本文件,如果没有这样的文件,请及时更新系统固
图3.19.1.1查看脚本
其中尾缀10000表示适用于电信卡,10010表示适用于联通卡,10086表示适用于移动卡。
这里笔者以移动卡为例。执行下面ppp-on脚本,&的作用是后台运行
./ppp-on-10086 &
图3.19.1.2 ppp拨号上网获取到ip
使用ifconfig可查看4G模块的网络名称。
图3.19.1.3 查看4G网络节点名称
ping百度测试连通性,-I是指定网卡。看到如下结果,有数据回复表示连通。按“Ctrl +c”终止指令。
图3.19.1.4 ping百度测试连网络连接
3.19.2 ECM上网
在操作系统看来,CDC ECM设备就是一个虚拟以太网卡,包含标准网卡需要的MAC地址和IP地址。
ECM_DEMO_AUTO 和 ECM_DEMO是高新兴ECM上网的程序(我们不需要知道源码,因为它只是一个工具),指令简介如下:
ECM_DEMO -t up //开启ecm上网
ECM_DEMO -t down //关闭ecm上网
ECM_DEMO -t up -p /dev/ttyUSB1 -a 3gnet //开启的同时指定对应的apn和拨号端口
ECM_DEMO -t down -p /dev/ttyUSB1 //关闭ecm上网
参数可以查看源代码或者执行 ECM_DEMO -h 查看
ECM_DEMO_AUTO 和 ECM_DEMO参数是一样的,区别是ECM_DEMO执行完流程就会退出,ECM_DEMO_AUTO会一直运行并每隔一段时间会检查是否断网,断网了会自动重连
ECM_DEMO_AUTO默认会自动执行拨号流程,故适合做开机自启的程序。
要配置ECM模式上网,如果运行了pppd上网,请先执行disconnect脚本断开pppd拨号上网,再执行下面的指令配置成ECM模式链接网络。
./disconnect
./ECM_DEMO -t up
图3.19.2.1 断开ppp-on上网,执行ecm-on上网
使用ifconfig指令查看获取的ip地址,如果没有获取到ip地址使用udhcpc -i usb0获取。
ifconfig
图3.19.2.2 查看IP地址
我们可以指点usb0节点去ping百度。