Skip to content
Snippets Groups Projects
Commit 7ad67e55 authored by Stephen Warren's avatar Stephen Warren Committed by Tom Rini
Browse files

test: dfu: script enhancements


Various misc enhancements to dfu_gadget_test.sh:

* After every write (download), perform a write to a different file
  with different data. This ensures that the DFU buffer's content is
  replaced, so that if the read (upload) succeeds, we know that the
  correct data was actually read from the storage device, rather than
  simply being left over in the DFU buffer. This requires two alt
  setting names to be passed to the script, and a dummy data file to
  be generated by dfu_gadget_test_init.sh.

* Fix the assumption that dfu_gadget_test.sh is run from the directory
  that contains it, by cd'ing to that directory before invoking
  ./dfu_gadget_test_init.sh.

* Use $DIR$RCV_DIR consistently, rather than using plain $RCV_DIR in
  some places.

* Add 959, 961 test file sizes, to be consistent with having one
  more than and one less than all the other "round" sizes 64, 128, and
  4096.

* Remove references to $BKP_DIR from dfu_gadget_test_init.sh, since it
  isn't used.

Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
parent a4c86bbb
No related branches found
No related tags found
No related merge requests found
DFU TEST CASE DESCRIPTION: DFU TEST CASE DESCRIPTION:
The prerequisites for running this script are assured by dfu_gadget_test_init.sh. The prerequisites for running this script are assured by
dfu_gadget_test_init.sh, which is automatically invoked by dfu_gadget_test.sh.
In this file user is able to generate their own set of test files by altering 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 default set of TEST_FILES_SIZES variable.
The dfu_gadget_test_init.sh would generate test images only if they are not The dfu_gadget_test_init.sh would generate test images only if they are not
already generated. already generated.
Moreover, on a target device the "dfu_alt_info" env variable should be extended On the target device, environment variable "dfu_alt_info" must contain at
to have "dfu_test.bin fat 0 6;" \ entry ([1]). For reference please consult the least:
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 dfu_test.bin fat 0 6;dfudummy.bin fat 0 6
created in a convenient way with exporting partitions via UMS (ums 0 mmc 0)
and using standard tools on host (like mkfs.ext4). Depending on your device, you may need to replace "fat" with
"ext4", and "6" with the relevant partition number. 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 supported by U-Boot.
These can be created by exporting storage devices via UMS (ums 0 mmc 0) and
using standard tools on host (like mkfs.ext4).
Example usage: Example usage:
1. On the target: 1. On the target:
env default -a setenv dfu_alt_info dfu_test.bin fat 0 6\;dfudummy.bin fat 0 6
dfu 0 mmc 0 dfu 0 mmc 0
2. On the host: 2. On the host:
./dfu_gadget_test.sh 11 [test_file] test/dfu/dfu_gadget_test.sh dfu_test.bin dfudummy.bin
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. ... where dfu_test.bin and dfudummy.bin are the names of the alt settings from
In its output one should look for the 'name="dfu_test1.bin"' and corresponding $dfu_alt_info.
alt=11.
#! /bin/bash #! /bin/bash
set -e # any command return if not equal to zero set -e # any command return if not equal to zero
clear clear
...@@ -11,10 +12,11 @@ SUFFIX=img ...@@ -11,10 +12,11 @@ SUFFIX=img
RCV_DIR=rcv/ RCV_DIR=rcv/
LOG_FILE=./log/log-`date +%d-%m-%Y_%H-%M-%S` LOG_FILE=./log/log-`date +%d-%m-%Y_%H-%M-%S`
cd `dirname $0`
./dfu_gadget_test_init.sh ./dfu_gadget_test_init.sh
cleanup () { cleanup () {
rm -rf $RCV_DIR rm -rf $DIR$RCV_DIR
} }
die () { die () {
...@@ -40,6 +42,8 @@ dfu_test_file () { ...@@ -40,6 +42,8 @@ dfu_test_file () {
MD5_TX=$MD5SUM MD5_TX=$MD5SUM
dfu-util -D ${DIR}/dfudummy.bin -a $TARGET_ALT_SETTING_B >> $LOG_FILE 2>&1 || die $?
N_FILE=$DIR$RCV_DIR${1:2}"_rcv" N_FILE=$DIR$RCV_DIR${1:2}"_rcv"
dfu-util -U $N_FILE -a $TARGET_ALT_SETTING >> $LOG_FILE 2>&1 || die $? dfu-util -U $N_FILE -a $TARGET_ALT_SETTING >> $LOG_FILE 2>&1 || die $?
...@@ -62,7 +66,7 @@ printf "$COLOUR_GREEN=========================================================== ...@@ -62,7 +66,7 @@ printf "$COLOUR_GREEN===========================================================
echo "DFU EP0 transmission test program" echo "DFU EP0 transmission test program"
echo "Trouble shoot -> disable DBG (even the KERN_DEBUG) in the UDC driver" echo "Trouble shoot -> disable DBG (even the KERN_DEBUG) in the UDC driver"
echo "@ -> TRATS2 # dfu 0 mmc 0" echo "@ -> TRATS2 # dfu 0 mmc 0"
mkdir -p $RCV_DIR mkdir -p $DIR$RCV_DIR
touch $LOG_FILE touch $LOG_FILE
if [ $# -eq 0 ] if [ $# -eq 0 ]
...@@ -72,10 +76,11 @@ then ...@@ -72,10 +76,11 @@ then
fi fi
TARGET_ALT_SETTING=$1 TARGET_ALT_SETTING=$1
TARGET_ALT_SETTING_B=$2
if [ -n "$2" ] if [ -n "$3" ]
then then
dfu_test_file $2 dfu_test_file $3
else else
for file in $DIR*.$SUFFIX for file in $DIR*.$SUFFIX
do do
......
#! /bin/bash #! /bin/bash
set -e # any command return if not equal to zero set -e # any command return if not equal to zero
clear clear
...@@ -7,9 +8,8 @@ COLOUR_GREEN="\33[32m" ...@@ -7,9 +8,8 @@ COLOUR_GREEN="\33[32m"
COLOUR_DEFAULT="\33[0m" COLOUR_DEFAULT="\33[0m"
LOG_DIR="./log" LOG_DIR="./log"
BKP_DIR="./bkp"
TEST_FILES_SIZES="127 128 129 8M 4095 4096 4097 63 64 65 960" TEST_FILES_SIZES="63 64 65 127 128 129 4095 4096 4097 959 960 961 8M"
printf "Init script for generating data necessary for DFU test script" printf "Init script for generating data necessary for DFU test script"
...@@ -17,10 +17,6 @@ if [ ! -d $LOG_DIR ]; then ...@@ -17,10 +17,6 @@ if [ ! -d $LOG_DIR ]; then
`mkdir $LOG_DIR` `mkdir $LOG_DIR`
fi fi
if [ ! -d $BKP_DIR ]; then
`mkdir $BKP_DIR`
fi
for size in $TEST_FILES_SIZES for size in $TEST_FILES_SIZES
do do
FILE="./dat_$size.img" FILE="./dat_$size.img"
...@@ -28,6 +24,7 @@ do ...@@ -28,6 +24,7 @@ do
dd if=/dev/urandom of="./dat_$size.img" bs=$size count=1 > /dev/null 2>&1 || exit $? dd if=/dev/urandom of="./dat_$size.img" bs=$size count=1 > /dev/null 2>&1 || exit $?
fi fi
done done
dd if=/dev/urandom of="./dfudummy.bin" bs=1024 count=1 > /dev/null 2>&1 || exit $?
printf "$COLOUR_GREEN OK $COLOUR_DEFAULT \n" printf "$COLOUR_GREEN OK $COLOUR_DEFAULT \n"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment