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

1.硬件隐患提前暴露:避免因 IO 电压不匹配、DDR 信号干扰、电源纹波超标等问题,导致设备量产后面临死机、重启、硬件烧毁等故障;
2.软件稳定性验证:排查多模块协同(如 CPU+DDR+Wi-Fi)、长期高负载下的内存泄漏、线程死锁、驱动兼容性问题;
3.性能达标保障:确保磁盘读写、GPU 渲染、CPU 算力等关键指标满足产品设计需求,避免用户使用时出现卡顿、响应慢等体验问题;
4.成本风险控制:若未做压测,设备量产后面临售后维修、召回,成本是前期压测投入的 10-100 倍,且损害品牌口碑。
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.开启串口日志保存:连接产品串口,开启串口上位机的“保存所有日志” 功能,便于后续问题分析。
•典型执行命令:测试 256MB 内存,运行 8 个 “热复制” 线程,20 秒后退出,命令如下:
stressapptest -s 20 -M 256 -m 8 -W
•常用参数说明:-M指定测试 RAM 大小,-s指定运行秒数,-m指定内存复制线程数,-l指定日志输出文件。
•关闭测试:执行killall stressapptest。
•执行命令格式:指定测试内存大小(单位 B/K/M/G)和循环次数,示例如下:
memtester [-p 物理地址基址 [-d 设备]] <内存大小>[B/K/M/G] [循环次数]
•测试项包含:Stuck Address、Random Value、Compare XOR 等 18 项内存校验。
•注意事项:memtester 出错不会自动停止,需实时观测程序打印;关闭测试执行killall memtester。
•执行方式一:通过套件脚本启动
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。
•启动测试:运行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。
•执行逻辑:在$test_dir/src_test_data生成 7 个 5MB 以内随机源数据,拷贝到$test_dir/des_test_data的 5 个子目录,对比 MD5 值,循环 200 次。
•前提条件:系统需有正常工作的 RTC;
•执行逻辑:默认循环 10000 次,每次待机唤醒时间为 3-6 秒随机值。
•执行逻辑:默认重启 10000 次,每次启动后 8 秒自动关机;若开启CONFIG_PSTORE_RAM,会检查每次关机日志是否有崩溃异常;
•提前关闭:执行echo off > /userdata/rockchip_test/reboot_cnt。
•方式一: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 帧,校验文件大小。
•准备工作:将测试视频文件放入/userdata/videos(优先)或/mnt/udisk/videos;
•执行测试:运行 Video 测试脚本,循环播放目标目录下的视频文件。
•执行逻辑:运行对应测试脚本,自动循环执行 Wi-Fi 和 Bt 的开启、关闭操作。
•前提:用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。
•写测试:
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。
•开启高性能模式:echo performance | tee $(find /sys/ -name *governor)。
•执行命令:cat /sys/kernel/debug/clk/clk_summary |grep -E "cpu|arm|ddr"。
•全屏跑分:sh /rockchip-test/gpu/test_fullscreen_glmark2.sh;
•后台跑分(不显示画面):sh /rockchip-test/gpu/test_offscreen_glmark2.sh。
•核心要求:确保所有 GPIO 电源域的软件配置电压与硬件供电一致(如软件设 1.8V 则硬件需供 1.8V);
•参考文档:对应芯片平台文档(如 RK3568 参考Rockchip_RK356X_Introduction_IO_Power_Domains_Configuration_CN.pdf)。
•测试内容:若电源方案偏离参考设计(如用分立电源),需测试冷启动 / 重启时的上电时序、高负载下电源纹波,重点关注 VDD_LOGIC、VDD_ARM 等核心电源。
•设计要求:DDR 设计按对应模板,颗粒选 AVL 列表(通过 redmine 获取);
•图纸审核:硬件图纸完成后,提交审核(如通过 redmine)。
•测试环境:产品工作温度的高温上限和低温下限;
•测试内容:在高低温下执行 CPU 压力测试、DDR 压力测试、reboot 测试、冷启动测试。
•构建逻辑:结合产品实际功能,用基础脚本组合场景;
•示例(词典笔场景):
while true; 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)” 的完整用户操作链。
全部0条评论
快来发表一下你的评论吧 !