#!/bin/bash
#
# SD/SDHC memory card simple benchmark test.
#
# file name : sd_simple_benchmark_test_v003.sh
# version   : 0.0.3
# create    : Feb. 13th, 2010
# update    : Feb. 15th, 2010
# author    : Fumiyoshi Sasaki
#
# Update history
# Ver0.0.1  1st. Version.
# Ver0.0.2  Ver0.0.1 bug fix.
# Ver0.0.3  Change for bucchi SL-C750/SL-C760/SL-C860 SD/SDHC
#           memory card driver Ver2.0
#
SD_DRIVER_FILE_NAME="/lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/block/sharp_mmcsd_m.o"
DATE=`date +%Y%m%d_%H%M%S`
TEST_FILE_NAME="/mnt/card/testfile_$DATE.bin"
#
# TEST_FILE_SIZE unit in MiB(1,048,576 byte)
#
TEST_FILE_SIZE=100

echo "SL-C750/SL-C760/SL-C860 SD/SDHC driver and memory card information"
echo "================================================================================="
DATE=`date +"%Y/%m/%d %H:%M:%S"`
echo "DATE    : $DATE"
PRODUCT=`cat /proc/deviceinfo/product`
echo "PRODUCT : $PRODUCT"
echo
echo "SD memory card driver information"
echo "---------------------------------------------------------------------------------"
SD_DRIVER_FILE_SIZE=`ls -l "$SD_DRIVER_FILE_NAME" | tr -s ' ' | cut -d ' ' -f 5`
if [ -L "$SD_DRIVER_FILE_NAME" ]; then
  echo "SD memory card driver           : use SHARP original driver"
elif [ ! -e "$SD_DRIVER_FILE_NAME" ]; then
  echo "SD memory card driver           : use unknown SD memory card driver" 
elif [ "$SD_DRIVER_FILE_SIZE" -eq 48185 ]; then
  echo "SD memory card driver           : use bucchi SL-C750/SL-C760/SL-C860 SD/SDHC memory card driver Ver1.0" 
elif [ "$SD_DRIVER_FILE_SIZE" -eq 50018 ]; then
  echo "SD memory card driver           : use bucchi SL-C750/SL-C760/SL-C860 SD/SDHC memory card driver Ver2.0" 
fi
echo "SD memory card driver file size : $SD_DRIVER_FILE_SIZE"
echo
echo "ls -l /lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/block/sharp_mmcsd_m.o"
echo "---------------------------------------------------------------------------------"
ls -l /lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/block/sharp_mmcsd_m.o
echo
echo "cat /proc/driver/mmcsd/00/* result"
echo "---------------------------------------------------------------------------------"
echo -n "  detect      : "
cat /proc/driver/mmcsd/00/detect
echo -n "  manufacture : "
cat /proc/driver/mmcsd/00/manufacture
echo -n "  product     : "
cat /proc/driver/mmcsd/00/product
echo -n "  type        : "
cat /proc/driver/mmcsd/00/type
echo

echo "SL-C750/SL-C760/SL-C860 SD/SDHC driver memory card simple benchmark test"
echo "================================================================================="
echo
echo "sequential write test by dd command. (test file size : $TEST_FILE_SIZE [MiB(1,048,576 byte)]) "
echo "---------------------------------------------------------------------------------"
echo "time dd if=/dev/zero of=$TEST_FILE_NAME bs=1M count=$TEST_FILE_SIZE"
echo
(time dd if=/dev/zero of=$TEST_FILE_NAME bs=1M count=$TEST_FILE_SIZE) 2>&1

echo
echo "ls -l $TEST_FILE_NAME"
echo "---------------------------------------------------------------------------------"
ls -l $TEST_FILE_NAME

echo
echo "sequential read test by dd command. (test file size : $TEST_FILE_SIZE [MiB(1,048,576 byte)]) "
echo "---------------------------------------------------------------------------------"
echo "time dd if=$TEST_FILE_NAME of=/dev/null bs=1M count=$TEST_FILE_SIZE"
echo
(time dd if=$TEST_FILE_NAME of=/dev/null bs=1M count=$TEST_FILE_SIZE) 2>&1

echo
echo "remove test file"
echo "---------------------------------------------------------------------------------"
echo "rm $TEST_FILE_NAME"
rm $TEST_FILE_NAME
echo "rm command result status : $?"
if [ -e "$TEST_FILE_NAME" ]; then
  echo "remove test file test => fail"
  echo "SD/SDHC memory card simple benchmark test stoped."
  exit 1
else
  echo "remove test file => succes" 
fi

echo
echo "SD/SDHC memory card simple benchmark test compleated."
echo

exit 0

