diff options
-rw-r--r-- | test/dfu/README | 30 | ||||
-rwxr-xr-x | test/dfu/dfu_gadget_test.sh | 88 | ||||
-rwxr-xr-x | test/dfu/dfu_gadget_test_init.sh | 34 |
3 files changed, 152 insertions, 0 deletions
diff --git a/test/dfu/README b/test/dfu/README new file mode 100644 index 0000000..f8c1a74 --- /dev/null +++ b/test/dfu/README @@ -0,0 +1,30 @@ +DFU TEST CASE DESCRIPTION: + +The prerequisites for running this script are assured by dfu_gadget_test_init.sh. +In this file user is able to generate their own set of test files by altering +the default set of TEST_FILES_SIZES variable. +The dfu_gadget_test_init.sh would generate test images only if they are not +already generated. + +Moreover, on a target device the "dfu_alt_info" env variable should be extended +to have "dfu_test.bin fat 0 6;" \ entry ([1]). For reference please consult the +config file for TRATS/TRATS2 devices (./include/configs/trats{2}.h) + +One can use fat, ext4 or any other supported file system, which can be +created in a convenient way with exporting partitions via UMS (ums 0 mmc 0) +and using standard tools on host (like mkfs.ext4). + +Example usage: +1. On the target: + env default -a + dfu 0 mmc 0 +2. On the host: + ./dfu_gadget_test.sh 11 [test_file] + +where 11 is the mumber of alt setting corresponding to entry [1] and [test_file] +is an optional parameter, with which one can explicitly indicate the test file +to be used. + +The number of the alt setting entry can be obtained with dfu-util -l command. +In its output one should look for the 'name="dfu_test1.bin"' and corresponding +alt=11. diff --git a/test/dfu/dfu_gadget_test.sh b/test/dfu/dfu_gadget_test.sh new file mode 100755 index 0000000..4a848c8 --- /dev/null +++ b/test/dfu/dfu_gadget_test.sh @@ -0,0 +1,88 @@ +#! /bin/bash +set -e # any command return if 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` + +./dfu_gadget_test_init.sh + +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 +} + +dfu_test_file () { + printf "$COLOUR_GREEN ========================================================================================= $COLOUR_DEFAULT\n" + printf "File:$COLOUR_GREEN %s $COLOUR_DEFAULT\n" $1 + + dfu-util -D $1 -a $TARGET_ALT_SETTING >> $LOG_FILE 2>&1 || die $? + + echo -n "TX: " + calculate_md5sum $1 + + MD5_TX=$MD5SUM + + N_FILE=$DIR$RCV_DIR${1:2}"_rcv" + + dfu-util -U $N_FILE -a $TARGET_ALT_SETTING >> $LOG_FILE 2>&1 || die $? + + 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 "DFU EP0 transmission test program" +echo "Trouble shoot -> disable DBG (even the KERN_DEBUG) in the UDC driver" +echo "@ -> TRATS2 # dfu 0 mmc 0" +mkdir -p $RCV_DIR +touch $LOG_FILE + +if [ $# -eq 0 ] +then + printf " $COLOUR_RED Please pass alt setting number!! $COLOUR_DEFAULT \n" + exit 0 +fi + +TARGET_ALT_SETTING=$1 + +if [ -n "$2" ] +then + dfu_test_file $2 +else + for file in $DIR*.$SUFFIX + do + dfu_test_file $file + done +fi + +cleanup + +exit 0 diff --git a/test/dfu/dfu_gadget_test_init.sh b/test/dfu/dfu_gadget_test_init.sh new file mode 100755 index 0000000..b319ed0 --- /dev/null +++ b/test/dfu/dfu_gadget_test_init.sh @@ -0,0 +1,34 @@ +#! /bin/bash +set -e # any command return if not equal to zero +clear + +COLOUR_RED="\33[31m" +COLOUR_GREEN="\33[32m" +COLOUR_DEFAULT="\33[0m" + +LOG_DIR="./log" +BKP_DIR="./bkp" + +TEST_FILES_SIZES="127 128 129 8M 4095 4096 4097 63 64 65 960" + +printf "Init script for generating data necessary for DFU test script" + +if [ ! -d $LOG_DIR ]; then + `mkdir $LOG_DIR` +fi + +if [ ! -d $BKP_DIR ]; then + `mkdir $BKP_DIR` +fi + +for size in $TEST_FILES_SIZES +do + FILE="./dat_$size.img" + if [ ! -f $FILE ]; then + dd if=/dev/urandom of="./dat_$size.img" bs=$size count=1 > /dev/null 2>&1 || exit $? + fi +done + +printf "$COLOUR_GREEN OK $COLOUR_DEFAULT \n" + +exit 0 |