ARM Technical Support Knowledge Articles

CHECKING FOR CORTEX-M3 LDRD ERRATA 602117

Applies to: ARM Development Tools

Answer


Information in this support solution applies to:


Question

The Cortex-M3 CPU Core has a problem when executing LDRD with the base register in the list of the form LDRD Ra, Rb, [Ra, #imm]. The instruction may not complete after the load of the first destination register when an interrupt occurs during execution of the instruction.

Is this a serious problem that I need to be concerned with? Are the instructions actually generated by the RealView Compiler?

Answer

Yes, the instructions are generated by the RealView Compiler Version V3.1.0.940 or before.  RealView Compiler Versions 3.1.0.941 and later no longer generate this sequence. RealView Compiler update(V3.1.0.942) is part of RealView MDK V3.30 and higher.

It actually depends on the device whether the instruction may cause problems or not. For most devices the instruction execution is correct when code is fetched from on-chip Flash ROM. Check with the silicon vendor for clarification of the errata.

For existing code you may check the image with the attached fromelf and scanning tool for the erroneous instruction. If the erroneous code is detected in the text file you will see the warning:

WARNING: Found 1 instances of LDRD code which are
susceptible to the Cortex-M3 LDRD erratum (erratum #602117)

To automate the check, apply the following changes to your µVision project:

With these changes the check is performed every time you build your target application.

MORE INFORMATION

ATTACHED FILES

Request the files attached to this knowledgebase article.

Article last edited on: 2009-02-09 08:15:49

Rate this article

[Bad]
|
|
[Good]
Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential