On 15/11/15 11:15, Microtech Dart wrote:
(snip)
"The cyclical redundancy check (CRC) shall consist of two bytes, calculated
over the 512 bytes of interchange data, and the 4-byte block address, *starting
with all ONEs, CRC initial value*, and using the CRC Generating polynomial:
x16 + x12 + x5 + 1
*"starting with all ONEs, CRC initial value"*? What does THAT mean? Do I
need to do some kind of register shift? xorin or xorout?
It's the initial
value of each bit, corresponding to the "Init before
calculation" lines in the code at the bottom of the page. There doesn't
seem to be any provision for entering this value in the online
computation (and all-zeros is *not* a good initialisation vector!)
One way around this would be to come up with a byte sequence that
gave a CRC of all ones (i.e. 84 CF) and pre-pend that to the main
sequence, and then it works. But I assume you're using some sort of
code, so just make sure it's initialised appropriately.
I've even played with
http://reveng.sourceforge.net/, but I'm having
trouble even understanding the meaning of the input values and parameters
with this.
I appreciate any feedback that anyone can give, here.
Best of luck! CRCs are fun!
--
Lawrence Wilkinson lawrence at ljw.me.uk
The IBM 360/30 page
http://www.ljw.me.uk/ibm360