wang congxian

what these lines mean in .lcf file

Discussion created by wang congxian on May 16, 2009
Latest reply on Jul 31, 2009 by Ed Proulx
Here is my .lcf file and someting puzzling me...

# Sample Linker Command File for CodeWarrior for ColdFire


# Memory ranges

MEMORY {
vectorrom (RX) : ORIGIN = 0x00000000, LENGTH = 0x00000420
code (RX) : ORIGIN = 0x00000500, LENGTH = 0x0001Fae0

my (RX) : ORIGIN = 0x0001fae0, LENGTH = 0x00000100

vectorram (RWX) : ORIGIN = 0x20000000, LENGTH = 0x00000400
userram (RWX) : ORIGIN = 0x20000400, LENGTH = 0x00007c00
}

SECTIONS {

# Heap and Stack sizes definition
___heap_size = 0x1000;
___stack_size = 0x1000;



# MCF5213 Derivative Memory map definitions from linker command files:
# __IPSBAR, __RAMBAR, __RAMBAR_SIZE, __FLASHBAR, __FLASHBAR_SIZE linker
# symbols must be defined in the linker command file.

# Memory Mapped Registers (IPSBAR= 0x40000000)
___IPSBAR = 0x40000000;

# 32 Kbytes Internal SRAM
___RAMBAR = 0x20000000;
___RAMBAR_SIZE = 0x00008000;

# 256 KByte Internal Flash Memory
___FLASHBAR = 0x00000000;
___FLASHBAR_SIZE = 0x00040000;

.userram : {} > userram
.code : {} > code
.vectorram : {} > vectorram
.vectorrom : {} > vectorrom


.absd:
{

*(.MacAddr)
= ALIGN (0x4);
} > my
.vectors
{
mcf5xxx_vectors.s (.text)
. = ALIGN (0x4);
} >> vectorrom

.text :
{
*(.text)
. = ALIGN (0x4);


*(.rodata)
. = ALIGN (0x4);


___ROM_AT = .;
___DATA_ROM = .;
} >> code
.data : AT(___ROM_AT)
{
___DATA_RAM = .;
. = ALIGN(0x4);
*(.exception)
. = ALIGN(0x4);
__exception_table_start__ = .;
EXCEPTION
__exception_table_end__ = .;

___sinit__ = .;
STATICINIT
__START_DATA = .;

*(.data)
. = ALIGN (0x4);
__END_DATA = .;

__START_SDATA = .;
*(.sdata)
. = ALIGN (0x4);
__END_SDATA = .;

___DATA_END = .;
__SDA_BASE = .;
. = ALIGN (0x4);
} >> userram

.bss :
{
___BSS_START = .;
__START_SBSS = .;
*(.sbss)
. = ALIGN (0x4);
*(SCOMMON)
__END_SBSS = .;

__START_BSS = .;
*(.bss)
. = ALIGN (0x4);
*(COMMON)
__END_BSS = .;
___BSS_END = .;

. = ALIGN(0x4);
} >> userram

.custom :
{
___HEAP_START = .;
___heap_addr = ___HEAP_START;
___HEAP_END = ___HEAP_START + ___heap_size;
___SP_END = ___HEAP_END;
___SP_INIT = ___SP_END + ___stack_size;

. = ALIGN (0x4);
} >> userram

___VECTOR_RAM = ADDR(.vectorram);

__SP_INIT = ___SP_INIT;

_romp_at = ___ROM_AT + SIZEOF(.data);
.romp : AT(_romp_at)
{
__S_romp = _romp_at;
WRITEW(___ROM_AT);
WRITEW(ADDR(.data));
WRITEW(SIZEOF(.data));
WRITEW(0);
WRITEW(0);
WRITEW(0);
}

}


what these lines mean?
.userram : {} > userram
.code : {} > code
.vectorram : {} > vectorram
.vectorrom : {} > vectorrom


Can I delete them?
I also define a section myself and not use command like that and it is ok!
why? What is the different between my section and others?
Can anyone explain it?

doom

Outcomes