The package implements a number of CRC functions as described below. The API to these functions is in the include file cyg/crc/crc.h.
This function implements a 32 bit CRC which is compliant to the POSIX 1008.2 Standard. This is the same as the Linux cksum program.
cyg_uint32 cyg_posix_crc32(unsigned char * s, int len); |
The CRC calculation is run over the data pointed to by
s
, of length len
. The
CRC is returned as an unsigned long.
These functions implement a 32 bit CRC by Gary S. Brown. They use the polynomial X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0.
cyg_uint32 cyg_crc32(unsigned char * s, int len); cyg_uint32 cyg_crc32_accumulate(cyg_uint32 crc, unsigned char * s, int len); |
The CRC calculation is run over the data pointed to by
s
, of length len
. The
CRC is returned as an unsigned long.
The CRC can be calculated over data separated into multiple
buffers by using the function cyg_crc32_accumulate()
. The parameter crc
should be the
result from the previous CRC calculation.
These functions implement the 32 bit CRC used by the Ethernet FCS word.
cyg_uint32 cyg_ether_crc32(unsigned char * s, int len); cyg_uint32 cyg_ether_crc32_accumulate(cyg_uint32 crc, unsigned char * s, int len); |
The CRC calculation is run over the data pointed to by
s
, of length len
. The
CRC is returned as an unsigned long.
The CRC can be calculated over data separated into multiple
buffers by using the function cyg_ether_crc32_accumulate()
. The parameter crc
should be the
result from the previous CRC calculation.
This function implements a 16 bit CRC. It uses the polynomial x^16+x^12+x^5+1.
cyg_uint16 cyg_crc16(unsigned char * s, int len); |
The CRC calculation is run over the data pointed to by
s
, of length len
. The
CRC is returned as an unsigned short.