使用dd命令进行sd读写压力测试,设备Linux系统精简无dd命令,交叉编译dd命令。
1、源码下载
coreutils 是GNU下的一个软件包,包括常用的shell命令
https://ftp.gnu.org/gnu/coreutils/
2、进行解压
#这里下载的版本是7.6
tar -zxvf coreutils-7.6.tar.gz
3、配置环境变量及交叉编译链
export CC=/data/zdw/jiaocha/mips-gcc720-uclibc0.9.33.2-r5.1.4/bin/mips-linux-uclibc-gcc
export PATH=/data/zdw/jiaocha/mips-gcc720-uclibc0.9.33.2-r5.1.4/bin:$PATH
./configure --host=mips-linux-uclibc
4、编译
make -j
编译完成后生成的执行文件在src目录下,使用file dd核对文件信息,再将dd命令拷贝到板端.
5、sd卡读写压力测试脚本
#!/bin/sh
# 指定测试的次数
TEST_TIMES=86400
# 定义测试写入的数据块大小,单位为MB
BLOCK_SIZE=1
# 定义每个测试块的数目
NUM_BLOCKS=16
# 写失败次数
WRITE_FAIL_COUNT=0
# 读失败次数
READ_FAIL_COUNT=0
# 定义SD卡挂载点 或直接写/dev/mmcblk0p1
MOUNT_POINT="/media"
mount /dev/mmcblk0p1 /media/
# 检查SD卡是否挂载成功
if ! mount | grep $MOUNT_POINT > /dev/null; then
echo "Error: SD card not mounted"
#exit 1
fi
export PATH=/media/sd_test:$PATH
#for ((i=1; i<=$TEST_TIMES; i++))
i=0
while [ $i -le $TEST_TIMES ]
do
echo "Start testing SD card write speed..."
dd if=/dev/zero of=$MOUNT_POINT/testfile bs=${BLOCK_SIZE}M count=${NUM_BLOCKS} > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "SD card write test passed"
else
echo "SD card write test failed"
let WRITE_FAIL_COUNT++
#WRITE_FAIL_COUNT=$((WRITE_FAIL_COUNT+1))
fi
echo "Start testing SD card read speed..."
dd if=$MOUNT_POINT/testfile of=/dev/null bs=${BLOCK_SIZE}M count=${NUM_BLOCKS} > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "SD card read test passed"
else
echo "SD card read test failed"
let READ_FAIL_COUNT++
#READ_FAIL_COUNT=$((READ_FAIL_COUNT+1))
fi
echo WRITR:$WRITE_FAIL_COUNT READ:$READ_FAIL_COUNT > /custom/sd_count.txt
# 移除测试文件
rm $MOUNT_POINT/testfile -rf
let i++
sync
done
echo "SD card tests completed successfully"
exit 0