[216] QSPI: Race condition occurs in XIP

This anomaly applies to IC Rev. Engineering C, build codes CKAA-CA0, QIAA-CA0.

It was inherited from the previous IC revision Engineering B.

Symptoms

Data read from the XIP area is incorrect.

Conditions

Code that is executing from internal flash memory or RAM reads data located in the XIP region. The read performs two consecutive LDR instructions from XIP addresses where the result of the first LDR instruction is used as the address of the second LDR. This occurs, for example, when dereferencing a pointer located in the XIP addresses.

Consequences

Data read from the XIP area is incorrect.

Workaround

To avoid the race condition, perform one of the following:
  • Copy the read-only data into internal RAM before accessing it using the memcpy() function.
  • Place the read-only data in internal flash memory in the linker script at compile time.