本文旨在提供评估板接口功能的测试指导,涵盖外设接口功能验证及测试步骤,旨在帮助开发者和测试人员快速完成Linux系统下的产品方案验证与性能评估。
Windows开发环境:Windows10 64bit
Linux开发环境:VMware16.2.5、Ubuntu22.04.4 64bit
LinuxSDK开发包:LinuxSDK-[版本号](基于RK3506_LINUX6.1_SDK_Release_V1.1.0_20241128)
评估板系统版本:U-Boot-2017.09、Linux-6.1.99、Buildroot-2024.02
交叉编译工具链:
备注:本文基于256MByte NAND FLASH、256MByte DDR3配置核心板进行测试,不同配置型号核心板实测结果可能存在偏差,请以实际测试结果为准。
为便于阅读,下表对文档出现的关键术语进行解释;对于广泛认同释义的术语,在此不做注释。
为保障处理器使用寿命,满足更多工业应用场景要求,我司已将RK3506J/RK3506B处理器Cortex-A7核心最高主频默认配置为1.2GHz。
NAND FLASH配置评估板支持通过板载NAND FLASH和系统启动卡启动系统。eMMC配置评估板仅支持通过板载eMMC启动系统。
无特殊说明情况下,本文默认基于NAND FLASH配置评估板进行测试,通过板载NAND FLASH启动系统。默认使用USB TO UART0接口作为调试串口,并将评估板通过路由器与PC机进行网络连接。
评估板出厂时未固化最新系统镜像至NAND FLASH/eMMC存储。为确保您体验到我司提供的最新系统功能,建议您参考《Linux系统固化手册》文档,按照指引将最新系统镜像固化至NAND FLASH/eMMC。
本小节主要描述评估板设备树使用说明,以及汇总说明评估板接口性能测试结果。
由于部分外设功能之间存在引脚复用关系,因此需通过不同的设备树文件进行区分。我司已提供各项支持不同功能的内核镜像(已包含对应的设备树文件),位于产品资料“4-软件资料\Linux\Kernel\image\linux-6.1.99-[版本号]-[Git序列号]\”目录下,具体说明如下。
以下内核镜像适用于NAND FLASH配置评估板,同时支持系统启动卡。
以下内核镜像仅适用于eMMC配置评估板。
评估板接口功能测试结果汇总说明如下表所示。
评估板接入电源,将HDMI显示器与评估板HDMI OUT接口连接,并使用Type-C线将评估板的USB TO UART0调试串口连接至PC机。评估板硬件连接如下图所示。
备注:如需通过SD方式启动评估板(仅限NAND FLASH配置评估板),可参考《Linux系统固化手册》文档将Micro SD卡制作成系统启动卡,再将其插至Micro SD卡槽使用。
打开设备管理器,确认评估板USB TO UART0调试串口对应的COM端口号。
打开串口调试终端SecureCRT,选择对应的COM端口号,设置波特率为115200,8N1,无校验位。建立串口连接,如下图所示。
系统上电后,由CPU内部BootRom的引导代码依次从NAND FLASH、eMMC/SD卡、USB接口检测SPL启动程序,从第一个包含SPL启动程序的设备开始启动。SPL启动后,将优先从SD系统卡(非常规SD卡)引导U-Boot镜像,否则,将从原启动设备引导U-Boot镜像。
详情请查阅“Rockchip官方参考文档/Common/MMC/”目录下的官方参考文档《Rockchip_Developer_Guide_SD_Boot_CN》。
系统启动后将自动登录root用户,调试串口会打印如下类似启动信息。"Bootdev(atags):mtd 1"表示从NAND FLASH启动。
备注:"Bootdev(atags):mmc 0"表示从eMMC或系统启动卡启动。
核心板LED在系统启动过程中的变化说明如下:
评估板上电后,电源指示灯LED1点亮;U-Boot启动阶段点亮LED2;随后Linux内核启动运行时,LED2闪烁;Linux内核稳定运行时,LED2进行心跳闪烁。
同时,HDMI显示屏将显示如下界面。
评估底板用户可编程指示灯LED1对应的GPIO为GPIO4_B3。
进入评估板文件系统,执行如下命令控制LED亮灭。
Target# echo 1 > /sys/class/leds/user-led0/brightness
Target# echo 0 > /sys/class/leds/user-led0/brightness
评估底板包含1个系统复位按键RESET(KEY1),1个Maskrom按键Maskrom(KEY2),2个用户输入按键:USER1(KEY3)、USER2(KEY4)。
系统复位按键测试
评估板上电,按下系统复位按键RESET(KEY1),核心板板载LED2停止闪烁;松开按键后,系统将会重新启动。
执行如下命令,查看Maskrom按键对应的事件号。其中Maskrom(KEY2)对应的按键事件号为event0。
Target# cat /proc/bus/input/devices
执行如下命令,按下Maskrom(KEY2)进行按键测试,可看到如下打印信息,按"Ctrl + C"可终止测试命令。
Target# od -x /dev/input/event0
执行如下命令,查看用户输入按键对应的事件号。其中USER1(KEY3)对应的按键事件号为event1,USER2(KEY4)对应的按键事件号为event2。
Target# cat /proc/bus/input/devices
执行如下命令,按下USER1(KEY3)进行按键测试,可看到如下打印信息,按"Ctrl + C"可终止测试命令。
Target# od -x /dev/input/event1
执行如下命令,按下USER2(KEY4)进行按键测试,可看到如下打印信息,按"Ctrl + C"可终止测试命令。
备注:由于用户按键USER2(KEY4)引脚与SARADC复用,因此需将SARADC相关寄存器配置为GPIO功能。
Target# io -4 0xff4d8840 0x00f000f0 //配置为GPIO功能
Target# od -x /dev/input/event2
请将ML2032(3V可充)或CR2032(3V不可充)电池安装至RTC纽扣电池座,进行外部RTC测试。
备注:使用CR2032不可充电电池时,请勿将跳线帽插入J3接口。
Linux系统中分系统时钟(软件时钟)和RTC时钟(硬件时钟),系统时钟掉电即会消失,RTC时钟在安装电池的情况下会长期运行。
执行如下命令,可查看到外部RTC设备节点为"/dev/rtc0"。
Target# ls /dev/rtc*
Target# dmesg | grep rtc
查看系统时钟 Target# date
Target# date -s "2025-4-11 8:30:00" //设置时间:2025年4月11日8点30分00秒
Target# hwclock -w -f /dev/rtc0
Target# hwclock -f /dev/rtc0
将评估板断电,放置一断时间后,重新上电,执行如下命令查询系统时间,验证外部RTC功能。
Target# hwclock -f /dev/rtc0
本小节测试评估板板载外部硬件看门狗功能。
请先使用跳线帽将评估板的Watchdog(J1)选择ON档位,使能外部看门狗。此时将评估板上电,若不执行喂狗操作,系统将在大约35s内重启。
请执行如下命令开始喂狗,喂狗期间系统不会重启。
Target# echo 272 > /sys/class/gpio/export
Target# echo out > /sys/class/gpio/gpio272/direction
Target# while true; do echo 1 > /sys/class/gpio/gpio272/value;sleep 1;echo 0 > /sys/class/gpio/gpio272/value;sleep 1; done
按"Ctrl + C"停止喂狗,系统将在大约35s内重启。
DDR读写速度受DDR物料型号、测试方法、测试数据大小影响,测试速率以具体情况为准,如下测试数据仅供参考。
执行如下命令,查询DDR的可用容量。
Target# free -m
DDR读速度测试
进入评估板系统,执行如下命令对DDR进行读速度测试。
Target# bw_mem -P 3 -N 10 32M frd
本次测试从DDR读取32MByte数据,可看到本次测试的读速度为2121.13MB/s。
DDR写速度测试
执行如下命令对DDR进行写速度测试。
Target# bw_mem -P 3 -N 10 32M fwr
本次测试写入32MByte数据至DDR,可看到本次测试的写速度为2180.08MB/s。
执行如下命令对DDR进行拷贝速度测试。
Target# bw_mem -P 3 -N 10 32M fcp
本次测试拷贝32MByte数据至DDR,可看到本次测试的拷贝速度为1004.27MB/s。
执行如下命令对DDR进行Stream带宽测试。
Target# stream -M 32M -P 3 -N 10
参数解析:
copy:先访问一个内存单元读出其中的值,再将值写入至另一个内存单元;
scale:先从内存单元读出其中的值,作一个乘法运算,再将结果写入至另一个内存单元;
add:先从内存单元读出两个值,做加法运算,再将结果写入至另一个内存单元;
triad:表示将copy、scale、add三种操作组合进行测试。
本章节仅支持NAND FLASH配置评估板,若使用eMMC配置评估板可跳过此步骤。
请先参考《Linux系统固化手册》文档将系统镜像update-nand.img固化至NAND FLASH,再进行NAND FLASH读写测试。请通过NAND FLASH启动系统,执行如下命令,查看NAND FLASH分区信息。本次选取userdata作为测试分区,测试过程会擦除分区内容,请务必做好数据备份。
备注:建议优先选用userdata分区进行测试,若使用其他分区测试可能会导致文件系统数据损坏。
Target# cat /proc/mtd
NAND FLASH写速度测试
执行如下命令,擦除NAND FLASH分区。
Target# flash_erase /dev/mtd7 0 0
执行如下命令,进行NAND FLASH写速度测试。
Target# echo 3 > /proc/sys/vm/drop_caches
Target# time dd if=/dev/zero of=/dev/mtd7 bs=128k count=176
参数解析:
bs=128k:同时设置读入/输出的块大小为128k个字节。
count=176:拷贝176个块。
此处一共写入128 x 1024 x 176 / 1000 / 1000MByte = 23.0MByte测试数据至NAND FLASH,可看到本次测试NAND FLASH写速度约为:23.07MByte / 3.946s ≈ 5.8MB/s。
NAND FLASH读速度测试
若已对NAND FLASH进行写速率测试,需先执行如下命令擦除NAND FLASH分区,否则无法正常测试。
Target# flash_erase /dev/mtd7 0 0
执行如下命令,进行NAND FLASH读速度测试。
Target# echo 3 > /proc/sys/vm/drop_caches
Target# time dd if=/dev/mtd7 of=/dev/null bs=128k count=176
此处一共从NAND FLASH读取128 x 1024 x 176 / 1000 / 1000MByte = 23.0MByte测试数据,可看到本次测试NAND FLASH读速度约为:23.07MByte / 1.650s ≈ 13.9MB/s。
本章节仅支持eMMC配置评估板,若使用NAND FLASH配置评估板可跳过此步骤。
请先参考《Linux系统固化手册》文档将产品资料“4-软件资料\Linux\Makesdboot\”目录下的update-emmc.img系统镜像固化至eMMC,再进行eMMC读写测试。
评估板上电,系统将从eMMC启动。执行如下命令查看eMMC分区信息。
Target# fdisk -l
执行如下命令对eMMC设备进行写速度测试。
Target# fio -filename=/dev/mmcblk0 -ioengine=psync -iodepth=1 -iodepth_batch=1 -iodepth_low=1 -iodepth_batch_complete=1 -direct=1 -rw=write -bs=1024K -size=1024M -numjobs=1 -thread -group_reporting -name=write_job -ramp_time=1 -allow_mounted_write=1
此处一共写1024MByte测试数据至eMMC设备,可看到本次测试的eMMC设备写速度约为49.5MB/s。
执行如下命令对eMMC设备进行读速度测试。
Target# fio -filename=/dev/mmcblk0 -ioengine=psync -iodepth=1 -iodepth_batch=1 -iodepth_low=1 -iodepth_batch_complete=1 -direct=1 -rw=read -bs=1024K -size=1024M -numjobs=1 -thread -group_reporting -name=read_job -ramp_time=1
此处从eMMC设备中一共读出1024MByte数据,可看到本次测试的eMMC设备读速度约为65.2MB/s。
本章节仅支持NAND FLASH配置评估板,若使用eMMC配置评估板可跳过此步骤。
本次操作使用SanDisk品牌、128GByte容量的Micro SD卡来测试评估板Micro SD接口性能。不同的Micro SD卡以及不同的测试方法,对Micro SD接口测试结果将造成一定差异。
请先取出系统启动卡,评估板上电,系统将从NAND FLASH启动。再将系统启动卡插至评估板Micro SD卡槽,进入评估板文件系统执行如下命令,查看Micro SD卡信息。
Target# fdisk /dev/mmcblk0 -l
进入评估板系统,执行如下命令测试Micro SD接口写速度。
Target# fio -filename=/dev/mmcblk0 -ioengine=psync -iodepth=1 -iodepth_batch=1 -iodepth_low=1 -iodepth_batch_complete=1 -direct=1 -rw=write -bs=1024K -size=1024M -numjobs=1 -thread -group_reporting -name=write_job -ramp_time=1 -allow_mounted_write=1
此处一共写1024MByte测试数据至Micro SD卡,可看到本次测试的Micro SD接口写速度约为39.7MB/s。
Micro SD接口读速度测试
执行如下命令测试Micro SD接口读速度。
Target# fio -filename=/dev/mmcblk0 -ioengine=psync -iodepth=1 -iodepth_batch=1 -iodepth_low=1 -iodepth_batch_complete=1 -direct=1 -rw=read -bs=1024K -size=1024M -numjobs=1 -thread -group_reporting -name=read_job -ramp_time=1
此处一共读出1024MByte的数据,可看到本次测试的Micro SD接口读速度约为66.0MB/s。
由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。