
本文旨在提供评估板接口功能的测试指导,涵盖PS端外设接口功能验证及测试步骤(PL端外设请参考PL端工程进行测试),旨在帮助开发者和测试人员快速完成Linux系统下的产品方案验证与性能评估。
Windows开发环境:Windows10 64bit
Linux开发环境:VMware16.2.5、Ubuntu22.04.4 64bit
LinuxSDK开发包:LinuxSDK-[版本号](基于SDK_2025.1)
评估板系统版本:U-Boot-2021.01、Linux-6.1.111、Buildroot-2022.02
备注:本文基于8GByte eMMC、1GByte DDR3配置核心板进行测试,不同配置型号核心板实测结果可能存在偏差,请以实际测试结果为准。
为便于阅读,下表对文档出现的关键术语进行解释;对于广泛认同释义的术语,在此不做注释。

(1)无特殊说明情况下,默认使用USB TO UART1接口作为调试串口,使用Linux系统启动卡启动系统,通过路由器与PC机进行网络连接。请根据评估底板丝印将启动方式选择拨码开关拨为011(1~3),此档位为Micro SD启动模式。
(2)评估板出厂时可能未固化最新系统镜像至eMMC存储。为确保您体验到我司提供的最新系统功能,建议您参考《Linux系统固化手册》文档,按照指引将最新系统镜像固化至eMMC。
本小节主要描述评估板设备树使用说明,以及汇总说明评估板接口性能测试结果。
评估板接口功能测试结果汇总说明如下表所示。

评估板设备名与设备驱动源码路径、设备文件、设备节点对应如下表所示。

Linux系统启动卡和eMMC分区说明如下表所示,其中系统启动卡对应的设备节点为mmcblk0,eMMC对应的设备节点为mmcblk1。

评估板接入电源,并使用Type-C线将评估板的USB TO UART1调试串口连接至PC机。评估板硬件连接如下图所示。

打开设备管理器,确认评估板USB TO UART1调试串口对应的COM端口号。


打开串口调试终端SecureCRT,选择对应的COM端口号,设置波特率为115200,8N1,无校验位。建立串口连接,如下图所示。

将Linux系统启动卡插入评估板Micro SD卡槽,根据评估底板丝印将启动方式选择拨码开关拨为011(1~3),此档位为Micro SD启动模式。将评估板上电启动,串口调试终端将会打印如下类似启动信息。
备注:"drv is sd"表示从Linux系统启动卡启动,"drv is emmc1"表示从eMMC启动。

系统启动后会自动登陆root用户。

核心板LED在系统启动过程中的变化说明如下:
评估板上电后,电源指示灯LED1点亮;U-Boot启动阶段点亮LED2;Linux内核稳定运行时,LED2进行心跳闪烁。

系统上电后,Linux系统启动流程为:BootRom -> FSBL -> U-Boot ->Linux。BootRom会根据启动模式从启动介质中解析BOOT.bin,并将FSBL加载至OCM,然后开始运行FSBL。FSBL会加载BOOT.bin中剩下的文件,如果有比特流文件,则配置比特流文件。接下来将U-Boot搬运到DDR中并启动U-Boot,U-Boot会根据启动参数,加载Linux镜像、文件系统、设备树等文件到DDR中,并通过bootm命令启动Linux内核。最终Linux启动,并进入终端。
详情请查阅官方WIKI参考文档:https://alwiki.anlogic.com/wiki/external/org/AzZaqNHH/#/page/SdAMW8ED/9y1N4KNs。
评估底板PS端用户可编程指示灯LED2对应的节点为user-led0。
进入评估板文件系统,执行如下命令控制LED亮灭。
Target# echo 1 > /sys/class/leds/user-led0/brightness
Target# echo 0 > /sys/class/leds/user-led0/brightness

评估底板包含1个POR复位按键KEY3,1个SRST复位按键KEY1,1个PS端用户输入按键KEY2。
(1)POR复位按键测试
评估板上电,按下POR复位按键KEY3,核心板板载LED2停止闪烁;松开按键后,系统将会重新启动。
(2)SRST复位按键测试
评估板上电,按下SRST复位按键KEY1,核心板板载LED2停止闪烁;松开按键后,系统将会重新启动。
(3)PS端用户输入按键测试
执行如下命令,查看用户输入按键对应的事件号,可知KEY2对应的按键事件号为event0。
Target# cat /proc/bus/input/devices

执行如下命令,按下USER1(KEY2)进行按键测试,可看到如下打印信息,按"Ctrl + C"可终止测试命令。
Target# od -x /dev/input/event0

请将ML2032(3V可充)或CR2032(3V不可充)电池安装至RTC纽扣电池座,进行外部RTC测试。
备注:使用CR2032不可充电电池时,请勿将跳线帽插入J1接口。
Linux系统中分系统时钟(软件时钟)和RTC时钟(硬件时钟),系统时钟掉电即会消失,RTC时钟在安装电池的情况下会长期运行。
(1)查看外部RTC设备节点。
执行如下命令,可查看到外部RTC设备节点为"/dev/rtc0"。
Target# ls /dev/rtc*

Target# dmesg | grep rtc

(2)查看系统时钟。
Target# date

(3)设置系统时间并同步系统时钟至RTC时钟。
Target# date -s "2025-6-17 15:50:00" //设置时间:2025年6月17日15点50分00秒
Target# hwclock -w -f /dev/rtc0
Target# hwclock -f /dev/rtc0

