mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-16 14:08:45 +00:00
test: ums: Add script for testing UMS gadget operation
This commit adds new test for UMS USB gadget to u-boot mainline tree. It is similar in operation to the one already available in test/dfu directory. Signed-off-by: Lukasz Majewski <l.majewski@samsung.com> Acked-by: Stephen Warren <swarren@nvidia.com>
This commit is contained in:
parent
4c984c8136
commit
801123fe50
2 changed files with 205 additions and 0 deletions
30
test/ums/README
Normal file
30
test/ums/README
Normal file
|
@ -0,0 +1,30 @@
|
|||
UMS test script.
|
||||
|
||||
ums_gadget_test.sh
|
||||
==================
|
||||
|
||||
Example usage:
|
||||
1. On the target:
|
||||
create UMS exportable partitions (with e.g. gpt write), or specify a
|
||||
partition number (PART_NUM) as "-" to use the entire device
|
||||
ums 0 mmc 0
|
||||
2. On the host:
|
||||
sudo test/ums/ums_gadget_test.sh VID PID PART_NUM [-f FILE_SYSTEM] [test_file]
|
||||
e.g. sudo test/ums/ums_gadget_test.sh 0525 a4a5 6 -f vfat ./dat_14M.img
|
||||
|
||||
... where:
|
||||
VID - UMS device USB Vendor ID
|
||||
PID - UMS device USB Product ID
|
||||
PART_NUM - is the partition number on which UMS operates or "-" to use the
|
||||
whole device
|
||||
|
||||
Information about available partitions on the target one can read with using
|
||||
the 'mmc part' or 'part list' commands.
|
||||
|
||||
The partition num (PART_NUM) can be specified as '-' for using the whole device.
|
||||
|
||||
The [-f FILE_SYSTEM] optional switch allows for formatting target partition to
|
||||
FILE_SYSTEM.
|
||||
|
||||
The last, optional [test_file] parameter is for specifying the exact test file
|
||||
to use.
|
175
test/ums/ums_gadget_test.sh
Executable file
175
test/ums/ums_gadget_test.sh
Executable file
|
@ -0,0 +1,175 @@
|
|||
#! /bin/bash
|
||||
|
||||
# Copyright (C) 2014 Samsung Electronics
|
||||
# Lukasz Majewski <l.majewski@samsung.com>
|
||||
#
|
||||
# UMS operation test script
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
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 $MNT_DIR
|
||||
}
|
||||
|
||||
control_c()
|
||||
# run if user hits control-c
|
||||
{
|
||||
echo -en "\n*** CTRL+C ***\n"
|
||||
umount $MNT_DIR
|
||||
cleanup
|
||||
exit 0
|
||||
}
|
||||
|
||||
# trap keyboard interrupt (control-c)
|
||||
trap control_c SIGINT
|
||||
|
||||
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 /dev/$MEM_DEV $MNT_DIR
|
||||
if [ -f $MNT_DIR/dat_* ]; then
|
||||
rm $MNT_DIR/dat_*
|
||||
fi
|
||||
|
||||
cp ./$1 $MNT_DIR
|
||||
umount $MNT_DIR
|
||||
|
||||
|
||||
echo -n "TX: "
|
||||
calculate_md5sum $1
|
||||
|
||||
MD5_TX=$MD5SUM
|
||||
sleep 1
|
||||
N_FILE=$DIR$RCV_DIR${1:2}"_rcv"
|
||||
|
||||
mount /dev/$MEM_DEV $MNT_DIR
|
||||
cp $MNT_DIR/$1 $N_FILE || die $?
|
||||
rm $MNT_DIR/$1
|
||||
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 VID PID PART_NUM [-f ext4] [test_file]"
|
||||
die
|
||||
fi
|
||||
|
||||
MNT_DIR="/mnt/tmp-ums-test"
|
||||
|
||||
VID=$1; shift
|
||||
PID=$1; shift
|
||||
PART_NUM=$1; shift
|
||||
|
||||
if [ "$1" == "-f" ]; then
|
||||
shift
|
||||
FS_TO_FORMAT=$1; shift
|
||||
fi
|
||||
|
||||
TEST_FILE=$1
|
||||
|
||||
for f in `find /sys -type f -name idProduct`; do
|
||||
d=`dirname ${f}`
|
||||
if [ `cat ${d}/idVendor` != "${VID}" ]; then
|
||||
continue
|
||||
fi
|
||||
if [ `cat ${d}/idProduct` != "${PID}" ]; then
|
||||
continue
|
||||
fi
|
||||
USB_DEV=${d}
|
||||
break
|
||||
done
|
||||
|
||||
if [ -z "${USB_DEV}" ]; then
|
||||
echo "Connect target"
|
||||
echo "e.g. ums 0 mmc 0"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
MEM_DEV=`find $USB_DEV -type d -name "sd[a-z]" | awk -F/ '{print $(NF)}' -`
|
||||
|
||||
mkdir -p $RCV_DIR
|
||||
if [ ! -d $MNT_DIR ]; then
|
||||
mkdir -p $MNT_DIR
|
||||
fi
|
||||
|
||||
if [ "$PART_NUM" == "-" ]; then
|
||||
PART_NUM=""
|
||||
fi
|
||||
MEM_DEV=$MEM_DEV$PART_NUM
|
||||
|
||||
if [ -n "$FS_TO_FORMAT" ]; then
|
||||
echo -n "Formatting partition /dev/$MEM_DEV to $FS_TO_FORMAT"
|
||||
mkfs -t $FS_TO_FORMAT /dev/$MEM_DEV > /dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
printf " $COLOUR_GREEN DONE $COLOUR_DEFAULT \n"
|
||||
else
|
||||
die
|
||||
fi
|
||||
fi
|
||||
|
||||
printf "Mount: /dev/$MEM_DEV \n"
|
||||
|
||||
if [ -n "$TEST_FILE" ]; then
|
||||
if [ ! -e $TEST_FILE ]; then
|
||||
echo "No file: $TEST_FILE"
|
||||
die
|
||||
fi
|
||||
ums_test_file $TEST_FILE
|
||||
else
|
||||
for file in $DIR*.$SUFFIX
|
||||
do
|
||||
ums_test_file $file
|
||||
done
|
||||
fi
|
||||
|
||||
cleanup
|
||||
|
||||
exit 0
|
Loading…
Add table
Reference in a new issue