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

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

273

 

 

Locating Programs to Physical Memory

This section describes with examples how you locate your application into the

9

physical memory space for the different x51 variants. Refer to “Segment and

Memory Location Controls” on page 331 for a detailed description of the linker/locater controls used in the examples below.

The linker/locator determines the physical memory range for relocatable segments based on the memory class that is assigned to the segment. Refer to “Memory Classes and Memory Layout” on page 27 for more information. However, it is also possible to specify a fixed address for a segment using linker/locater controls.

Classic 8051

The classic 8051 provides three different memory areas: on-chip RAM that covers the DATA, BIT and IDATA memory, XDATA memory, and CODE memory. The “Classic 8051 Memory Layout” is shown on page 29.

274 Chapter 9. Linker/Locator

 

 

Classic 8051 without Code Banking

9

 

The following examples illustrate how to setup the linker/locater. For the BL51

 

linker/locater the physical memory is defined with the RAMSIZE, XDATA and

 

 

CODE control. For the LX51 linker/locater the CLASSES control is used to

 

 

specify the available physical memory.

 

 

 

The following example assumes the following memory areas.

 

 

 

 

 

 

 

Memory Type

Address Range

Used by

 

 

ON-CHIP RAM

D:0 – D:0x7F (128 Bytes)

registers, bits, variables, etc.

 

 

XDATA RAM

X:0 – X:0x7FFF, X:0xF800 – X:0xFFFF

space for variables.

 

 

CODE ROM

C:0 – C:0x7FFF

program code and constant area.

To specify this memory layout BL51 should be invoked with as follows:

BL51 PROG.OBJ XDATA (0-0x7FFF, 0xF800-0xFFFF) CODE (0-0x7FFF) RAMSIZE(128)

You may also you the LX51 linker/locater. The CLASSES directive should have the following settings:

LX51 PROG.OBJ CLASSES (IDATA (D:0-D:0x7F),

XDATA (X:0-X:0x7FFF, X:0xF800-X:0xFFFF),

CODE (C:0-C:0x7FFF))

NOTE

You need not to define the address range for the memory classes DATA and BIT since the LX51 default setting already covers the correct physical address range.

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

275

 

 

Classic 8051 with Code Banking

The following example uses classic 8051 with a code banking hardware. This

9

hardware has the following memory resources:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Memory Type

 

Address Range

 

Used by

 

 

 

 

ON-CHIP RAM

 

I:0 – I:0xFF (256 Bytes)

 

registers, bits, variables, etc.

 

 

 

 

XDATA RAM

 

X:0 – X:0xEFFF

 

space for variables.

 

 

 

 

CODE ROM

 

C:0 – C:0x7FFF (common area)

 

program code and constant area.

 

 

 

 

 

 

B0:0x8000 – B3:0xFFFF (four banks)

 

 

 

 

 

Parts of your program will be located into banks using BANKx in the inputlist portion of the Lx51 linker/locater command-line. Refer to “Bank Switching” on page 293 for more information. In addition you must specify the size of the common area and the other memory resources of your hardware. For this memory layout, the BL51 linker/locater should be invoked with as follows:

BL51 BANK0 {A.OBJ}, BANK1 {B.OBJ}, BANK2 {C.OBJ}, BANK3 {D.OBJ}

XDATA (0-0xEFFF) BANKAREA (0x8000 – 0xFFFF) RAMSIZE(256)

The LX51 linker/locater needs to be invoked as follows:

LX51 BANK0 {A.OBJ}, BANK1 {B.OBJ}, BANK2 {C.OBJ}, BANK3 {D.OBJ}

CLASSES (IDATA (I:0-I:0xFF), XDATA (X:0-X:0xEFFF),

CODE (C:0-C:0xFFFF)) BANKAREA (0x8000-0xFFFF)

276 Chapter 9. Linker/Locator

 

 

Extended 8051 Variants

 

9

 

 

Some extended 8051 variants expand the external data and program memory to

 

up to 16MB. The additional memory space is addressed with the memory

 

 

classes HDATA and HCONST. The “Extended 8051 Memory Layout” is shown

 

 

on page 31. Only the LX51 linker/locater supports this expanded memory space.

 

 

The following example shows assumes the following memory areas.

 

 

 

 

 

 

 

Memory Type

Address Range

Used by

 

 

ON-CHIP RAM

D:0 – D:0xFF (256 Bytes)

registers, bits, variables.

 

 

XDATA RAM

X:0 – X:0x1FFFF (128 KB)

space for variables.

 

 

CODE ROM

C:0 – C:0xFFFFF (1 MB)

program code and constant area.

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

CLASSES directive.

LX51 MYPROG.OBJ CLASSES (HDATA (X:0 – X:0x1FFFF),

HCONST (C:0 – C:0xFFFFF))

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.

The memory classes HDATA and HCONST are used for constants or variables only. Program code is located into the expanded program memory with the same code banking mechanism as described above under “Classic 8051 with Code Banking”. A command line example that locates also program code into the expanded program memory will look as follows:

LX51 BANK0 {A.OBJ}, BANK1 {B.OBJ}, BANK2 {C.OBJ}, BANK3 {D.OBJ}

CLASSES (IDATA (I:0-I:0xFF), XDATA (X:0-X:0xEFFF),

HDATA (X:0-X:0x1FFFF), HCONST (C:0-C:0xFFFFF)

CODE (C:0-C:0xFFFF)) BANKAREA (0x8000-0xFFFF)

There are several Keil Application Notes available that show how to create programs for extended 8051 devices. Check www.keil.com or the Keil development tools CD-ROM for Keil Application Notes that explain how to setup the tools for extended 8051 devices.

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