第二章:测试环境搭建——硬件准备与软件工具链

好,咱们正式开始动手了。这一章我带你把测试环境搭起来。说白了,就是把你手头的开发板、电源线、串口线这些硬件摆弄好,再把电脑上的软件工具装齐。环境搭得顺不顺,直接决定你后面做压力测试时会不会被各种小问题卡住。我自己就吃过这个亏——有一次急着测一个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口供电能力弱,跑压力测试时容易掉电压
警告:千万不要用劣质USB线给开发板供电!我曾经有一次用了一根细长的USB线,线阻太大,板端电压掉到了4.5V,结果DDR初始化失败,系统反复重启。换根粗短线就解决了。

2.1.3 串口线——你的“第三只眼”

串口是嵌入式开发中最可靠的调试通道。没有串口日志,你就像蒙着眼睛开车。我建议使用USB转TTL串口模块,比如FT232或者CP2102。注意,瑞芯微开发板通常是3.3V电平,别用5V的串口模块直接怼,会烧IO口。

接线很简单:

  • 开发板的TX(发送)接串口模块的RX(接收)
  • 开发板的RX(接收)接串口模块的TX(发送)
  • GND接GND(这个必须接,否则通信不稳定)

波特率一般设置为1500000(1.5Mbps)或者921600。我个人习惯用1.5Mbps,因为压力测试时日志量很大,波特率低了会丢数据。

避坑指南:我曾经在测试RK3568时,串口打印到一半突然卡住,以为是内核崩溃了。后来发现是串口线太长(超过2米),信号衰减导致数据错位。换成50厘米的短线就正常了。记住,串口线越短越好。

2.2 软件工具链:ADB、串口终端、压力测试工具

硬件准备好了,接下来装软件。这部分相对简单,但版本兼容性是个坑。

2.2.1 ADB(Android Debug Bridge)

如果你的开发板跑的是Android系统,ADB是必备工具。它让你通过USB或者网络来操作板子,比如安装APK、抓取日志、执行shell命令。

安装步骤:

  1. 下载Android SDK Platform Tools(Google官方提供)
  2. 解压后,把adbfastboot所在目录添加到系统PATH环境变量
  3. 用USB线连接开发板和电脑,在板子上开启USB调试模式
  4. 在电脑终端输入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
重要提醒:压力测试工具一定要用与目标系统匹配的版本。比如你的板子是64位ARM架构,就别用32位的二进制文件。我见过有人把x86版的stress工具推到ARM板子上,运行时报“Exec format error”,折腾半天才发现是架构不匹配。

2.3 环境验证——跑一个简单的压力测试

所有工具都装好后,我们来验证一下环境是否正常。我习惯先跑一个轻量级的CPU压力测试,看看系统反应。

在串口终端或者ADB shell中执行:

# 启动4个CPU压力线程,持续60秒
stress --cpu 4 --timeout 60

观察输出:

  • CPU占用率是否接近100%?
  • 系统是否出现卡顿或重启?
  • 串口日志中是否有“soft lockup”或“RCU stall”之类的警告?

如果一切正常,恭喜你,环境搭建成功了!如果出现问题,别急,先检查电源和散热。很多“稳定性问题”其实只是散热不良导致的过热降频。

我的经验:第一次跑压力测试时,我建议你用手摸一下散热片。如果烫得不敢碰(超过70°C),那就要加风扇或者换更大的散热片了。瑞芯微的芯片在85°C以上会触发热保护,自动降频,这时候测出来的性能数据是不准的。

好了,环境搭建就到这里。下一章我们开始讲压力测试的具体策略和脚本编写。记住,环境搭得越扎实,后面踩的坑就越少。咱们下章见。