A shell script to parse environment.in from devirginator and create
a U-Boot compatible environment block from it, with CRC.
A blank line is required in environment.in after each stanza.
Also a shell script to program the output environment block over
DFU.
Signed-off-by: Andy Green <[EMAIL PROTECTED]>
--- /dev/null 2007-12-16 05:30:16.544083553 +0000
+++ genubootparamblock 2007-12-20 12:50:14.000000000 +0000
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+ENV_LENGTH=$(( 256 * 1024 ))
+
+if [ -z "$1" -o -z "$2" ] ; then
+ echo "Usage: $0 inputfile outputfile"
+ exit 1
+fi
+
+ # little bit tricky because u-boot protects it with CRC32
+
+ rm -f /tmp/b1
+ FLAG=
+ cat $1 | while read line ; do
+ if [ ${#line} -lt 1 ] ; then
+ if [ ! -z "$FLAG" ]; then
+ echo -e -n "\000" >>/tmp/b1
+ fi
+ FLAG=
+ SPACE=
+ else
+ if [ ! -z "$SPACE" ] ; then
+ echo -n " " >>/tmp/b1
+ SPACE=
+ fi
+ if [ ${line:0:1} != '#' ] ; then
+ echo -n $line >>/tmp/b1
+ if [ ${line: -1} != '=' ] ; then
+ SPACE=1
+ fi
+ FLAG=1
+ fi
+ fi
+ done
+
+ LEN=`ls -l /tmp/b1 | tr -s ' ' | cut -d' ' -f5`
+
+ while [ $LEN -lt $(( $ENV_LENGTH - 32 )) ] ; do
+ echo -e -n "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" >>/tmp/b1
+ LEN=$(( $LEN + 16 ))
+ done
+
+ while [ $LEN -lt $(( $ENV_LENGTH - 4 )) ] ; do
+ echo -e -n "\000" >>/tmp/b1
+ LEN=$(( $LEN + 1 ))
+ done
+
+ CRC=`crc32 /tmp/b1 | tr '[a-z]' '[A-Z]'`
+
+ BYTE=\\0`echo "ibase=16 ; obase=8 ; ${CRC:6:2}" | bc`
+ echo -e -n $BYTE >/tmp/b2
+ BYTE=\\0`echo "ibase=16 ; obase=8 ; ${CRC:4:2}" | bc`
+ echo -e -n $BYTE >>/tmp/b2
+ BYTE=\\0`echo "ibase=16 ; obase=8 ; ${CRC:2:2}" | bc`
+ echo -e -n $BYTE >>/tmp/b2
+ BYTE=\\0`echo "ibase=16 ; obase=8 ; ${CRC:0:2}" | bc`
+ echo -e -n $BYTE >>/tmp/b2
+
+ cat /tmp/b1 >>/tmp/b2
+
+ cp /tmp/b2 $2
+
+
--- /dev/null 2007-12-16 05:30:16.544083553 +0000
+++ dfu-env 2007-12-20 14:33:57.000000000 +0000
@@ -0,0 +1,7 @@
+#!/bin/bash
+../dfu-util/src/dfu-util -a 2 -d 0x1457:0x5119 -D $1
+if [ $? -eq 1 ] ; then
+ ../dfu-util/src/dfu-util -a 2 -d 0x1457:0x5120 -D $1
+ ../dfu-util/src/dfu-util -a 2 -d 0x1457:0x5119 -D $1
+fi
+