ARM Technical Support Knowledge Articles

XC800: 'Use multiple DPTR registers' may cause runtime errors

Applies to: C51 C Compiler

Answer


Information in this knowledgebase article applies to:


SYMPTOM

You may experience runtime problems when the uVision option Use multiple DPTR registers in the dialog Options for Target — Target is selected for an Infineon XC8xx/TLE98xx device. This only happens when you also use extra register banks (directive using) in your interrupt service routines.

CAUSE

The uVision device database contained the option MOD517DP for all these devices. This directive tells the compiler to use up to 8 DPTR depending on the register bank selection. Since XC8xx/TLE98xx devices only have 2 DPTR, the DPTR content may get corrupted and xdata variables may show wrong values.

RESOLUTION

Do not select the option Use multiple DPTR registers in the dialog Options for Target — Target. If you want to use dual DPTR to speed-up xdata memory compare and copy functions, please specify the option MODP2 manually in the dialog Options for Target — C51 — Misc Controls.

STATUS

This will be fixed in all C51 versions later than 9.50a. If a project was created with a C51 version 9.50a or before, the device needs to be re-selected in the dialog Options for Target — Device to take over the new options.

MORE INFORMATION

SEE ALSO

ATTACHED FILES

Request the files attached to this knowledgebase article.

Article last edited on: 2012-08-20 08:21:29

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