A cyclic redundancy code (CRC) is a powerful type of checksum that is able to detect corruption of data that is stored in and/or transmitted between embedded systems.  Generally speaking, CRCs are most efficiently calculated in dedicated hardware.  However, sometimes you must compute a CRC in software, for example in a C or C++ program that will run on a microcontroller.

To save yourself time as well as to ensure your implementation of the CRC's modulo-2 arithmetic is efficient and bug-free, download Michael Barr's public domain CRC functions for embedded C/C++ programs.  This small C source code library is available as a free digital download from our website and has been widely tested and deployed by thousands of embedded software developers.

For more information on checksums, CRCs, and how our code works, see the related video and articles linked below.

Related Resources

Tech Talk:  Checksums and CRCs

CRC Series, Part 1: Additive Checksums

CRC Series, Part 2: CRC Mathematics and Theory

CRC Series, Part 3: CRC Implementation Code in C/C++

Related Training Courses

Embedded Software Boot Camp

Hardware Interfacing with C

Still Need Help?

If your team needs additional support services for implementing checksums, CRCs, or other programming issues, contact us.