From patchwork Mon Aug 18 10:12:28 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?=C5=81ukasz_Majewski?= X-Patchwork-Id: 380946 X-Patchwork-Delegate: marek.vasut@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 2C55A1400D2 for ; Mon, 18 Aug 2014 20:13:46 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 30E524B61A; Mon, 18 Aug 2014 12:13:35 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Pu-K+oRkKVTn; Mon, 18 Aug 2014 12:13:35 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id ECE804B576; Mon, 18 Aug 2014 12:13:32 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 008934B576 for ; Mon, 18 Aug 2014 12:13:31 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Mx5WaZuQxP-Q for ; Mon, 18 Aug 2014 12:13:30 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mailout4.samsung.com (mailout4.samsung.com [203.254.224.34]) by theia.denx.de (Postfix) with ESMTPS id AC2B74B5F1 for ; Mon, 18 Aug 2014 12:13:13 +0200 (CEST) Received: from epcpsbgm1.samsung.com (epcpsbgm1 [203.254.230.26]) by mailout4.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0NAH0088NZ1YT4C0@mailout4.samsung.com> for u-boot@lists.denx.de; Mon, 18 Aug 2014 19:13:10 +0900 (KST) X-AuditID: cbfee61a-f79e46d00000134f-62-53f1d1b6c2eb Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id ED.5E.04943.6B1D1F35; Mon, 18 Aug 2014 19:13:10 +0900 (KST) Received: from mcdsrvbld02.digital.local ([106.116.37.23]) by mmp2.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0NAH00A89Z0UL390@mmp2.samsung.com>; Mon, 18 Aug 2014 19:13:10 +0900 (KST) From: Lukasz Majewski To: u-boot@lists.denx.de, Stephen Warren Date: Mon, 18 Aug 2014 12:12:28 +0200 Message-id: <1408356748-9782-4-git-send-email-l.majewski@samsung.com> X-Mailer: git-send-email 1.7.10.4 In-reply-to: <1408356748-9782-1-git-send-email-l.majewski@samsung.com> References: <1406641544-27372-1-git-send-email-l.majewski@samsung.com> <1408356748-9782-1-git-send-email-l.majewski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrGLMWRmVeSWpSXmKPExsVy+t9jQd1tFz8GG7w9bWjx5hG3xZuHmxkt 3rQ1MlrsuHyDxWLX7cksFt+2bGO0uDG9hdXi1cE2FovJi+czW7zd28nuwOUx7+dEJo/ZDRdZ PObNOsHicfbODkaPddPeMnv0Nr9j8+jbsorR4/iN7UweG+eGBnBGcdmkpOZklqUW6dslcGW8 PdHMVnBev2Lh9i2MDYyPVboYOTgkBEwkJl9h6WLkBDLFJC7cW88GYgsJTGeU+HLXpIuRC8ju YpJYfWA2O0iCTUBP4vPdp0wgtoiAg8TMS0dZQIqYBbYxSRw7MAcsISzgJ7Fu8U2wSSwCqhJz pq5jBbF5BVwl/r5dzQ6xTVGi+9kEsBpOATeJC10r2CG2NTFKLPv8hnECI+8CRoZVjKKpBckF xUnpuYZ6xYm5xaV56XrJ+bmbGMGh+UxqB+PKBotDjAIcjEo8vB6vPwQLsSaWFVfmHmKU4GBW EuHNPv8xWIg3JbGyKrUoP76oNCe1+BCjNAeLkjjvgVbrQCGB9MSS1OzU1ILUIpgsEwenVAPj ss6iAKGiya+3BX0TObjonEjNzOeL9Kyn7K9aV1jx5fmHxE3XPl+d2atwIFk+y+VUufvqSS7Z KxT+72dUC9jFf7U1RUcl6+r77BUzpNRMFBT/xkiFPYqX1L93xrjwQcmRpz8/5bHrsMYfcAk8 ddxAX0xy9WuenMTaW1IsZqG5SpeDG7P4WrYrsRRnJBpqMRcVJwIAJFVqgUkCAAA= Cc: Marek Vasut , Stephen Warren , Pantelis Antoniou , Przemyslaw Marczak , Tom Rini Subject: [U-Boot] [PATCH v3 3/3] test: ums: Add script for testing UMS gadget operation X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de 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 Acked-by: Stephen Warren --- Changes for v2: - Add -f switch for optional FS creation on target UMS partition - Remove need for passing FS type to script - Remove syncs - Use named variables instead of $1, $2, $3 ... etc - Create temporary mount directory at /mnt/tmp-ums-test/ - Use target device's VID/PID to find exact mount device (/dev/sdX) - Add support for Ctrl+C tap - Rewrite README entry Changes for v3: - Allow PART_NUM to be "-", which gives access to the whole device - Rewrite VID/PID sysfs matching code - Update documentation for PART_NUM - Add -type d switch for memory device matching --- test/ums/README | 30 ++++++++ test/ums/ums_gadget_test.sh | 175 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 205 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..69aa6b7 --- /dev/null +++ b/test/ums/README @@ -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 04e8 6601 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. diff --git a/test/ums/ums_gadget_test.sh b/test/ums/ums_gadget_test.sh new file mode 100755 index 0000000..56d4616 --- /dev/null +++ b/test/ums/ums_gadget_test.sh @@ -0,0 +1,175 @@ +#! /bin/bash + +# Copyright (C) 2014 Samsung Electronics +# Lukasz Majewski +# +# 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