SHA1 usage:
-----------

In the U-Boot Image for the pcs440ep board is a SHA1 checksum integrated.
This SHA1 sum is used, to check, if the U-Boot Image in Flash is not
corrupted.

The following command is available:

=> help sha1
sha1 address len [addr]  calculate the SHA1 sum [save at addr]
     -p calculate the SHA1 sum from the U-Boot image in flash and print
     -c check the U-Boot image in flash

"sha1 -p"
	calculates and prints the SHA1 sum, from the Image stored in Flash

"sha1 -c"
	check, if the SHA1 sum from the Image stored in Flash is correct


It is possible to calculate a SHA1 checksum from a memoryrange with:

"sha1 address len"

If you want to store a new Image in Flash for the pcs440ep board,
which has no SHA1 sum, you can do the following:

a) cp the new Image on a position in RAM (here 0x300000)
   (for this example we use the Image from Flash, stored at 0xfffa0000 and
    0x60000 Bytes long)

"cp.b fffa0000 300000 60000"

b) Initialize the SHA1 sum in the Image with 0x00
   The SHA1 sum is stored in Flash at:
			   CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN + SHA1_SUM_POS
   for the pcs440ep Flash:	 0xfffa0000 +	      0x60000 +        -0x20
			    = 0xffffffe0
   for the example in RAM:	   0x300000 +	      0x60000 +        -0x20
			    = 0x35ffe0

   note: a SHA1 checksum is 20 bytes long.

"mw.b 35ffe0 0 14"

c) now calculate the SHA1 sum from the memoryrange and write
   the calculated checksum at the right place:

"sha1 300000 60000 35ffe0"

Now you have a U-Boot-Image for the pcs440ep board with the correct SHA1 sum.

If you do a "./MAKEALL pcs440ep" or a "make all" to get the U-Boot image,
the correct SHA1 sum will be automagically included in the U-Boot image.

Heiko Schocher, 11 Jul 2007
