Keil Logo


Information in this article applies to:

  • C51 Version 7 or higher


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: Keil\C51\EXAMPLES\FarMemory\16MB RAM on ADuC812.

I have enabled under Project — Options — Device:

  • use LX51 instead of BL51
  • use AX51 instead of A51

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

  • Use On-chip ROM (0x0-0xF7FF)
  • Use On-chip XRAM (0x0-0x7FF)

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)



Last Reviewed: Monday, October 23, 2006

Did this article provide the answer you needed?
Not Sure
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.