blob: 7f121f134db7d64df13d6b76c6611b6c7a1ce788 [file] [log] [blame]
#!/bin/sh
#
# UBI Volume creation/deletion/write/read test script.
# Uses our flash update tools and the associated toolchain for flash
# image creation.
#
# Written in shell language to reduce dependencies to more sophisticated
# interpreters, which may not be available on some stupid platforms.
#
# Author: Frank Haverkamp <haver@vnet.ibm.com>
#
# 1.0 Initial version
#
VERSION="1.0"
export PATH=$PATH:~/bin:/usr/local/bin:/home/dedekind/work/prj/ubi/tools/flashutils/bin/
UBIMKVOL=ubimkvol
UBIRMVOL=ubirmvol
UBIWRITEVOL=ubiupdatevol
PFIFLASH=pfiflash
CMP=cmp
MAXVOL=32
test_pfi=test_complete.pfi
real_pfi=example_complete.pfi
# 128 KiB 131072
# 256 KiB 262144
# 512 KiB 524288
#
# To have a standardized output I define the following function to be
# used when a test was ok or when it failed.
#
failed ()
{
echo "FAILED"
}
passed ()
{
echo "PASSED"
}
#
# Print sucess message. Consider to exit with zero as return code.
#
exit_success ()
{
echo "SUCCESS"
exit 0
}
#
# Print failure message. Consider to exit with non zero return code.
#
exit_failure ()
{
echo "FAILED"
exit 1
}
###############################################################################
#
# START
#
###############################################################################
fix_sysfs_issue ()
{
echo -n "*** Fixing the sysfs issue with the /dev nodes ... "
minor=0
major=`grep ubi0 /proc/devices | sed -e 's/\(.*\) ubi0/\1/'`
rm -rf /dev/ubi0
mknod /dev/ubi0 c $major 0
for minor in `seq 0 $MAXVOL`; do
### echo " mknod /dev/ubi0_$minor c $major $(($minor + 1))"
rm -rf /dev/ubi0_$minor
mknod /dev/ubi0_$minor c $major $(($minor + 1))
done
passed
}
# delete_volume - Delete a volume. If it does not exist, do not try
# to delete it.
# @id: volume id
#
delete_volume ()
{
volume=$1
### FIXME broken sysfs!!!!
if [ -e /sys/class/ubi/$volume -o -e /sys/class/ubi/ubi0/$volume -o -e /sys/class/ubi/ubi0_$volume ]; then
echo -n "*** Truncate volume if it exists ... "
$UBIWRITEVOL -d0 -n$volume -t
if [ $? -ne "0" ] ; then
exit_failure
fi
passed
echo -n "*** Delete volume if it exists ... "
$UBIRMVOL -d0 -n$volume
if [ $? -ne "0" ] ; then
exit_failure
fi
passed
fi
}
echo "***********************************************************************"
echo "* UBI Tools Testing starts now ... *"
echo "* Good luck! *"
echo "***********************************************************************"
# Set to zero if not running on example hardware
grep ubi /proc/devices > /dev/null
if [ $? -ne "0" ]; then
echo "No UBI found in /proc/devices! I am broken!"
exit_failure
fi
# Set to zero if not running on example hardware
grep 1142 /proc/cpuinfo > /dev/null
if [ $? -eq "0" ]; then
echo "Running on example hardware"
mount -o remount,rw / /
sleep 1
fix_sysfs_issue
else
echo "Running on other hardware"
fi
### Test basic stuff
pfiflash_basic ()
{
echo "Calling pfiflash with test-data ... "
echo " $PFIFLASH $test_pfi"
$PFIFLASH $test_pfi
if [ $? -ne "0" ]; then
echo "Uhhh something went wrong!"
exit_failure
fi
passed
echo "Testing if data is correct 10 and 11 ... "
$CMP /dev/ubi0_10 /dev/ubi0_11
if [ $? -ne "0" ]; then
echo "Mirrored volumes not equal!"
exit_failure
fi
passed
echo "Comparing against original data ... "
$CMP /dev/ubi0_10 test_u-boot.bin
if [ $? -ne "0" ]; then
echo "Compared volume not equal!"
exit_failure
fi
passed
echo "Testing if data is correct 12 and 13 ... "
$CMP /dev/ubi0_12 /dev/ubi0_13
if [ $? -ne "0" ]; then
echo "Mirrored volumes not equal!"
exit_failure
fi
passed
echo "Comparing against original data ... "
$CMP /dev/ubi0_12 test_vmlinux.bin
if [ $? -ne "0" ]; then
echo "Compared volume not equal!"
exit_failure
fi
passed
echo "Testing if data is correct 14 and 15 ... "
$CMP /dev/ubi0_14 /dev/ubi0_15
if [ $? -ne "0" ]; then
echo "Mirrored volumes not equal!"
exit_failure
fi
passed
}
### Test each and everything
pfiflash_advanced ()
{
if [ -e example_complete.pfi ]; then
echo "Calling pfiflash with real data ... "
$PFIFLASH -p overwrite --complete example_complete.pfi
if [ $? -ne "0" ]; then
echo "Uhhh something went wrong!"
exit_failure
fi
passed
echo "Testing if data is correct 2 and 3 ... "
$CMP /dev/ubi0_2 /dev/ubi0_3
if [ $? -ne "0" ]; then
echo "Mirrored volumes not equal!"
exit_failure
fi
passed
echo "Comparing against original data ... "
$CMP /dev/ubi0_2 u-boot.bin
if [ $? -ne "0" ]; then
echo "Compared volume not equal!"
exit_failure
fi
passed
echo "Testing if data is correct 6 and 7 ... "
$CMP /dev/ubi0_6 /dev/ubi0_7
if [ $? -ne "0" ]; then
echo "Mirrored volumes not equal!"
exit_failure
fi
passed
echo "Comparing against original data ... "
$CMP /dev/ubi0_6 vmlinux.bin
if [ $? -ne "0" ]; then
echo "Compared volume not equal!"
exit_failure
fi
passed
fi
}
echo "***********************************************************************"
echo "* Testing pfiflash ... *"
echo "***********************************************************************"
echo "VERSION: $VERSION"
pfiflash_basic
pfiflash_advanced
echo "***********************************************************************"
echo "* Congratulations, no errors found! *"
echo "* Have fun with your cool UBI system! *"
echo "***********************************************************************"
exit_success