Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
59
Добавлен:
14.04.2015
Размер:
2.03 Mб
Скачать

Keil Software — A51/AX51/A251 Macro Assembler and Utilities

277

 

 

Philips 80C51MX

 

The Philips 80C51MX has a linear 16MB address space that includes the

9

 

standard 8051 memory areas DATA/IDATA, CODE, and XDATA. In addition

 

both the external data space and the program space can be up to 8 MB. The

 

 

 

“80C51MX Memory Layout” is shown on page 33. The LX51 linker/locater is

 

 

 

used for the Philips 80C51MX microcontroller family. The following example

 

 

 

shows assumes the following memory areas.

 

 

 

 

 

 

 

 

 

Memory Type

Address Range

Used by

 

 

 

ON-CHIP RAM

7F:0000H .. 7F:03FFH

registers, bits, variables.

 

 

 

RAM

00:0000H .. 01:FFFFH

EDATA space for variables.

 

 

 

ROM

80:0000H .. 83:FFFFH

program code and constant area.

 

 

 

To specify this memory layout LX51 should be invoked with the following

 

 

 

CLASSES directive.

 

 

 

 

 

 

 

 

 

LX51 MYPROG.OBJ CLASSES (HDATA

(0 – 0x1FFFF),

 

 

 

 

EDATA

(0x7F0000 – 0x7F03FF),

 

 

 

 

ECODE

(0x800000 – 0x83FFFF),

 

 

 

 

HCONST

(0x800000 – 0x83FFFF))

 

 

NOTE

You need not to define the address range for the memory classes DATA, IDATA, BIT, CODE, CONST, and XDATA since the LX51 default already covers the correct physical address ranges for these memory classes.

In the AX51 assembler it is possible to use the ECODE class and therefore the complete 8MB code address space for program code. However, the CX51 compiler uses code banks to allocate parts of your program into the extended program memory. Therefore you must use same technique as described above under “Classic 8051 with Code Banking” to locate parts of your program into the ECODE space. A command line example will look as follows:

LX51 BANK0 {A.OBJ}, BANK1 {B.OBJ}, BANK2 {C.OBJ}, BANK3 {D.OBJ} CLASSES (HDATA (0 – 0x1FFFF), EDATA (0x7F0000 – 0x7F03FF),

ECODE (0x800000 – 0x83FFFF), HCONST (0x800000 – 0x83FFFF))

278 Chapter 9. Linker/Locator

 

 

Intel/Atmel WM 251

 

9

 

 

The Intel/Atmel WM 251 has like the Philips 80C51MX a linear 16MB address

 

space that includes all the memory classes. The “251 Memory Layout” is shown

 

 

on page 35. The following examples show you the invocation of the L251

 

 

linker/locater that is used for the Intel/Atmel WM 251 microcontroller family.

 

 

Example 1: The following example assumes the following memory areas.

 

 

 

 

 

 

 

Memory Type

Address Range

Used by

 

 

ON-CHIP RAM

00:0000H .. 00:041FH

registers, bits, variables.

 

 

RAM

00:8000H .. 00:FFFFH

EDATA space for variables.

 

 

ROM

FF:0000H .. FF:7FFFH

program code and constant area.

To specify this memory layout L251 should be invoked with the following

CLASSES directive.

L251 MYPROG.OBJ CLASSES (EDATA (0 – 0x41F, 0x8000 – 0xFFFF),

CODE (0xFF0000 – 0xFF7FFF),

CONST (0xFF0000 – 0xFF7FFF))

NOTES

You need not to define the address range for the memory classes DATA, IDATA, BIT and EBIT since the L251 default already covers the correct physical address ranges for these memory classes.

This example assumes that the memory classes XDATA, HDATA, HCONST,

HCODE, and NCONST are not used in your application.

Keil Software — A51/AX51/A251 Macro Assembler and Utilities

279

 

 

Example 2: In addition to the example above, the next system contains a third RAM for the memory class XDATA. In addition the ROM space is increased.

 

 

 

9

Memory Type

Address Range

Used by

ON-CHIP RAM

00:0000H .. 00:041FH

registers, bits, variables.

 

ROM

00:0420H .. 00:7FFFH

NCONST space.

 

RAM

00:8000H .. 01:7FFFH

EDATA/HDATA space for variables.

 

ROM

FE:0000H .. FF:FFFFH

program code and constant area.

 

To specify this memory layout L251 should be invoked with the following CLASSES directive.

L251 MYPROG.OBJ CLASSES (EDATA (0 – 0x41F, 0x8000 – 0xFFFF),

NCONST (0x420 – 0x7FFF),

HDATA (0x8000-0x1FFFF),

HCONST (0xFE0000 – 0xFFFFFF),

ECODE (0xFE0000 – 0xFFFFFF))

NOTE

You need not to define the address range for the memory classes DATA, IDATA, BIT, EBIT, CODE, CONST, and XDATA since the L251 default already covers the correct physical address ranges for these memory classes.

Соседние файлы в папке HLP