📄 sbc.lnk.bak
字号:
/* For demonstration purposes, the rom section will actually use the upper
256K of ram, assuming ram is 1MB. When loading the code into flash,
the address of the rom section can simply be changed to the flash address */
MEMORY
{
ram: org = 0x10000, len = 0xf0000
/*rom: org = 0x10000000, len = 0x8000*/
rom: org = 0x180000, len = 0x80000
dram: org = 0x250000,len = 0x80000
}
SECTIONS
{
/* The first group contains code and constant data */
GROUP : {
/* First take all code from all objects and libraries */
.text (TEXT) : {
*(.sdata2) *(.text) *(.rodata) *(.rdata) *(.init) *(.fini) *(.eini)
. = (.+15) & ~15;
}
/* Next take all small CONST data */
.sdata2 (TEXT) : {}
} > rom
/* The third group will allocate space for the initialized data
* (.data/.sdata) and the unititialized data (.bss/.sbss) in the
"ram" section. */
GROUP : {
.data (DATA) LOAD(ADDR(.sdata2)+SIZEOF(.sdata2)) : {}
/* .sdata contains small address data */
.sdata (DATA) LOAD(ADDR(.sdata2)+SIZEOF(.sdata2)+SIZEOF(.data)) : {}
/* This will allocate the the .bss symbols */
.sbss (BSS) : {}
.bss (BSS) : {}
/* Any space left over will be used as a heap */
} >ram
/* The second group contains code */
GROUP : {
.rtext (TEXT) LOAD(ADDR(.sdata2)+SIZEOF(.sdata2)+SIZEOF(.data)+SIZEOF(.sdata)) : {}
.rinit (DATA) LOAD(ADDR(.sdata2)+SIZEOF(.sdata2)+SIZEOF(.data)+SIZEOF(.sdata)+SIZEOF(.rtext)) : {}
/* .rtext (TEXT) : {}
.rinit (DATA) : {}
*/ } > dram
}
/* Definitions of identifiers used by sbrk.c, init.c and the different
* crt0.s files. Their purpose is to control initialization and memory
* memory allocation.
*
* __HEAP_START : Used by sbrk.c. Start of memory used by malloc() etc.
* __HEAP_END : Used by sbrk.c. End of heap memory
* __SP_INIT : Used by crt0.s. Initial address of stack pointer
* __SP_END : Used by sbrk.c. Only used when stack probing
* __DATA_ROM : Used by init.c. Address of initialized data in ROM
* __DATA_RAM : Used by init.c. Address of initialized data in RAM
* __DATA_END : Used by init.c. End of allocated initialized data
* __BSS_START : Used by init.c. Start of uninitialized data
* __BSS_END : Used by init.c. End of data to be cleared
* __RTEXT_ROM : Used by init.c. Address of RAM reallocated code in ROM
* __RTEXT_START: Used by init.c. Start of RAM reallocated code
* __RTEXT_END : Used by init.c. End of RAM reallocated code
* ---------------------------------------------------------------------- */
/* 0x600 = Sys_Stack(1K) + TMD_HISR_Stack(512)
0x200000 = 2M for Sys_Pool */
__HEAP_START = ADDR(.bss)+SIZEOF(.bss)+0x200000+0x600;
__SP_INIT = ADDR(ram)+SIZEOF(ram);
__HEAP_END = __SP_INIT-0x800;
/*__HEAP_END = __SP_INIT-0x10000; */
__SP_END = __HEAP_END;
__DATA_RAM = ADDR(.data);
__DATA_ROM = ADDR(.sdata2)+SIZEOF(.sdata2);
__DATA_END = ADDR(.sdata)+SIZEOF(.sdata);
__BSS_START = ADDR(.sbss);
__BSS_END = ADDR(.bss)+SIZEOF(.bss);
STKTOP = ADDR(.bss)+SIZEOF(.bss)+0x1000;
__RTEXT_ROM = ADDR(.sdata2)+SIZEOF(.sdata2)+SIZEOF(.data)+SIZEOF(.sdata);
__RTEXT_START = ADDR(.rtext);
__RTEXT_END = ADDR(.rtext)+SIZEOF(.rtext)+SIZEOF(.rinit);
/* Some targets use an extra underscore in front of identifiers
* ---------------------------------------------------------------------- */
___HEAP_START = __HEAP_START;
___HEAP_END = __HEAP_END;
___SP_INIT = __SP_INIT;
___SP_END = __SP_END;
___DATA_ROM = __DATA_ROM;
___DATA_RAM = __DATA_RAM;
___DATA_END = __DATA_END;
___BSS_START = __BSS_START;
___BSS_END = __BSS_END;
___RTEXT_ROM = __RTEXT_ROM;
___RTEXT_START = __RTEXT_START;
___RTEXT_END = __RTEXT_END;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -