[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