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:
			   CFG_MONITOR_BASE + CFG_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
