第二章:测试环境搭建——硬件准备与软件工具链
好,咱们正式开始动手了。这一章我带你把测试环境搭起来。说白了,就是把你手头的开发板、电源线、串口线这些硬件摆弄好,再把电脑上的软件工具装齐。环境搭得顺不顺,直接决定你后面做压力测试时会不会被各种小问题卡住。我自己就吃过这个亏——有一次急着测一个DDR压力场景,结果串口线接触不良,日志全丢,白跑了一整夜。
2.1 硬件准备:开发板、电源、串口线
先聊硬件。你可能会觉得,不就是接几根线嘛,有什么好讲的?嗯,这里面的坑还真不少。
2.1.1 开发板的选择与检查
我建议你手头至少准备两块同型号的开发板。为什么?因为压力测试过程中,板子可能会因为过热、电压不稳或者软件bug而“挂掉”。两块板子可以交叉验证,帮你快速定位问题是硬件还是软件引起的。
拿到开发板后,先做三件事:
- 目测检查:看板子上有没有虚焊、电容鼓包、电阻脱落。我在项目中遇到过一块板子,外观完美,但跑压力测试时总是随机重启,最后发现是BGA封装下有个焊球虚焊。
- 核对版本:瑞芯微的芯片有多个步进(Stepping),比如RK3588的V10和V11。不同步进可能有不同的勘误表(Errata)。用
cat /proc/cpuinfo或者读芯片上的丝印来确认。 - 检查跳线:确认启动模式跳线(比如eMMC启动还是SD卡启动)设置正确。我见过有人把启动模式跳到了SPI Flash,结果系统死活起不来,折腾了半天。
2.1.2 电源——稳定是第一要义
电源是压力测试中最容易被忽视的环节。你想想看,如果电源本身纹波大、带载能力不足,那测出来的稳定性数据根本不可信。
我推荐使用可编程直流电源,比如固纬(GW Instek)或者是德科技(Keysight)的型号。为什么?因为你可以精确设置电压和电流限值,还能实时监控电流波动。
| 电源类型 | 适用场景 | 注意事项 |
|---|---|---|
| 可编程直流电源 | 正式压力测试、功耗分析 | 设置过流保护(OCP),防止短路烧板 |
| 原装适配器 | 快速验证、日常开发 | 注意适配器标称电流是否足够(至少2A以上) |
| USB供电 | 仅限低功耗调试 | USB口供电能力弱,跑压力测试时容易掉电压 |
2.1.3 串口线——你的“第三只眼”
串口是嵌入式开发中最可靠的调试通道。没有串口日志,你就像蒙着眼睛开车。我建议使用USB转TTL串口模块,比如FT232或者CP2102。注意,瑞芯微开发板通常是3.3V电平,别用5V的串口模块直接怼,会烧IO口。
接线很简单:
- 开发板的TX(发送)接串口模块的RX(接收)
- 开发板的RX(接收)接串口模块的TX(发送)
- GND接GND(这个必须接,否则通信不稳定)
波特率一般设置为1500000(1.5Mbps)或者921600。我个人习惯用1.5Mbps,因为压力测试时日志量很大,波特率低了会丢数据。
2.2 软件工具链:ADB、串口终端、压力测试工具
硬件准备好了,接下来装软件。这部分相对简单,但版本兼容性是个坑。
2.2.1 ADB(Android Debug Bridge)
如果你的开发板跑的是Android系统,ADB是必备工具。它让你通过USB或者网络来操作板子,比如安装APK、抓取日志、执行shell命令。
安装步骤:
- 下载Android SDK Platform Tools(Google官方提供)
- 解压后,把
adb和fastboot所在目录添加到系统PATH环境变量 - 用USB线连接开发板和电脑,在板子上开启USB调试模式
- 在电脑终端输入
adb devices,确认设备已识别
如果adb devices显示设备为“unauthorized”,别慌。检查板子屏幕,确认是否弹出了授权提示框,点击“允许”即可。
adb shell dmesg -w来实时查看内核日志。这个命令比串口更灵活,因为你可以用grep过滤关键字,比如adb shell dmesg -w | grep -i error。
2.2.2 串口终端软件
串口终端是调试Linux系统的首选。Windows上我用MobaXterm,macOS和Linux上我用screen或者minicom。这里我重点讲MobaXterm,因为它功能全、界面友好。
配置要点:
- Session类型选择“Serial”
- 端口号:在设备管理器中查看你的USB串口模块对应的COM口(比如COM3)
- 波特率:1500000或921600
- 数据位:8,停止位:1,校验位:None,流控:None
连接成功后,你会看到开发板的启动日志。如果什么也不显示,检查一下:
- TX和RX是否接反了?
- GND是否接了?
- 波特率是否匹配?
2.2.3 压力测试工具
压力测试工具是咱们课程的核心。我常用的工具有这些:
| 工具名称 | 用途 | 安装方式 |
|---|---|---|
| stress | CPU、内存、IO压力 | apt install stress 或交叉编译 |
| stressapptest | 内存压力测试(更严格) | 从GitHub下载源码编译 |
| iozone | 文件系统读写性能 | apt install iozone3 |
| glmark2 | GPU压力测试 | apt install glmark2 |
| netperf | 网络吞吐量测试 | apt install netperf |
对于瑞芯微平台,我特别推荐stressapptest。这个工具是Google开发的,专门用来检测内存控制器和DDR颗粒的稳定性。它通过反复分配、读写、释放内存来制造压力,能有效暴露硬件时序问题。
编译stressapptest的示例命令:
# 下载源码
git clone https://github.com/stressapptest/stressapptest.git
cd stressapptest
# 配置交叉编译(以RK3588为例,使用aarch64交叉编译器)
./configure --host=aarch64-linux-gnu CXX=aarch64-linux-gnu-g++
# 编译
make -j4
# 编译完成后,把生成的stressapptest可执行文件push到板子上
adb push stressapptest /data/local/tmp/
adb shell chmod +x /data/local/tmp/stressapptest
2.3 环境验证——跑一个简单的压力测试
所有工具都装好后,我们来验证一下环境是否正常。我习惯先跑一个轻量级的CPU压力测试,看看系统反应。
在串口终端或者ADB shell中执行:
# 启动4个CPU压力线程,持续60秒
stress --cpu 4 --timeout 60
观察输出:
- CPU占用率是否接近100%?
- 系统是否出现卡顿或重启?
- 串口日志中是否有“soft lockup”或“RCU stall”之类的警告?
如果一切正常,恭喜你,环境搭建成功了!如果出现问题,别急,先检查电源和散热。很多“稳定性问题”其实只是散热不良导致的过热降频。
好了,环境搭建就到这里。下一章我们开始讲压力测试的具体策略和脚本编写。记住,环境搭得越扎实,后面踩的坑就越少。咱们下章见。