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

In message 200605222141.08815.antonio.dibacco@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

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@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
participants (2)
-
Antonio Di Bacco
-
Wolfgang Denk