[U-Boot] [PATCH] fat: scripts for prepare and test read fat files
Przemyslaw Marczak
p.marczak at samsung.com
Fri Dec 12 16:52:12 CET 2014
---------------------------------------------------------
mktest_files: script for generating random size long name files
---------------------------------------------------------
Usage:
./1_mktest_files.sh count
count - number of files to be generated
The output directory is: "./test_files"
---------------------------------------------------------
copy_files: copy the test_files/* into test partition mount point
---------------------------------------------------------
Usage:
./2_copy_files.sh mount_point
-----------------------------------------------------------
fat_test.sh: test fat read by write commands to the device console
----------------------------------------------------------
This script send commands to U-Boot console.
First specify few script variables, e.g:
- TTY="/dev/ttyS0"
- MMCDEV=0
- PARTITION=2
- LOAD_ADDR="0x40000000"
usage:
1. Target:
run: ums 0 mmc 0
2. Run script 1 and 2 to make and copy the test files
onto the test partition by UMS
3. This script:
- set test device $PARTITION and other variables in the script,
which is required for sending proper commands
- set $TTY in the script
run: ./3_fat_test.sh
4. Compare the crc results on the target and device consoles
(sorry for the mess on the console)
Signed-off-by: Przemyslaw Marczak <p.marczak at samsung.com>
---
1_mktest_files.sh | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
2_copy_files.sh | 20 ++++++++++++++
3_fat_test.sh | 38 ++++++++++++++++++++++++++
3 files changed, 140 insertions(+)
create mode 100755 1_mktest_files.sh
create mode 100755 2_copy_files.sh
create mode 100755 3_fat_test.sh
diff --git a/1_mktest_files.sh b/1_mktest_files.sh
new file mode 100755
index 0000000..e9f4e26
--- /dev/null
+++ b/1_mktest_files.sh
@@ -0,0 +1,82 @@
+#!/bin/bash
+#
+# Copyright (C) 2014 Samsung Electronics
+# Przemyslaw Marczak <p.marczak at samsung.com>
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+F_CNT=${1}
+OUT_DIR="./test_files"
+# File max: 100k
+f_max_size=255
+
+# Minimal len of long name -> len+"xxxk.bin"
+LONG_NAME_LEN=20
+
+if [ ${#1} -eq 0 ]
+ then
+ echo "Bad arg!"
+ echo "usage:"
+ echo "./mktest_files.sh count"
+ exit
+else
+ if [ -d $OUT_DIR ]
+ then
+ echo "Directory: \"$OUT_DIR\" exists - cleanup"
+ rm $OUT_DIR/*
+ else
+ echo "Test files directory: \"$OUT_DIR\""
+ mkdir $OUT_DIR
+ fi
+ echo "Generating $1 files:"
+fi
+
+######
+# 1. # Generate random size for the files
+######
+
+i=0
+for val in `rand -M $f_max_size -N $F_CNT -u`
+ do
+ f_size_list[$i]=$val
+# echo "Size[$i]: ${f_size_list[$i]}"
+ i=$(($i+1))
+done
+
+######
+# 2. # Prepare the long name
+######
+CHAR="_"
+
+for I in `seq 1 1 $LONG_NAME_LEN`; do
+ LONG_NAME="$LONG_NAME""$CHAR"
+done
+
+######
+# 3. # Generate files with random data
+######
+i=0
+# Set fat16 file extension (dot + 3 characters)
+EXT=".bin"
+for len_k in ${f_size_list[@]}
+ do
+
+ prefix="$len_k""k"
+
+ prefix_len=${#prefix}
+ long_name_len=${#LONG_NAME}
+ ext_len=${#EXT}
+ name=`echo "$prefix""$LONG_NAME" | head -c $long_name_len`
+ name=$name$EXT
+# echo Name: $name len: ${#name}
+
+ echo "$i Prefix: $prefix name len: ${#name} chars:"
+ full_name="$OUT_DIR/$name"
+
+ echo "$full_name"
+
+ dd if=/dev/urandom of=${full_name} bs=1k count=$len_k 2>/dev/null
+
+ i=$(($i+1))
+done
diff --git a/2_copy_files.sh b/2_copy_files.sh
new file mode 100755
index 0000000..6bfefc6
--- /dev/null
+++ b/2_copy_files.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+#
+# Copyright (C) 2014 Samsung Electronics
+# Przemyslaw Marczak <p.marczak at samsung.com>
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+#MOUNT_POINT - for the fat16 partition,
+# e.g. target partition using ums command
+
+MOUNT_POINT=$1
+DIR="test_files"
+
+for I in `ls -1 -S $DIR/`; do
+ echo Copying "$DIR/$I" to $DEV
+ cp "$DIR/$I" $MOUNT_POINT
+done
+
+sync
\ No newline at end of file
diff --git a/3_fat_test.sh b/3_fat_test.sh
new file mode 100755
index 0000000..07222a0
--- /dev/null
+++ b/3_fat_test.sh
@@ -0,0 +1,38 @@
+#!/bin/sh
+#
+# Copyright (C) 2014 Samsung Electronics
+# Przemyslaw Marczak <p.marczak at samsung.com>
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+TTY="/dev/ttyS0"
+MMCDEV=0
+PARTITION=2
+LOAD_ADDR="0x40000000"
+
+DIR="test_files"
+
+SPACE="_____________________________ "
+CMD_1_2="setenv t \"fatload mmc $MMCDEV:$PARTITION $LOAD_ADDR '\$F';"
+CMD_2_2="echo $SPACE File: '\$F'; crc $LOAD_ADDR '\$S'\""
+CMD="$CMD_1_2""$CMD_2_2"
+
+# Set command for loading DIR
+echo "$CMD" > $TTY
+
+for I in `ls -1 -S $DIR`;
+ do
+ FILE="$DIR"/"$I"
+ # Hex size:
+ SIZE=`ls -l $FILE | awk '{printf("%#x\n", $5)}'`
+ CRC=`crc32 $FILE`
+
+ echo
+ echo "File: $I"
+ echo " ==> $CRC"
+
+ CMD="setenv F \'$I\'; setenv S $SIZE; run t;"
+ echo "echo" > $TTY
+ echo $CMD > $TTY
+done
--
1.9.1
More information about the U-Boot
mailing list