EOM
display_footer()
{
cat << EOM2
EOM2
}
TMPFILE=`mktemp`
TMPFILE_DATA=`mktemp`
cat > $TMPFILE
partition=$(cat $TMPFILE | sed -n '4p'| sed 's/.$//')
mtddevname=$(cat /proc/mtd | awk 'NR < 4' | awk -v pat="$partition" '$0 ~ pat {printf $1}' | sed 's/://')
mtddev="/dev/"$mtddevname
soffset=$(head -8 $TMPFILE | wc -c)
eoffset=$(tail -1 $TMPFILE | wc -c)
fsize=$(cat $TMPFILE | wc -c)
osize=$(((($fsize-$eoffset)-$soffset)-2))
check_params()
{
#check for 0 size file
if [ $osize -eq 0 ] ; then
cat << EOM1
Could not find Nand partition for $partition ...
EOM1
display_footer
rm -f $TMPFILE
exit
fi
mtdsz="0x"$(cat /proc/mtd | awk 'NR < 4' | awk -v pat="$partition" '$0 ~ pat {printf $2}')
mtdsz=$(($mtdsz))
if [ $osize -gt $mtdsz ] ; then
cat << EOM1
Input File too large (File Size=$osize, MTD Size=$mtdsz)
EOM1
display_footer
rm -f $TMPFILE
exit
fi
}
erase_flash()
{
cat << EOM1
Erasing mtd device $mtddev ...
EOM1
flash_eraseall -q $mtddev
}
program_flash()
{
dd if=$TMPFILE of=$TMPFILE_DATA skip=$soffset bs=1 count=$osize 2> /dev/null
cat << EOM1
Writing $osize bytes to $mtddev ...
EOM1
nandwrite -q $mtddev $TMPFILE_DATA -p
sync
cat << EOM2
Write to $mtddev complete
EOM2
}
check_params
erase_flash
program_flash
#cleanup
rm -f $TMPFILE
rm -f $TMPFILE_DATA
display_footer