eCos Reference Manual
Prev |  | Next

# Chapter 50. CRC Functions

# CRC API

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`.

## cyg_posix_crc32

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.

## cyg_crc32

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.

## cyg_ether_crc32

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.

## cyg_crc16

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.

Prev | Home | Next
CRC Algorithms | Up | CPU load measurements