This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linker generated CRC algorithm for Hercules RM48 device

Hi,

I tried the linker generated CRC feature in the TI ARM codegen tools 5.1.1 and it seemed to work fine with the TMS570 and build in hardware CRC module.

However after I ported my example to the RM48 device, the linkers calculated CRC doesn't matched the one the hardware CRC module has generated.

Do I have to change the specified algorithm from TMS570_CRC64_ISO to another algorithm for the RM48?

Thanks,
Christian

  • You can see which CRC algorithms are currently supported by looking at the file crc_table.h in the \include directory of the compiler installation.  At this time, TMS570_CRC64_ISO is the only one supported.

    Someone from the hardware side of things needs to comment.  That is why I am moving this thread to the Hercules forum.

    Thanks and regards,

    -George

  • I'm facing the same problem and from my point of view this should indeed be considered a linker problem. Here is some data to support this:

    I'm using CCS 5.4.0.00091 and TI Compiler 5.0.4/5.0.6 and the linker generated CRC does not correspond to the algorithm defined as TMS570_CRC64_ISO. I'll use the interrupt vectors as an example:


    Interrupt vectors read out from device (with swapping)

    The linker generated CRC for this codeblock is 0xA40CD685AB253A14, while the hardware calculated CRC is 0xE242AA0AD5C78FA3. To cross-check which one is correct I used pycrc with the parameters mirroring the TMS570_CRC64_ISO algorithm (references: this thread and the crc_tbl.h from the compiler):

    pycrc.py --width 64 --poly 0x000000000000001b --reflect-in False --xor-in 0x0000000000000000 --reflect-out False --xor-out 0x0000000000000000 --check-hexstring EA01820EEA0178D6EA018230EA018386EAFFFFFEEA018135E51FF1B0E51FF1B0

    The output of this was 0xe242aa0ad5c78fa3 which is the same as the hardware generated CRC. For me this points to a linker problem.

  • George,

    What endianness is assumed in the calculations by the linker? TMS570 is BE32 and RM4x is LE.

    Regards,
    Karl 

  • Is there any progress in this issue?

  • Sebastian,

    this request has been internally forwarded, we will inform you as soon as we have an answer/solution.

    Best Regards,
    Christian

  • This is a linker bug. I have filed SDSCM00048448 to track the issue. Unfortunately I do not think there is a workaround for this issue.

  • Hello,

    I tested the new ARM CG Tools Version 5.1.3 and it seems, that the CRC now gets calculated correctly for the RM48.
    The new tools will be added to the CCS update function soon.

    I added an example project showing how to use the CRC feature in principal on the RM48.

    Best Regards,
    Christian

    Linker CRC and ECC 2013-12-13.zip