2021-02-16 08:55 AM
The documentation I have says the Ethernet calculation with 0x4C11DB7... but I don't get results matching what I get from any other calculator. To remove any endianess or mirroring questions I've tried 0x00000000 and 0x66666666 (e.g.). All calculators I have produce 2144_DF1C and E425_C810 for those 2 inputs. From the CRC unit I get 6904_BB59 and 7B91_8196 (which don't seem to be related by combinations -- on the final value -- of bit flipping and reflection).
Yes I asked what the results are -- because I can't imagine what I' don't see in the 1 -> CR; XXXX -> DR; Result <- DR sequence.
TIA,
Brett
Solved! Go to Solution.
2021-03-17 11:47 AM
2021-03-17 12:15 PM
Without answering your final question - why would it be difficult to skip that one position while performing the checksumming?
JW
2021-03-17 12:28 PM
2021-03-17 12:32 PM
>>Given the words b1 b2 b3 CK a1 a2 (where a-s and b-s can’t be modified), is it possible to calculate the value to stick into CK so that the checksum run over all 6 words in order produces a 0?
Yes,
I also provided a method to drive it backward.
You'd drive it back from the end, and from front to the gap, and then compute a bridging value.
2021-03-17 01:12 PM
2021-03-17 03:20 PM
With srecord, I believe you would need to use the -exclude filter, to exclude the CRC's position from calculation. I did not try,though.
JW
2021-03-18 02:58 PM
2021-03-18 06:16 PM
It's an LFSR like a Fire Code, we have to apply data in reverse to unwind things.
uint32_t test1[] = { // Should have zero remainder divided into STM32 32-bit polynomial, init 0xFFFFFFFF
0x11111111,0x22222222,0x33333333,0x44444444,0x55555555,0x66666666,
0x77777777,0x88888888,0x99999999,0xAAAAAAAA,0xAE692FF9,0xBBBBBBBB,
0xCCCCCCCC };
uint32_t test2[] = {
0xE5E5E5E5,0xE5E5E5E5,0x7042D51B,0xBBBBBBBB,0xCCCCCCCC };
Done with math, not brute force.
2021-03-25 11:53 AM