ARM Technical Support Knowledge Articles


Applies to: LX51 Linker/Locator


Information in this article applies to:


I'm using an ADuC836 microcontroller from Analog Devices that supports 16MB memory. We use the memory space 0x100000-0xFFFFFF. I have the PK51 Professional Developer's Kit and have examined the example in the folder: KeilC51EXAMPLESFarMemory16MB RAM on ADuC812.

I have enabled under Project — Options — Device:

Since my far memory is in the address range 0x100000-0xFFFFFF, I have entered under Options for Target — LX51 Locate — User classes:

HDATA (X:0x010000-X:0xFFFFFF)

When I enable under Options for Target — Target

then in LX51 Locate tab the memory classes are entered as:

XDATA (X:0x0-X:0x7FF), HDATA (X:0x0-X:0x7FF), CODE (C:0x0-C:0xF7FF),
ECODE (C:0x0-C:0xF7FF), HCONST (C:0x0-C:0xF7FF)

The HDATA (X:0x0-X:0x7FF) range conflicts with my setting. How can I solve this?


The µVision memory wizard enables all available xdata memory as HDATA memory. However, you can easily change this when you perform the steps below in the Options for Target — LX51 Locate dialog page:

  1. Copy the memory classes listed under C classes to the User classes field.
  2. Disable Use Memory Layout from Target Dialog
  3. Modify the User classes field so that it matches your wishes. For example:
    XDATA (X:0x0-X:0x7FF), CODE (C:0x0-C:0xF7FF), ECODE (C:0x0-C:0xF7FF),
    HCONST (C:0x0-C:0xF7FF). HDATA (X:0x020000-X:0x02FFFF)



Article last edited on: 2006-10-23 16:36:18

Rate this article

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