(4)将评估板断电,放置一断时间后,重新上电,执行如下命令查询系统时间,验证外部RTC功能。
Target# hwclock -f /dev/rtc0

DDR读写速度受DDR物料型号、测试方法、测试数据大小影响,测试速率以具体情况为准,如下测试数据仅供参考。
执行如下命令,查询DDR的可用容量。
Target# free -m

(1)DDR读速度测试
进入评估板系统,执行如下命令对DDR进行读速度测试。
Target# bw_mem -P $(nproc) -N 10 128M frd

本次测试从DDR读取128MByte数据,可看到本次测试的读速度为2311.26MB/s。
(2)DDR写速度测试
执行如下命令对DDR进行写速度测试。
Target# bw_mem -P $(nproc) -N 10 128M fwr

本次测试写入128MByte数据至DDR,可看到本次测试的写速度为1629.69MB/s。
(3)DDR拷贝速度测试
执行如下命令对DDR进行拷贝速度测试。
Target# bw_mem -P $(nproc) -N 10 128M fcp

本次测试拷贝128MByte数据至DDR,可看到本次测试的拷贝速度为1661.76MB/s。
(4)Stream带宽测试
执行如下命令对DDR进行Stream带宽测试。
Target# stream -M 128M -P $(nproc) -N 10

参数解析:
(1)DDR压力测试
执行如下命令对DDR进行压力测试。
Target# memtester 128M 1

执行如下命令,查看SPI FLASH的容量和型号,由下图可知SPI FLASH的型号为GD25Q64,容量为8192KByte。
Target# dmesg | grep spi-nor

(1)SPI FLASH擦除测试
执行如下命令,擦除SPI FLASH分区。
Target# flash_erase /dev/mtd0 0 0

执行如下命令,全部数据为ffff即已正确擦除。
Target# mtd_debug read /dev/mtd0 0 0x00800000 mtd.data
Target# hexdump -x mtd.data

(2)SPI FLASH写速度测试
执行如下命令,查看mtd分区。
Target# cat /proc/mtd

执行如下命令,进行SPI FLASH写速度测试。
Target# echo 3 > /proc/sys/vm/drop_caches
Target# time dd if=/dev/urandom of=/dev/mtd0 bs=64k count=128

参数解析:
此处一共写入128 x 64 x 1024 = 8MByte测试数据至SPI FLASH,可看到本次测试SPI FLASH写速度为852.2KB/s。
(3)SPI FLASH读速度测试
执行如下命令,进行SPI FLASH读速度测试。
Target# echo 3 > /proc/sys/vm/drop_caches
Target# time dd if=/dev/mtd0 of=/dev/null bs=64k count=128

此处一共从SPI FLASH读取128 x 64 x 1024 = 8MByte测试数据,可看到本次测试SPI FLASH读速度为38.8MB/s。
(4)数据校验测试
执行如下命令,进行SPI FLASH数据校验测试。
Target# time dd if=/dev/urandom of=test.bin bs=64k count=128
Target# flashcp -v test.bin /dev/mtd0

运行上述命令在Verifying data阶段无报错,则数据校验正常。
请将Linux系统启动卡插入评估板Micro SD卡槽,请根据评估底板丝印将启动方式选择拨码开关拨为011(1~3),此档位为Micro SD启动模式。评估板上电,系统将从Linux系统启动卡启动。执行如下命令查看eMMC分区信息。
Target# fdisk -l | grep "/dev/mmcblk1"
Target# df -h


(1)eMMC写速度测试
执行如下命令对eMMC设备进行写速度测试。
Target# fio -filename=/dev/mmcblk1 -ioengine=libaio -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 -userspace_reap -ramp_time=1 -allow_mounted_write=1

此处一共写1024MByte测试数据至eMMC设备,可看到本次测试的eMMC设备写速度约为21.2MB/s。
(2)eMMC读速度测试
执行如下命令对eMMC设备进行读速度测试。
Target# fio -filename=/dev/mmcblk1 -ioengine=libaio -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 -userspace_reap -ramp_time=1

此处从eMMC设备中一共读出1024MByte数据,可看到本次测试的eMMC设备读速度约为24.1MB/s。
本次操作使用SanDisk品牌、128GByte容量的Micro SD卡来测试评估板Micro SD接口性能。不同的Micro SD卡以及不同的测试方法,对Micro SD接口测试结果将造成一定差异。
请先参考《Linux系统固化手册》文档,按照指引将最新系统镜像固化至eMMC,取出Linux系统启动卡,根据评估底板丝印将启动方式选择拨码开关拨为111(1~3),此档位为eMMC启动模式。评估板上电,系统将从eMMC启动。系统启动后再将Linux系统启动卡插至评估板Micro SD卡槽,进入评估板文件系统执行如下命令,查看Micro SD卡信息。
Target# fdisk -l | grep "/dev/mmcblk0"
Target# df -h

(1)Micro SD接口写速度测试
进入评估板系统,执行如下命令测试Micro SD接口写速度。
Target# fio -filename=/dev/mmcblk0 -ioengine=libaio -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 -userspace_reap -ramp_time=1 -allow_mounted_write=1

此处一共写1024MByte测试数据至Micro SD卡,可看到本次测试的Micro SD接口写速度约为19.8MB/s。
(2)Micro SD接口读速度测试
执行如下命令测试Micro SD接口读速度。
Target# fio -filename=/dev/mmcblk0 -ioengine=libaio -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 -userspace_reap -ramp_time=1

此处一共读出1024MByte的数据,可看到本次测试的Micro SD接口读速度约为23.8MB/s。
由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。