
This commit adds new test for UMS USB gadget to u-boot mainline tree. It it similar in operation to the one already available in test/dfu directory.
Signed-off-by: Lukasz Majewski l.majewski@samsung.com --- test/ums/README | 17 ++++++ test/ums/ums_gadget_test.sh | 130 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100644 test/ums/README create mode 100755 test/ums/ums_gadget_test.sh
diff --git a/test/ums/README b/test/ums/README new file mode 100644 index 0000000..cb7b27d --- /dev/null +++ b/test/ums/README @@ -0,0 +1,17 @@ +UMS test script. + +Example usage: +1. On the target: + create UMS exportable partition with a proper file system created on + it (e.g. EXT4, FAT). + ums 0 mmc 0 +2. On the host: + sudo test/ums/ums_gadget_test.sh X Y dir [test_file] + e.g. sudo test/ums/ums_gadget_test.sh 1 vfat /mnt ./dat_14M.img + +... where X is the partition number on which UMS operates and the Y is +the file system. The 'dir' parameter is the mount directory on the HOST. +Information about available partitions one can read from target via the +'mmc part' command. +The optional [test_file] parameter is for specifying the exact test file +to use. \ No newline at end of file diff --git a/test/ums/ums_gadget_test.sh b/test/ums/ums_gadget_test.sh new file mode 100755 index 0000000..a304c1c --- /dev/null +++ b/test/ums/ums_gadget_test.sh @@ -0,0 +1,130 @@ +#! /bin/bash + +# Copyright (C) 2014 Samsung Electronics +# Lukasz Majewski l.majewski@samsung.com +# +# UMS operation test script +# +# SPDX-License-Identifier: GPL-2.0+ + +set -e # any command return not equal to zero +clear + +COLOUR_RED="\33[31m" +COLOUR_GREEN="\33[32m" +COLOUR_DEFAULT="\33[0m" + +DIR=./ +SUFFIX=img +RCV_DIR=rcv/ +LOG_FILE=./log/log-`date +%d-%m-%Y_%H-%M-%S` + +cd `dirname $0` +../dfu/dfu_gadget_test_init.sh 33M 97M + +cleanup () { + rm -rf $RCV_DIR +} + +die () { + printf " $COLOUR_RED FAILED $COLOUR_DEFAULT \n" + cleanup + exit 1 +} + +calculate_md5sum () { + MD5SUM=`md5sum $1` + MD5SUM=`echo $MD5SUM | cut -d ' ' -f1` + echo "md5sum:"$MD5SUM +} + +ums_test_file () { + printf "$COLOUR_GREEN========================================================================================= $COLOUR_DEFAULT\n" + printf "File:$COLOUR_GREEN %s $COLOUR_DEFAULT\n" $1 + + mount -t $2 /dev/$MEM_DEV $MNT_DIR + if [ -f $MNT_DIR/dat_* ]; then + rm $MNT_DIR/dat_* + fi + sync + + cp ./$1 $MNT_DIR + sync + umount $MNT_DIR + + + echo -n "TX: " + calculate_md5sum $1 + + MD5_TX=$MD5SUM + sleep 1 + N_FILE=$DIR$RCV_DIR${1:2}"_rcv" + + mount -t $2 /dev/$MEM_DEV $MNT_DIR + cp $MNT_DIR/$1 $N_FILE || die $? + sync + rm $MNT_DIR/$1 + sync + umount $MNT_DIR + + echo -n "RX: " + calculate_md5sum $N_FILE + MD5_RX=$MD5SUM + + if [ "$MD5_TX" == "$MD5_RX" ]; then + printf " $COLOUR_GREEN -------> OK $COLOUR_DEFAULT \n" + else + printf " $COLOUR_RED -------> FAILED $COLOUR_DEFAULT \n" + cleanup + exit 1 + fi +} + +printf "$COLOUR_GREEN========================================================================================= $COLOUR_DEFAULT\n" +echo "U-boot UMS test program" + +if [ $EUID -ne 0 ]; then + echo "You must be root to do this." 1>&2 + exit 100 +fi + +if [ $# -lt 3 ]; then + echo "Wrong number of arguments" + echo "Example:" + echo "sudo ./ums_gadget_test.sh 1 vfat /mnt [test_file]" + die +fi + +MNT_DIR=$3 + +mkdir -p $RCV_DIR + +MEM_DEV=`dmesg | tail -n 10 | grep -E " sd[a-z]:" - | cut -d ':' -f 1` +MEM_DEV=$(echo $MEM_DEV | cut -d ']' -f2 | tr -d ' ') + +if [ -z $MEM_DEV ]; then + echo "Connect target" + echo "e.g. ums 0 mmc 0" + die +fi + +MEM_DEV=$MEM_DEV$1 + +printf "Mount: /dev/$MEM_DEV FS: %s\n" $2 + +if [ -n "$4" ]; then + if [ ! -e $4 ]; then + echo "No file: $4" + die + fi + ums_test_file $4 $2 +else + for file in $DIR*.$SUFFIX + do + ums_test_file $file $2 + done +fi + +cleanup + +exit 0 \ No newline at end of file