一、压测的重要性与核心目的
1.为什么必须做压测?
RK平台多应用于嵌入式设备(如工业控制器、智能终端、消费电子),这类设备常面临复杂工况(高低温、高负载、长期运行)与严苛可靠性要求,压测是量产前不可或缺的“风险拦截环节”,核心原因包括:

1.硬件隐患提前暴露:避免因IO电压不匹配、DDR信号干扰、电源纹波超标等问题,导致设备量产后面临死机、重启、硬件烧毁等故障;
2.软件稳定性验证:排查多模块协同(如CPU+DDR+Wi-Fi)、长期高负载下的内存泄漏、线程死锁、驱动兼容性问题;
3.性能达标保障:确保磁盘读写、GPU渲染、CPU算力等关键指标满足产品设计需求,避免用户使用时出现卡顿、响应慢等体验问题;
4.成本风险控制:若未做压测,设备量产后面临售后维修、召回,成本是前期压测投入的10-100倍,且损害品牌口碑。
2.压测的核心价值
5.从“被动修复”转为“主动预防”:在实验室环境模拟设备全生命周期可能遇到的极端场景,提前解决90%以上的稳定性问题;
6.量化设备可靠性:通过“10台设备×24小时”“高低温循环”等标准化压测,验证设备连续运行无故障时长,为量产提供数据支撑;
7.适配场景拓展:通过用户场景压测,确保设备在真实使用场景(如词典笔“扫描-翻译-待机”、工业设备“数据采集-传输-存储”)下稳定运行。
二、压测前准备
8.开启测试工具配置:在Buildroot中启用所需测试包,执行如下配置命令,确保CPU、内存、音频、Wi-Fi等测试功能可用:
# 启用CPU和内存压力测试工具BR2_PACKAGE_STRESSAPPTEST=y# 启用内存正确性测试工具BR2_PACKAGE_MEMTESTER=y# 启用包含多模块测试的套件BR2_PACKAGE_ROCKCHIP_TEST=y
1.配置测试目录权限:确保/userdata/rockchip-test目录具备可读写权限,用于存储压测日志和数据。
2.开启串口日志保存:连接产品串口,开启串口上位机的“保存所有日志”功能,便于后续问题分析。
三、软件稳定性压测
1.基础工具使用
(1)stressapptest(内存/磁盘压力测试)
•典型执行命令:测试256MB内存,运行8个“热复制”线程,20秒后退出,命令如下:
stressapptest-s20-M256-m8-W
•常用参数说明:-M指定测试RAM大小,-s指定运行秒数,-m指定内存复制线程数,-l指定日志输出文件。
•关闭测试:执行killall stressapptest。
(2)memtester(内存正确性测试)
•执行命令格式:指定测试内存大小(单位B/K/M/G)和循环次数,示例如下:
memtester[-p 物理地址基址 [-d 设备]] <内存大小>[B/K/M/G][循环次数]
•测试项包含:Stuck Address、Random Value、Compare XOR等18项内存校验。
•注意事项:memtester出错不会自动停止,需实时观测程序打印;关闭测试执行killall memtester。
2.多模块专项测试(基于Rockchip test套件)
(1)DDR测试
•执行方式一:通过套件脚本启动
a.运行套件入口脚本:bash /rockchip-test/rockchip_test.sh;
b.输入“1”选择DDR测试,再根据设备变频能力选场景(不支持变频选“3”,支持选“5”);
c.输入“1”选择memtester测试,开始执行。
•执行方式二:直接运行脚本:执行bash /rockchip-test/ddr/memtester_test.sh,默认测试系统可用内存的一半。
•DDR变频测试:
◦自动变频:bash /rockchip-test/ddr/ddr_freq_scaling.sh,脚本会循环切换频率(如528000000 Hz、324000000 Hz);
◦指定频率:bash /rockchip-test/ddr/ddr_freq_scaling.sh 528000000,频率需在支持列表内,否则会打印可用频率;
◦关闭变频测试:killall bash。
(2)CPU测试
•启动测试:运行bash /rockchip-test/rockchip_test.sh,输入“2”选择CPU测试,根据变频能力选场景(不支持选“1”,支持选“3”)。
•CPU变频测试:
◦自动变频:bash /rockchip-test/cpu/cpu_freq_scaling.sh,切换频率如816000 KHz、1104000 KHz;
◦指定频率:bash /rockchip-test/cpu/cpu_freq_scaling.sh 1104000,频率不在支持列表时会打印可用值;
◦关闭测试:killall bash。
(3)Flash测试
•执行逻辑:在$test_dir/src_test_data生成7个5MB以内随机源数据,拷贝到$test_dir/des_test_data的5个子目录,对比MD5值,循环200次。
(4)待机唤醒测试
•前提条件:系统需有正常工作的RTC;
•执行逻辑:默认循环10000次,每次待机唤醒时间为3-6秒随机值。
(5)reboot测试
•执行逻辑:默认重启10000次,每次启动后8秒自动关机;若开启CONFIG_PSTORE_RAM,会检查每次关机日志是否有崩溃异常;
•提前关闭:执行echo off > /userdata/rockchip_test/reboot_cnt。
(6)Camera测试
•方式一:rkisp_demo脚本
a.启用配置:
BR2_PACKAGE_CAMERA_ENGINE_RKAIQ_RKISP_DEMO=y;
b.执行脚本:
bash /rockchip-test/camera/camera_stresstest_rkisp_demo.sh,循环抓取ISP CIF接口数据各100帧。
•方式二:v4l2脚本
a.启用配置:
BR2_PACKAGE_LIBV4L_UTILS=y;
b.执行脚本:
bash /rockchip-test/camera/camera_stresstest_v4l2.sh,以640x480分辨率循环抓取USB ISP CIF接口数据各5帧,校验文件大小。
(7)Video测试
•准备工作:将测试视频文件放入/userdata/videos(优先)或/mnt/udisk/videos;
•执行测试:运行Video测试脚本,循环播放目标目录下的视频文件。
(8)Wi-Fi Bt测试
•执行逻辑:运行对应测试脚本,自动循环执行Wi-Fi和Bt的开启、关闭操作。
四、性能测试
1.磁盘读写测试
(1)eMMC读写
•前提:用fdisk -l查看可读写分区(如mmcblk0p8);
•写测试:
dd if=/dev/zero of=/dev/mmcblk0p8 bs=1M count=2000 oflag=direct,nonblock;
•读测试:
dd if=/dev/mmcblk0p8 of=/dev/null bs=1M count=2000 iflag=direct,nonblock。
(2)U盘读写
•写测试:
dd if=/dev/zero of=/dev/sda1 bs=1M count=2000 oflag=direct,nonblock(/dev/sda1为U盘分区);
•读测试:
dd if=/dev/sda1 of=/dev/null bs=1M count=2000 iflag=direct,nonblock。
2.性能模式设置
•开启高性能模式:echo performance | tee $(find /sys/ -name *governor)。
3. CPU/DDR频率查看
•执行命令:cat /sys/kernel/debug/clk/clk_summary |grep -E "cpu|arm|ddr"。
4. GPU跑分
•全屏跑分:sh /rockchip-test/gpu/test_fullscreen_glmark2.sh;
•后台跑分(不显示画面):sh /rockchip-test/gpu/test_offscreen_glmark2.sh。
五、硬件稳定性测试
1. IO-DOMAINS检查
•核心要求:确保所有GPIO电源域的软件配置电压与硬件供电一致(如软件设1.8V则硬件需供1.8V);
•参考文档:对应芯片平台文档(如RK3568参考Rockchip_RK356X_Introduction_IO_Power_Domains_Configuration_CN.pdf)。
2.电源测试
•测试内容:若电源方案偏离参考设计(如用分立电源),需测试冷启动/重启时的上电时序、高负载下电源纹波,重点关注VDD_LOGIC、VDD_ARM等核心电源。
3.信号测试
•设计要求:DDR设计按对应模板,颗粒选AVL列表(通过redmine获取);
•图纸审核:硬件图纸完成后,提交审核(如通过redmine)。
4.高低温测试
•测试环境:产品工作温度的高温上限和低温下限;
•测试内容:在高低温下执行CPU压力测试、DDR压力测试、reboot测试、冷启动测试。
六、用户场景压测
•构建逻辑:结合产品实际功能,用基础脚本组合场景;
•示例(词典笔场景):
whiletrue;do# 模拟扫描识别(采图)v4l2-ctl --stream-mmap --stream-to=/tmp/scan.jpg --stream-count=1# 模拟播放翻译结果aplay /tmp/translate.wav# 模拟待机pm-suspend# 模拟RTC唤醒(10秒后唤醒)rtcwake -m no -s 10# 随机开关Wi-Fiif[ $((RANDOM %2)) -eq 0 ];thennmcli r wifi onelsenmcli r wifi offfidone
•核心思路:覆盖“开机-核心功能-待机-唤醒-辅助功能(如Wi-Fi)”的完整用户操作链。
-
嵌入式
+关注
关注
5213文章
20847浏览量
339491 -
Linux
+关注
关注
88文章
11885浏览量
220155
发布评论请先 登录
Linux操作系统怎么移植到ARM平台?
怎样去搭建基于rk3288的android(和linux)平台软件运行环境呢
Linux快速入门之安装Linux操作系统及小结
linux中gpio复用设置操作步骤
RK平台Linux系统压测操作步骤
评论