Signatures and User Code CRC

Hi, I'm working with ADUCM3029 and I read in "ADuCM302x Ultra Low Power ARM Cortex-M3 MCU with Integrated Power Management Hardware Reference Revision 1.0" and "ADuCM3027/ADuCM3029 User Guide" that there are two similar features: Signatures and User Code CRC.

I couldn't undestand if both are the same feature or not, could someone explain it?

I couldn't undestand if the "User Code CRC" is enable as default or if I need to enable it. I'm using Crosscore IDE and I couldn't find where to configure the linker as is recommended to do in IAR IDE. Is it possible to configure using the Crosscore IDE? If not, there is another way to use this feature?

Thank you!

Matheus Nogueira

  • 0
    •  Analog Employees 
    on Mar 23, 2021 9:44 AM

    Hi,

    CRC Signature (checksum)  - any contiguous set of user space flash pages could have a CRC signature appended at the most significant address

    User code CRC refers to the computed CRC using all the information from the flash memory including the Page 0. This is stored at the end of the Page N (total Page) of your application.

    Page 0 contains a “security header” which includes metadata to define a range of pages for which checksum must be verified before executing the user code. The bootloader reads this metadata from page 0 and performs the required check by executing a “signature check” in the flash controller before executing the user code.

    More details on this was discussed on this user guide (https://www.analog.com/media/en/technical-documentation/user-guides/UG-1160.pdf)

    See the Configuring Security Options (Table 5).

    I couldn't undestand if the "User Code CRC" is enable as default or if I need to enable it. I'm using Crosscore IDE and I couldn't find where to configure the linker as is recommended to do in IAR IDE. Is it possible to configure using the Crosscore IDE? If not, there is another way to use this feature?

    I'm not sure if you are referring to "CRC check" of the kernel. I'm not sure if the "CRC Check" is enabled by default but you can check it using the memory browser. to disable the CRC check by programming 0xFFFFFFFF to the expected CRC location.

    of the IDE, the address depends on your application code (computation of the address of the user code crc was also discussed Page 18 of the above user guide.

    The page 0 configurations was on system_ADuCM3029.c file "SECURITY_OPTIOS"

    Regards,

    Jeric