[U-Boot-Users] Assigning crc32 result to a variable

Antonio Di Bacco antonio.dibacco at aruba.it
Mon May 22 23:07:19 CEST 2006


Thank you for your help, anyway I need some more automated check. I've written  
a  "private" crc32 that looks for count at an address, instead of getting it 
directly on command line. Furthermore it returns 1 or 0 according to the 
check result.

Bye,
Antonio.

On Monday 22 May 2006 22:23, Wolfgang Denk wrote:
> In message <200605222141.08815.antonio.dibacco at aruba.it> you wrote:
> > But I would like to use the result of crc32 in a hush script!!!
>
> Yes, so do it. where exactly is the problem?
>
> > > > Is it possible to assign the result from crc32 to a variable in
> > > > u-boot?
> > >
> > > No, but you can store it in  a  memory  location,  where  it  can  be
> > > tested/processed as well.
>
> Example:
>
> Find location of a good U-boot image in memory:
>
> 	=> imls
> 	Image at 40040000:
> 	   Image Name:   Linux-2.4.25
> 	   Created:      2005-11-18   0:30:24 UTC
> 	   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
> 	   Data Size:    731546 Bytes = 714.4 kB
> 	   Load Address: 00000000
> 	   Entry Point:  00000000
> 	   Verifying Checksum ... OK
>
> Dump header information:
>
> 	=> md 40040000 10
> 	40040000: 27051956 c47eeeff 437d20a0 000b299a    '..V.~..C} ...).
> 	40040010: 00000000 00000000 776ed878 05070201    ........wn.x....
> 	40040020: 4c696e75 782d322e 342e3235 00000000    Linux-2.4.25....
> 	40040030: 00000000 00000000 00000000 00000000    ................
>
> So we know that 0x000b299a (at offset 0x0C) is the data  length,  and
> 0x776ed878  (at  offset  0x18)  is  the  data  CRC;  the  data starts
> immediately after the header, i. e. at 0x40040040.
>
> Clear memory word at address 0x0000 and verify:
>
> 	=> mw 0 0 1
> 	=> md 0 1
> 	00000000: 00000000    ....
>
> Test if the value stored at address 0x0000 is the correct image checksum:
>
> 	=> if itest *0 == 776ed878 ; then echo CRC ok ; else echo CRC bad ; fi
> 	CRC bad
>
> It ain't - as expected.
>
> Calculate image checksum and store at address 0:
>
> 	=> crc32 40040040 000b299a 0
> 	CRC32 for 40040040 ... 400f29d9 ==> 776ed878
>
> Verify manually:
>
> 	=> md 0 1
> 	00000000: 776ed878    wn.x
>
> Verify using hush shell commands:
>
> 	=> if itest *0 == 776ed878 ; then echo CRC ok ; else echo CRC bad ; fi
> 	CRC ok
>
>
> Next question, please.
>
> Best regards,
>
> Wolfgang Denk




More information about the U-Boot mailing list