I am evolving my implementation of a CRC algorithm.
I have bootloaders that calculates a CRC and compares to one found in the FLASH. If they are the same, then the bootloader jumps to the application.
I originally just used the CRC16-XMODEM (+2 zero bytes) code used by IAR on AVR targets. As we move to larger FLASH, this is getting to be too slow.
TMC4C123's ROM code uses CRC16-IBM.
TMC4C129's peripheral uses CRC16-XMODEM.
Why were two different algorithm's chosen?
I notice that the speed performance between the two implementations are essentially the same. Are they the same?
I would have assumed the ROM code would be just that and probably about as fast as an optimized algorithm (it is markedly faster).
I would have assumed the peripheral would use a bunch of custom transistors to find impressive speed.